From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 17 Feb 2016 12:46:12 +0300 (MSK) From: Ivan Zakharyaschev To: ALT Linux Team development discussions In-Reply-To: <20160217090432.GA2686@dad.imath.kiev.ua> Message-ID: References: <20160217090432.GA2686@dad.imath.kiev.ua> User-Agent: Alpine 2.20 (LFD 67 2015-01-07) MIME-Version: 1.0 Content-Type: multipart/mixed; BOUNDARY="1807885841-1537272322-1455702372=:21858" Subject: [devel] querying alternatives providers; was: Re: re-writing GNU C; part1.4.1: .rpm produced X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Feb 2016 09:46:12 -0000 Archived-At: List-Archive: List-Post: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --1807885841-1537272322-1455702372=:21858 Content-Type: text/plain; charset=koi8-r; format=flowed Content-Transfer-Encoding: 8BIT On Wed, 17 Feb 2016, Igor Vlasenko wrote: > On Wed, Feb 17, 2016 at 11:19:24AM +0300, Ivan Zakharyaschev wrote: >> (BTW, не смог найти команду, которая бы показывала бы, какие есть >> установленные в системе альтернативы для определённого пути. Например: хочу >> знать, какие есть альтернативы для /usr/bin/x86_64-alt-linux-gcc . Только >> grep-ать /etc/alternatives/?) > > По базе repocop можно пробить (базу можно скачать с repocop.altlinux.org: > http://repocop.altlinux.org/pub/repocop/data/repocop-data-current.tar.gz ) > > $ sqlite3 .repocop/db/altlinux-alternatives.db > sqlite> select * from altlinux_alternatives where altalternative = '/usr/bin/gcc'; > gcc-common-1.4.20-alt1.x86_64|/etc/alternatives/packages.d/gcc-common|0|/usr/bin/gcc|/usr/bin/gcc_wrapper|40|1|0|0 Спасибо, полезно знать! Это такой глобальный запрос по всему Sisyphus получается, а не просто локальный в своей системе (про отсутствие команды для которого я удивлялся). Заметил, что подобную информацию можно и через APT получить. Заметил, что если пакет несёт альтернативу, то у него в provides есть этот путь с приоритетом в качестве версии: $ rpm -q gcc-common --provides /usr/bin/gcc = 40 gcc-common = 1.4.19-alt1 $ rpm -q gcc5 --provides gcc = 5.2.1 /usr/bin/gcc /usr/bin/x86_64-alt-linux-gcc = 511 /usr/bin/x86_64-alt-linux-gcc-ar = 511 /usr/bin/x86_64-alt-linux-gcc-nm = 511 /usr/bin/x86_64-alt-linux-gcc-ranlib = 511 /usr/bin/x86_64-alt-linux-gcov = 511 /usr/bin/x86_64-alt-linux-gcov-tool = 511 /usr/share/man/man1/gcc.1.bz2 = 511 /usr/share/man/man1/gcov.1.bz2 = 511 gcc5 = 5.2.1-alt1 $ Ну значит, можно по этим путям делать запросы к APT: apt> showpkg /usr/bin/gcc Package: /usr/bin/gcc Versions: Reverse Depends: libopencv2.4-examples,/usr/bin/gcc icfs,/usr/bin/gcc Dependencies: Provides: Reverse Provides: gcc5 5.3.1-alt1 gcc4.9 4.9.2-alt5 gcc4.8 4.8.2-alt5 gcc4.7 4.7.2-alt10 gcc4.6 4.6.3-alt11 gcc4.5 4.5.4-alt4 gcc4.4 4.4.7-alt4 gcc4.3 4.3.2-alt20 gcc4.1 4.1.2-alt11 gcc3.4 3.4.5-alt16 gcc-common 1.4.20-alt1 apt> showpkg /usr/bin/x86_64-alt-linux-gcc Package: /usr/bin/x86_64-alt-linux-gcc Versions: Reverse Depends: libginac-devel,/usr/bin/x86_64-alt-linux-gcc Dependencies: Provides: Reverse Provides: gcc5 5.3.1-alt1 gcc4.9 4.9.2-alt5 gcc4.8 4.8.2-alt5 gcc4.7 4.7.2-alt10 gcc4.6 4.6.3-alt11 gcc4.5 4.5.4-alt4 gcc4.4 4.4.7-alt4 gcc4.3 4.3.2-alt20 gcc4.1 4.1.2-alt11 gcc3.4 3.4.5-alt16 apt> Вот эта вот обнаружившаяся зависимость libginac-devel от можно сказать внутреннего /usr/bin/x86_64-alt-linux-gcc кажется не очень удачной (особенно для подмены gcc -- поэтому я думал передвигать как-то такие пути при пересборке с подменённым gcc, чтобы выявлять случаи прямого обращения.) -- Best regards, Ivan --1807885841-1537272322-1455702372=:21858--