在按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
,以查找回购的转速是从。
Answers:
安装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
安装的仓库。我执行了该命令,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
就是您所需要的。
要查看从repo epel安装的内容:(应该在Centos 5.5下工作)请注意,如果没有名为epel的repo,它将吐出所有已安装的东西。
repoquery --repoid = epel -a | xargs yum列表已安装
如果该软件包是最近安装的,则可以在/ var / cache / yum中查找。
在该目录中,每个存储库都有一个目录,在该目录中有一个packages目录。因此,您将执行以下操作:
find /var/cache/yum -name [package-name]*
但是,必须在/etc/yum.conf文件中启用缓存:
cachedir=/var/cache/yum
keepcache=1
请注意,a 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文件中,因此将无法检索该信息。因此,如果程序包位于两个或多个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 rpm无融合
gstreamer-plugins-bad-devel.x86_64 0.10.9-1.fc10 rpm无融合
因此,您可以在软件包中创建一个可用的yum列表,然后使用已安装的yum list来比较安装的版本,并很好地了解版本匹配时来自哪个回购。
您可以将详细标志添加到“ yum info”:
yum info -v <package_name>
安装库将在“从仓库”输出中。
以上命令都不适合我。这就是我要做的。
yum provides "*compat-libstdc*"
一个很好的参考在这里。
https://access.redhat.com/sites/default/files/attachments/rh_yum_cheatsheet_1214_jcs_print-1.pdf