Gentoo Linux查看已安装软件包
对于Gentoo Linux,需要一个名为Equery
的软件来查看已安装软件包的信息。
Equery
是一个用于简化常用 Portage
操作的工具。
此外,可以显示包依赖项、元数据和已安装文件。
如何安装:
Equery
是使用app-portage/gentoolkit
包安装的工具集的一部分:
root # emerge --ask app-portage/gentoolkit
有关安装equery
或其他工具的更多信息,请访问Gentoolkit文章。
如何使用:
介绍:
equery
是一个显示系统上已安装软件包有用信息的工具,equery
基于模块系统。
每个模块都有一个简写名称。
例如,运行equery l gcc
与运行equery list gcc
相同。
调用--help
选项(equery --help
)将输出全局选项并列出所有可用模块及其简写名称。
将模块名称添加到末尾(equery --help module
)将显示该特定模块的帮助信息。
执行man equery
还将提供所有可用模块和选项的详细说明以及一些有用的示例。
以下是适用于大多数模块的功能列表。
user $ equery --quiet list gcc sys-devel/gcc-4.3.2-r3 user $ equery --quiet list sys-devel/gcc sys-devel/gcc-4.3.2-r3 user $ equery --quiet list '>=sys-devel/gcc-4' sys-devel/gcc-4.3.2-r3
和emerge
一样,equery
不理解部分的包名称:
user $ equery check zilla !!! No package found matching zilla
与emerge
不同,equery
可以在类别或包名称中接受类似shell
的通配:
user $ equery check '*zilla*' - Checking www-client/mozilla-firefox-3.0.14 ... 90 out of 90 files passed user $ equery check 'www-c*/*' - Checking www-client/links-2.2 ... 30 out of 30 files passed - Checking www-client/mozilla-firefox-3.0.14 ... 90 out of 90 files passed
大多数equery
模块接受多个输入:
user $ equery hasuse sse sse2 - Searching for USE flag sse ... [IP-] [ ] media-libs/flac-1.2.1-r3 (0) [IP-] [ ] media-libs/speex-1.2_beta3_p2 (0) - Searching for USE flag sse2 ... [IP-] [ ] dev-libs/openssl-0.9.8k (0) [IP-] [ ] x11-libs/pixman-0.16.0 (0)
一些模块还允许完整的正则表达式:
user $ equery -q list --portage-tree --full-regex '[kr]?flickr.*' dev-dotnet/flickrnet-bin-2.2 dev-ruby/flickr-1.0.2-r1 dev-ruby/flickr-1.0.2-r2 dev-ruby/rflickr-20060201 media-gfx/kflickr-0.6 [...]
附注:
通配符支持取代了
equery
中许多旧的选项。例如,
要对某个集合中的所有包执行操作,请使用
'*'
(星号)。要对类别中的所有包执行操作,请使用
'category-name/*'
。警告:
在使用
shell
特殊字符时,例如星号或大于号、小于号等,不要忘记使用引号将其括起来。
本文档的下几节将简要介绍不同的equery
模块。
功能:
要查看 equery
的全部功能,只要不加任何参数运行即可:
user $ equery Gentoo package query tool Usage: equery [global-options] module-name [module-options] modules (short name) (b)elongs list what package FILES belong to (c)hanges list changelog entries for ATOM chec(k) verify checksums and timestamps for PKG (d)epends list all packages directly depending on ATOM dep(g)raph display a tree of all dependencies for PKG (f)iles list all files installed by PKG h(a)s list all packages for matching ENVIRONMENT data stored in /var/db/pkg (h)asuse list all packages that have USE flag ke(y)words display keywords for specified PKG (l)ist list package matching PKG (m)eta display metadata about PKG (s)ize display total size of all files owned by PKG (u)ses display USE flags for PKG (w)hich print full path to ebuild for PKG
命令别名(Aliases
)
使用 equery
的一个常见方法是创建命令别名(aliases
)。
当使用 bash
的时候这些别名(aliases
)可以放到 ~/.bashrc
文件中:
文件 ~/.bashrc
alias eqf='equery f' alias equ='equery u' alias eqh='equery h' alias eqa='equery a' alias eqb='equery b' alias eql='equery l' alias eqd='equery d' alias eqg='equery g' alias eqc='equery c' alias eqk='equery k' alias eqm='equery m' alias eqy='equery y' alias eqs='equery s' alias eqw='equery w'
查找文件来自哪个包:belongs
(b
)
user $ equery belongs -e /usr/bin/glxgears - Searching for /usr/bin/glxgears ... x11-apps/mesa-progs-7.5.1 (/usr/bin/glxgears)
belongs
可以使用-f
选项搜索与正则表达式匹配的文件。
-e
选项在找到匹配项后停止搜索,由于系统上的任何文件都不应归两个软件包所有,因此这是一个安全的操作。
也可以使用belongs
(b
)的简短版本。
例如,列出equery
所属的包:
user $ equery b equery - Searching for equery ... app-portage/gentoolkit-0.3.0.8-r2 (/usr/lib/python-exec/python2.7/equery) app-portage/gentoolkit-0.3.0.8-r2 (/usr/lib64/python3.3/site-packages/gentoolkit/test/equery) app-portage/gentoolkit-0.3.0.8-r2 (/usr/bin/equery -> ../lib/python-exec/python-exec2) app-portage/gentoolkit-0.3.0.8-r2 (/usr/lib64/python2.7/site-packages/gentoolkit/equery) app-portage/gentoolkit-0.3.0.8-r2 (/usr/lib/python-exec/python3.3/equery) app-portage/gentoolkit-0.3.0.8-r2 (/usr/lib64/python2.7/site-packages/gentoolkit/test/equery) app-portage/gentoolkit-0.3.0.8-r2 (/usr/lib64/python3.3/site-packages/gentoolkit/equery)
查看ChangeLog
条目:changes
(c
)
changes
允许用户查看指定版本或一个范围版本的包的ChangeLog
条目。
想象一下,在运行emerge --sync
之后,Portage
打印出一条消息说将要升级。
要查看更改了什么,可以使用此命令:
user $ equery changes portage *portage-2.1.6.13 (03 May 2009) 03 May 2009; Zac Medico <zmedico@gentoo.org> +portage-2.1.6.13.ebuild: 2.1.6.13 bump. This fixes bug #268398 (document econf automatic die) and bug #267104 (handle insufficient space interaction with userfetch). Bug #268228 tracks all bugs fixed since 2.1.6.11.
验证包的完整性:check
(k
)
有时检查包的完整性是有用的。
equery
可以通过验证MD5
值以及时间戳来检验一个软件包是否被破坏,替换或删除。
user $ equery check gentoolkit - Checking app-portage/gentoolkit-0.3.0_rc7 ... 71 out of 71 files passed
列出依赖该包的所有包:depends
(d
)
Ever wonder why a certain package has been installed on the system?
equery
can tell which packages list it as a dependency with depends
.
Include indirect dependencies with the -D
option.
有没有想过为什么系统上安装了某个软件包?
equery
使用depends
可以列出哪些包依赖这个包。
使用-D
选项显示间接依赖项。
user $ equery depends pygtk - Searching for pygtk ... app-admin/pessulus-2.24.0 (>=dev-python/pygtk-2.6.0) app-editors/gedit-2.24.3 (python ? >=dev-python/pygtk-2.12) dev-libs/libgweather-2.24.3 (python ? >=dev-python/pygtk-2) dev-python/gnome-python-base-2.22.3 (>=dev-python/pygtk-2.10.3) dev-python/gnome-python-desktop-base-2.24.1 (>=dev-python/pygtk-2.10.3) [...]
第二个例子列出了所有直接依赖于udev
的包:
user $ equery d udev sys-auth/consolekit-0.4.5_p20120320 (acl ? >=sys-fs/udev-146-r1) sys-fs/cryptsetup-1.4.1 (>=sys-fs/udev-124) (>=sys-fs/udev-182[static-libs]) (<=sys-fs/udev-171-r6) sys-fs/lvm2-2.02.88 (>=sys-fs/udev-151-r4) virtual/dev-manager-0 (sys-fs/udev) x11-libs/cairo-1.10.2-r2 (drm ? >=sys-fs/udev-136)
附注:
此输出将包括由
USE
标志控制的可选依赖项,即上面
(acl ? >=sys-fs/udev-146-r1)
中的acl
USE
,即使该
USE
标志未激活。如果
USE
标志处于活动状态,则包只是依赖项。
获取依赖图:depgraph
(g
)
depgraph
与depends
相反,将找到给定包依赖的所有ebuild
(而不是依赖于该包的ebuild)。
当找到依赖项时,递归搜索该包的依赖项。
使用--depth
选项控制树的深度。
user $ equery depgraph mozilla-firefox - Searching for mozilla-firefox ... - dependency graph for www-client/mozilla-firefox-2.0.0.19: `-- www-client/mozilla-firefox-2.0.0.19 `-- virtual/jre-1.6.0 (virtual/jre) [java] `-- virtual/jdk-1.6.0 (virtual/jdk-1.6.0*) `-- dev-java/icedtea6-bin (unable to resolve: package masked or removed) `-- dev-java/sun-jdk-1.6.0.15 `-- dev-java/java-sdk-docs-1.6.0.10 [doc] `-- app-arch/unzip-6.0-r1 `-- app-arch/bzip2-1.0.5-r1 [bzip2] `-- sys-libs/glibc-2.9_p20081201-r2 `-- sys-devel/gettext-0.17 [nls] `-- virtual/libiconv-0 (virtual/libiconv) [...]
注意如果设置了java
USE
,jre
是一个直接依赖项,jdk
是一个间接依赖项
列出包安装的文件:files
(f
)
equery
使用files
模块,可以列出ebuild
安装的所有文件。
尝试--tree
以获得易于阅读的目录布局。
使用--filter
查找指定某种类型的文件。
例如,要查找可执行文件的安装位置,请使用--filter=cmd
,或者要快速查找配置文件位置,请尝试使用--filter=conf
。
user $ equery files --tree gentoolkit * Searching for gentoolkit ... * Contents of app-portage/gentoolkit-0.3.0_rc7: /etc > /eclean + distfiles.exclude + packages.exclude > /env.d + 99gentoolkit-env > /revdep-rebuild + 99revdep-rebuild /usr > /bin + eclean + eclean-dist -> eclean + eclean-pkg -> eclean + epkginfo + equery + eread + euse + glsa-check + revdep-rebuild > /lib > /python2.6 > /site-packages > /gentoolkit + gentoolkit-0.3.0_rc7-py2.6.egg-info + __init__.py > /equery + __init__.py + belongs.py + changes.py + check.py + depends.py + depgraph.py + files.py [...]
另一个例子,列出media-sound/ncmpcpp
安装的所有文件:
user $ equery f ncmpcpp - Searching for ncmpcpp ... - Contents of media-sound/ncmpcpp-0.5.10: /usr /usr/bin /usr/bin/ncmpcpp /usr/share /usr/share/bash-completion /usr/share/bash-completion/ncmpcpp /usr/share/doc /usr/share/doc/ncmpcpp-0.5.10 /usr/share/doc/ncmpcpp-0.5.10/AUTHORS.bz2 /usr/share/doc/ncmpcpp-0.5.10/NEWS.bz2 /usr/share/doc/ncmpcpp-0.5.10/config.bz2 /usr/share/doc/ncmpcpp-0.5.10/keys.bz2 /usr/share/man /usr/share/man/man1 /usr/share/man/man1/ncmpcpp.1.bz2
其他模块和命令行参数的说明可以参看equery
man page
(man equery
)。
寻找具有特定USE
标志的包:hasuse
(h
)
hasuse
可用于查找具有给定USE
标志的包。
hasuse
不会指示标志是否已启用;
只是输出一个具有查询标志作为选项的ebuild
列表。
有关获取此类信息的更多提示,请参阅equery
手册页中的hasuse
示例部分。
user $ equery hasuse qt3 qt4 - Searching for USE flag qt3 ... [IP-] [ ] app-crypt/pinentry-0.7.5 (0) [IP-] [ ] net-dns/avahi-0.6.24-r2 (0) [IP-] [ ] net-wireless/wpa_supplicant-0.6.9 (0) - Searching for USE flag qt4 ... [IP-] [ ] net-dns/avahi-0.6.24-r2 (0) [IP-] [ ] net-wireless/wpa_supplicant-0.6.9 (0)
列出包: list
(l
)
list
是一个简单但功能强大的模块,用于列出Portage
树或overlay
中已安装的软件包。
user $ equery list '*' - Searching for * ... [IP-] [ ] app-admin/eselect-1.2.3 (0) [IP-] [ ] app-admin/eselect-ctags-1.10 (0) [IP-] [ ] app-admin/eselect-esd-20060719 (0) [IP-] [ ] app-admin/eselect-fontconfig-1.0 (0) [IP-] [ ] app-admin/eselect-opengl-1.0.8-r1 (0) [IP-] [ ] app-admin/eselect-python-20090824 (0) [IP-] [ ] app-admin/eselect-ruby-20081227 (0) [IP-] [ ] app-admin/eselect-vi-1.1.5 (0) [IP-] [ ] app-admin/perl-cleaner-1.05 (0) [IP-] [ ] app-admin/pessulus-2.24.0 (0) [IP-] [ ] app-admin/python-updater-0.7 (0) [IP-] [ ] app-admin/sudo-1.7.2_p1 (0) [...]
标准查询将通过给定包名称搜索已安装的包。
传入'*'
显示集合中的所有包。
在最左边的字段中,可以看到所有上述包是I
(nstalled)和P
(ortage)树。
未被屏蔽(第二个字段为空白),装在默认slot
(0)中。
使用本地选项在Portage
树和overlays
中查找包。
user $ equery list -po vim - Searching for vim ... [-P-] [ ] app-editors/vim-7.0.235 (0) [-P-] [ ~] app-editors/vim-7.0.243 (0) [-P-] [ ] app-editors/vim-7.1.123 (0) [-P-] [ ~] app-editors/vim-7.1.330 (0) [-P-] [ ] app-editors/vim-7.2 (0) [-P-] [ ~] app-editors/vim-7.2.108 (0) [IP-] [ ] app-editors/vim-7.2.182 (0) [-P-] [ ~] app-editors/vim-7.2.238 (0) [-P-] [ ~] app-editors/vim-7.2.264 (0)
可以看到已安装版本7.2.182
,并且overlay
中没有可用的版本。
用户可以通过第二字段中的关键字~
查看哪些版本被屏蔽了。
查看包元数据:meta
(m
)
Portage树中的每个包至少提供有关其维护者等的一些元数据(metadata)。
有用信息的数量取决于软件包维护者决定如何提供。
没有选项,meta
返回一些基本的有用信息。
user $ equery meta gnucash - app-office/gnucash [gentoo] Maintainer: tove@gentoo.org (Torsten Veller) Upstream: None specified Location: /usr/portage/app-office/gnucash Keywords: 2.2.9-r1:0: alpha amd64 ppc sparc x86 Keywords: 2.2.9-r2:0: Keywords: 2.3.8:0: Keywords: 2.3.10:0: ~alpha ~amd64 ~ppc ~sparc ~x86
一些维护者提供有关包的额外信息,这可能非常有用:
user $ equery meta --description emacs - app-editors/emacs GNU Emacs is an extensible, customizable text editor - and more. At its core is an interpreter for Emacs Lisp, a dialect of the Lisp programming language with extensions to support text editing. The features of GNU Emacs include: - Content-sensitive editing modes, including syntax coloring, for a wide variety of file types including plain text, source code, and HTML. - Complete built-in documentation, including a tutorial for new users. - Support for many languages and their scripts, including all the European "Latin" scripts, Russian, Greek, Japanese, Chinese, Korean, Thai, Vietnamese, Lao, Ethiopian, and some Indian scripts. - Highly customizable, using Emacs Lisp code or a graphical customization interface. - A large number of extensions that add other functionality, including a project planner, mail and news reader, debugger interface, calendar, and more. Many of these extensions are distributed with GNU Emacs; others are available separately.
查看包大小:size
(s
)
曾经很想知道特定包装占用多少空间?
由于包可以将文件放在多个目录中,因此通常的du -hc
命令可能无法给出正确的数字。
不要担心,equery
可以实现!
user $equery size openoffice-bin * app-office/openoffice-bin-3.1.1 Total files : 4624 Total size : 361.38 MiB
使用size
选项以使用人类易读的单位来打印所使用的总空间,
并列出程序包具有的文件总数。
要以字节为单位获取总大小,请使用--bytes
。
列出每个包的USE
标志:uses
(u
)
equery
的uses
模块可以提供有关特定包可用的USE
标志以及当前启用了哪些标志的信息。
user $ equery uses gst-plugins-meta * Searching for gst-plugins-meta ... [ Legend : U - flag is set in make.conf ] [ : I - package is installed with flag ] [ Colors : set, unset ] * Found these USE flags for media-plugins/gst-plugins-meta-0.10-r2: U I + + X : Adds support for X11 - - a52 : Enables support for decoding ATSC A/52 streams used in DVD + + alsa : Adds support for media-libs/alsa-lib (Advanced Linux Sound Architecture) - - dvb : Adds support for DVB (Digital Video Broadcasting) + + dvd : Adds support for DVDs + + esd : Adds support for media-sound/esound (Enlightened Sound Daemon) + + ffmpeg : Enable ffmpeg-based audio/video codec support + + flac : Adds support for FLAC: Free Lossless Audio Codec - - mad : Adds support for mad (high-quality mp3 decoder library and cli frontend) + + mpeg : Adds libmpeg3 support to various packages - - mythtv : Support for retrieval from media-tv/mythtv backend + + ogg : Adds support for the Ogg container format (commonly used by Vorbis, Theora and flac) - - oss : Adds support for OSS (Open Sound System) + + theora : Adds support for the Theora Video Compression Codec + + vorbis : Adds support for the OggVorbis audio codec - - xv : Adds in optional support for the Xvideo extension (an X API for video playback)
这里在gstreamer
的插件meta-package
中启用了许多USE
标志,
但可以看出还有其他可用的USE
标志。
有关USE
标志的更多信息,请参阅Gentoo Handbook
的USE Flags
章节。
找到ebuild
路径:which
(w
)
which
是一个简单的脚本,可帮助用户快速找到ebuild
的文件路径。
如果使用which
传递未版本化的包名称,将返回最新的可安装ebuild
版本的路径。
换句话说,如果键入emerge example/package
,返回Portage
将使用的ebuild
。
which
还接受版本化程序包以获取该ebuild的路径。
user $ equery which gnome /usr/portage/gnome-base/gnome/gnome-2.26.3.ebuild
最后,如果equery
的上述功能都没有提供答案,请尝试使用which
通过cat
,less
或grep
等程序手动搜索ebuild
:
user $ grep HOMEPAGE $(equery which gentoolkit) HOMEPAGE="http://www.gentoo.org/proj/en/portage/tools/index.xml"
警告:
请注意,如果通过管道发送,
equery
当前会更改输出的格式。管道格式旨在通过工具更容易解析,但可以通过添加
--no-pipe
选项来关闭。编写使用
equery
的脚本时,请注意此行为。
另请参阅
Q_applets
- 用C
编写的小而快的Portage
辅助工具集。eix
- 一组通过二进制缓存搜索和区分,本地Portage
树和overlays
的实用程序。Gentoolkit
- 一套可以简化Gentoo
系统管理的工具。