q applets/zh-cn

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Q applets and the translation is 40% complete.
Other languages:
English • ‎français • ‎português do Brasil • ‎русский • ‎中文(中国大陆)‎ • ‎中文(简体)‎ • ‎日本語 • ‎한국어

Warning: Display title "q applets/zh-cn" overrides earlier display title "Q applets".


The q applets are a collection of small, fast Portage query utilities written in C. These are meant to offer a faster but more limited alternative to their app-portage/gentoolkit counterparts.

Readers should note that q applets were not created to replace gentoolkit; they simply may be more efficient than the equivalent utilities from gentoolkit and might be better suited to be used in scripts that need to call Portage repeatedly. They do not offer the same functionality. q applets do not consider eclasses and do not provide tools like revdep-rebuild or glsa-check.


USE 标记

USE flags for app-portage/portage-utils Small and fast Portage helper tools written in C

nls Add Native Language Support (using gettextGNU locale utilities)
openmp Build support for the OpenMP (support parallel computing), requires >=sys-devel/gcc-4.2 built with USE="openmp"
qmanifest Build qmanifest applet, this adds additional dependencies for GPG, OpenSSL and BLAKE2B hashing
qtegrity Build qtegrity applet, this adds additional dependencies for OpenSSL
static !!do not set this during bootstrap!! Causes binaries to be statically linked instead of dynamically


安装 q 小程序:

root #emerge --ask app-portage/portage-utils



The complete list of applications that are provided by app-portage/portage-utils can be listed by typing man q or q --help. Please read the man page for each utility described, as this guide is only meant to be a short reference for the most useful functions and does not include all the information about each application.

To see the available applets with a short description of their function, use q --help:

user $q --help
usage: q <applet> <args>  : invoke a portage utility applet
currently defined applets:
        q <applet> <args> : virtual applet
    qatom <pkg>           : split atom strings
   qcheck <pkgname>       : verify integrity of installed packages
 qdepends <pkgname>       : show dependency info
    qfile <filename>      : list all pkgs owning files
    qgrep <expr> [pkg ...]: grep in ebuilds
 qkeyword <action> <args> : list packages based on keywords
    qlist <pkgname>       : list files owned by pkgname
     qlop <pkgname>       : emerge log analyzer
 qmanifest <misc args>     : verify or generate thick Manifest files
   qmerge <pkgnames>      : fetch and merge binary package
     qpkg <misc args>     : create or manipulate Gentoo binpkgs
  qsearch <regex>         : search pkgname/desc
    qsize <pkgname>       : calculate size usage
    qtbz2 <misc args>     : manipulate tbz2 packages
 qtegrity <misc args>     : verify files with IMA
     quse <useflag>       : find pkgs using useflags
    qxpak <misc args>     : manipulate xpak archives
options: -[ioemvqChV]
  -i, --install    * Install symlinks for applets
  -o, --overlays   * Print available overlays (read from repos.conf)
  -e, --envvar     * Print used variables and their found values
  -m, --masks      * Print (package.)masks for the current profile
      --root <arg> * Set the ROOT env var
  -v, --verbose    * Report full package versions, emit more elaborate output
  -q, --quiet      * Tighter output; suppress warnings
  -C, --nocolor    * Don't output color
  -h, --help       * Print this help and exit
  -V, --version    * Print version and exit

=== 如何查找文件所属的包(qfile) ===

{{c|qfile}} 命令查找文件所属的包: 

{{Cmd|qfile /etc/fonts/fonts.conf|output=<pre>
media-libs/fontconfig (/etc/fonts/fonts.conf)
user $qfile /usr/share/keymaps/atari/atari-uk-falcon.map.gz
sys-apps/kbd (/usr/share/keymaps/atari/atari-uk-falcon.map.gz)

验证包完整性 (qcheck)

要检查某些软件包安装的文件的 MD5 校验和或修改时间,请使用 qcheck 应用程序:

user $qcheck portage-utils
Checking app-portage/portage-utils-0.1.13 ...
  * 36 out of 36 files are good

All the files which were changed after installation will be reported here. Configuration files which have been manually edited after installation are reported too. Most packages do not require root permissions. However, if a package has files that are only accessible to root qcheck should be run as root.


root #qcheck

列出包依赖项 (qdepends)

qdepends can list the dependencies of a package in either direction. Without options to list the DEPEND (-d), RDEPEND (-r), PDEPEND (-p) or BDEPEND (-b) installed dependencies, all dependencies needed by a package are displayed merged into one list. Use -v to get a shell-compatible and formatted dependency output list, like found in ebuilds.

user $qdepends mutt
mail-client/mutt-1.13.1: >=app-portage/elt-patches-20170815 >=sys-devel/automake-1.15.1:1.15 dev-libs/libressl:0/47= dev-db/lmdb:0/0.9.24= virtual/libintl www-client/w3m !<sys-devel/gettext- dev-libs/libxslt dev-libs/libxml2 >=sys-devel/automake-1.16.1:1.16 >=sys-devel/libtool-2.4 >=sys-devel/autoconf-2.69 net-dns/libidn2 virtual/libiconv >=app-crypt/gpgme-0.9.0:1/11= www-client/elinks app-misc/mime-types app-text/docbook-xsl-stylesheets >=dev-libs/cyrus-sasl-2 www-client/lynx net-mail/mailbase >=sys-libs/ncurses-5.2:0/6=

Use -v to get a shell-compatible and formatted dependency output list, like found in ebuilds.

user $qdepends -rv mutt

To list all of the installed packages that depend on a package use the -Q option.

user $qdepends -Q mime-types
mail-client/mutt-1.13.1: >=app-portage/elt-patches-20170815 >=sys-devel/automake-1.15.1:1.15 dev-libs/libressl:0/47= dev-db/lmdb:0/0.9.24= virtual/libintl www-client/w3m !<sys-devel/gettext- dev-libs/libxslt dev-libs/libxml2 >=sys-devel/automake-1.16.1:1.16 >=sys-devel/libtool-2.4 >=sys-devel/autoconf-2.69 net-dns/libidn2 virtual/libiconv >=app-crypt/gpgme-0.9.0:1/11= app-misc/mime-types www-client/elinks app-text/docbook-xsl-stylesheets >=dev-libs/cyrus-sasl-2 www-client/lynx net-mail/mailbase >=sys-libs/ncurses-5.2:0/6=
dev-lang/python-2.7.16: >=app-portage/elt-patches-20170815 >=sys-libs/readline-4.1:0/8= >=sys-devel/automake-1.15.1:1.15 dev-libs/libressl:0/47= virtual/libintl >=dev-db/sqlite-3.3.8:3/3= virtual/pkgconfig !<sys-devel/gettext- virtual/libffi >=sys-devel/automake-1.16.1:1.16 >=dev-libs/expat-2.1 >=sys-libs/zlib-1.1.3:0/1= >=sys-devel/autoconf-2.69 >=app-eselect/eselect-python-20140125-r1 app-misc/mime-types >=sys-devel/autoconf-2.65 !!<sys-apps/portage-2.1.9 app-arch/bzip2:0/1= !sys-devel/gcc[libffi(+)] >=sys-libs/ncurses-5.2:0/6=
dev-lang/python-3.7.2: >=app-portage/elt-patches-20170815 >=sys-libs/readline-4.1:0/8= >=sys-devel/automake-1.15.1:1.15 virtual/libffi:0/7= dev-libs/libressl:0/47= virtual/libintl >=dev-db/sqlite-3.3.8:3/3= app-arch/xz-utils:0/0= virtual/pkgconfig !<sys-devel/gettext- >=sys-devel/automake-1.16.1:1.16 !!<sys-apps/sandbox-2.6-r1 >=dev-libs/expat-2.1:0/0= >=sys-libs/zlib-1.1.3:0/1= >=sys-devel/autoconf-2.69 >=app-eselect/eselect-python-20140125-r1 app-misc/mime-types app-arch/bzip2:0/1= !sys-devel/gcc[libffi(+)] >=sys-libs/ncurses-5.2:0/6=
dev-lang/python-3.6.8: >=app-portage/elt-patches-20170815 >=sys-libs/readline-4.1:0/8= >=sys-devel/automake-1.15.1:1.15 virtual/libffi:0/7= dev-libs/libressl:0/47= virtual/libintl >=dev-db/sqlite-3.3.8:3/3= app-arch/xz-utils:0/0= virtual/pkgconfig !<sys-devel/gettext- >=sys-devel/automake-1.16.1:1.16 !!<sys-apps/sandbox-2.6-r1 >=dev-libs/expat-2.1:0/0= >=sys-libs/zlib-1.1.3:0/1= >=sys-devel/autoconf-2.69 >=app-eselect/eselect-python-20140125-r1 app-misc/mime-types app-arch/bzip2:0/1= !sys-devel/gcc[libffi(+)] >=sys-libs/ncurses-5.2:0/6=

在 ebuild 或 eclasses 中搜索模式 (qgrep)

qgrep can be used to find ebuilds that mention an ebuild's name ("libechonest" is used in the example below) which will list all packages (installed or not) which depend on some package:

user $qgrep -l libechonest

The -J option will limit the search to installed packages. -N will print the atom instead of the filename.

user $qgrep -NJ net-print/cups
app-office/libreoffice- cups? ( net-print/cups )
dev-qt/qtprintsupport-5.11.3:   cups? ( >=net-print/cups-1.4 )
net-print/hplip-3.18.6: net-print/cups
net-print/hplip-3.18.6: hpijs? ( net-print/cups-filters[foomatic] )
net-print/cups-filters-1.21.6:  >=net-print/cups-1.7.3
net-print/cups-filters-1.21.6:  !<=net-print/cups-1.5.9999
dev-java/icedtea-bin-3.10.0-r1: cups? ( >=net-print/cups-2.0% )
net-wireless/bluez-5.50-r2:     cups? ( net-print/cups:= )
app-text/ghostscript-gpl-9.26:  cups? ( >=net-print/cups-1.3.8 )
x11-libs/gtk+-2.24.32-r1:       cups? ( >=net-print/cups-1.7.1-r2:=[${MULTILIB_USEDEP}] )
x11-libs/gtk+-3.24.4-r1:        cups? ( >=net-print/cups-1.2[${MULTILIB_USEDEP}] )

Listing files that belong to an ebuild (qlist)

The qlist command gives a list of all files that belong to an ebuild.

user $qlist vim

Looking for packages that use some USE flag (quse)

Listing used USE flags is done with quse. In its simplest form, it lists which ebuilds use a given USE-flag.

user $quse firefox
app-misc/tracker/tracker-0.12.10-r1.ebuild applet doc eds elibc_glibc exif firefox-bookmarks flac flickr gif

To display the description of a USE-flag, the -D option can be used. This can be combined with the -p option, which takes an atom name as argument, to list all USE-flags for the given atom.

user $quse -Dvp autogen
  libopts       install the libopts tarball (a few packages want this for developing)
  static-libs   Build static versions of dynamic libraries as well

Finding package sizes (qsize)

To show the size of a package, use the qsize application:

user $qsize vim-core
app-editors/vim-core: 1846 files, 175 non-files, 28.5M 

搜索 Portage 树 (qsearch)

One of the most powerful tools of app-portage/portage-utils is qsearch. This tool allows to search the Portage tree much faster than using the emerge -s command.

Here are some examples of its usage:

user $qsearch terminus
media-fonts/terminus-font: A clean fixed font for the console and X11

The homepage of packages can be queried using the -H option:

user $qsearch -H terminus
media-fonts/terminus-font: http://terminus-font.sourceforge.net/

In another example, let's look for a jabber client:

user $qsearch -S "jabber client"
app-emacs/emacs-jabber: A Jabber client for Emacs
net-im/coccinella: Jabber Client With a Built-in Whiteboard and VoIP (jingle)
net-im/gajim: Jabber client written in PyGTK
net-im/tkabber: A jabber client written in Tcl/Tk
net-im/vacuum: Qt Crossplatform Jabber client

Extracting information from emerge logs (qlop)

qlop allows to extract useful information from the emerge.log file. It can be useful when package compilation times need to be estimated or to compare build times with other systems. It also allows to check what is compiling at the moment and how long it will probably take - which is handy when working in the console and don't have any other means to check it.

Estimate how long a dev-lang/perl build takes:

user $qlop -a perl
dev-lang/perl: 7′12″ average for 3 merges

See what is emerging at the moment and how long the process has been running already:

user $qlop -rt
2019-12-31T03:07:16 >>> net-fs/samba: 6′19″... (82 of 85) ETA: 23s


This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Łukasz Damentko, , and Marcelo Góes
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.