yumでパッケージをインストールした後(複数のリポジトリが設定されている場合)、どのリポジトリからインストールされているかを見つけるにはどうすればよいですか?
実行yum info package-name
(またはyum list package-name
)した場合、パッケージが「インストール」されていることがわかります。
rpm -qa|grep NAME
ことができますyum list installed|grep NAME
。
yumでパッケージをインストールした後(複数のリポジトリが設定されている場合)、どのリポジトリからインストールされているかを見つけるにはどうすればよいですか?
実行yum info package-name
(またはyum list package-name
)した場合、パッケージが「インストール」されていることがわかります。
rpm -qa|grep NAME
ことができますyum list installed|grep NAME
。
回答:
yum-utilsがインストールされていると、repoqueryは検索する情報を提供します(ここでは「epel」がリポジトリです)。
└─[$]> repoquery -i cherokee
Name : cherokee
Version : 0.99.49
Release : 1.el5
Architecture: i386
Size : 8495964
Packager : Fedora Project
Group : Applications/Internet
URL : http://www.cherokee-project.com/
Repository : epel
Summary : Flexible and Fast Webserver
Description :
Cherokee is a very fast, flexible and easy to configure Web Server. It supports
the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, TLS and SSL
encrypted connections, Virtual hosts, Authentication, on the fly encoding,
Apache compatible log files, and much more.
yum info package_name
すると、yumと同じ順序でリポジトリをクエリしないようです。
yum info package_name
明らかにrepoqueryより多くの結果を返します。これが、スタック交換が投票をロックしない理由です。
repoquery -i $pkg
は$pkg
、$pkg
インストール元のリポジトリではなく、a が利用可能なリポジトリを提供します。私はそのコマンドを実行しrpm -qi $pkg
、異なるバージョン番号を取得しました。rpm
のバージョン番号よりも前のバージョン番号になりましたrepoquery
。
--use-mirror
)でインストールされている可能性があります。常に正しい答えを得ることができるとは思いません。
yumのバージョンは何ですか?
現在のバージョンでは、インストールされているパッケージが利用可能な最新のものと同じバージョンである場合、インストール元のリポジトリが表示されます。
$ yum info irssi
Installed Packages
Name : irssi
Arch : i586
Version : 0.8.14
Release : 1.fc11
Size : 2.3 M
Repo : installed
From repo : updates
Summary : Modular text mode IRC client with Perl scripting
URL : http://irssi.org/
License : GPLv2+
Description: Irssi is a modular IRC client with Perl scripting. Only text-mode
: frontend is currently supported. The GTK/GNOME frontend is no
: longer being maintained.
$ yum --version
3.2.23
利用可能な新しいパッケージがある場合は、個別に表示され、新しいバージョンには利用可能なリポジトリが表示されます。
他のすべてが失敗した場合は、yumdbを手動で検査できます。にあり、/var/lib/yum/yumdb
インストールされているすべてのパッケージに関する詳細情報が含まれています。特に興味があるでしょうfrom_repo
。たとえば、bind-utils
パッケージの場合:
# for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i`; done
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_data: 39f7840f93d3d76825a9e8da79cfe0366f7fad68f018a273477aee62cccfa3f4
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_type: sha256
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/command_line: install bind-utils
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo: updates
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_revision: 1397654451
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_timestamp: 1397654759
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/installed_by: 0
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/reason: user
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/releasever: 6
必要な情報だけを取得するには:
# cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo
updates
それ以降のバージョンでは、さらに多くのデータが提供されます。たとえば、EL 7では、パッケージのダウンロード元の正確なミラーとURLがここに保存されます。
for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i` | grep -oP 'from_repo:\ \K.*'; done
、上記の例では次のような結果を返します:updates
-より読みやすく!
grep
何もする必要はなく、ループをドロップすることもできます。cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo
必要なのは非常に簡単です。
リポジトリepelからインストールされたものを確認するには:(Centos 5.5で動作するはずです)、epelという名前のリポジトリがない場合、インストールされたすべてのものを吐き出します。
repoquery --repoid = epel -a | xargs yumリストがインストールされています
パッケージが最近インストールされた場合、/ var / cache / yumを見ることができます。
そのディレクトリ内には、各リポジトリのディレクトリがあり、その中にパッケージディレクトリがあります。だから、あなたは次のようなことをするでしょう:
find /var/cache/yum -name [package-name]*
ただし、キャッシュは/etc/yum.confファイルで有効にする必要があります。
cachedir=/var/cache/yum
keepcache=1
yum clean [packages|all]
キャッシュディレクトリをクリアすることに注意してください。
キャッシュディレクトリが空の場合、別の方法があります。読み込まれる情報yum info [package]
は、/ var / cache / yum / [repo] /primary.xml.gzから取得されます
次のように入力して、ファイルを調べることができます。
gunzip -d -c /var/cache/yum/[repo]/primary.xml.gz | grep '<name>[package]'
ただし、yum info [package]
「theotherreceive」で示される「From repo:」が表示されないマシンでは、primary.xmlファイルにないため、その情報を取得する方法はありません。したがって、パッケージが2つ以上のprimary.xmlファイルにある場合、システムのリポジトリの優先度を決定する必要があります。
素晴らしい解決策ではありませんが、利用可能なyumリストは、各パッケージの最新バージョンが利用できる場所を示していることがわかりました。例えば:
yumリストが利用可能| grep gstreamer
PackageKit-gstreamer-plugin.x86_64 0.3.16-1.fc10 updates
bluez-gstreamer.i386 4.30-2.fc10アップデート
gstreamer.i386 0.10.21-2.fc10のFedora
のgstreamer-devel.i386 0.10.21-2.fc10のFedora
のgstreamer-devel.x86_64 0.10.21-2.fc10 Fedoraの
gstreamer- plugins-bad-devel.i386 0.10.9-1.fc10 rpmfusion-free
gstreamer-plugins-bad-devel.x86_64 0.10.9-1.fc10 rpmfusion-free
そのため、パッケージで利用可能なyumリストを作成し、yum list installedを使用してインストール済みバージョンを比較し、バージョンが一致する場合にどのリポジトリからのものであるかを把握することができます。
「yum info」に冗長フラグを追加できます。
yum info -v <package_name>
インストールリポジトリは「From repo」出力の下にあります。
余分なツールをインストールしたり、不要な情報を取得したり出力したりすることなく、最も簡単で最も簡単なアプローチは次のとおりです。
yum list installed [package name]
3番目の列は、パッケージのインストール元のリポジトリのIDを提供します。
これは、grepを使用した元の質問のコメントで言及されましたが、必ずしも必要ではありません。yum
フィルターに直接パッケージ名を渡すことができます。
上記のコマンドはどれも役に立たなかった。これは私がしなければならなかったことです。
yum provides "*compat-libstdc*"
良いリファレンスはこちらです。
https://access.redhat.com/sites/default/files/attachments/rh_yum_cheatsheet_1214_jcs_print-1.pdf