Q applets

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Q applets and the translation is 43% complete.
Outdated translations are marked like this.
Resources

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 gentoolkit counterparts.

q applets were not created to replace gentoolkit. 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

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

Emerge

安装 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

<div lang="en" dir="ltr" class="mw-content-ltr">
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
    qwhich <pkg ...>       : find path to pkg
     qxpak <misc args>     : manipulate xpak archives
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
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
      --color      * Force color in output
  -h, --help       * Print this help and exit
  -V, --version    * Print version and exit

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

qfile 命令查找文件所属的包:

示例一:

user $qfile /etc/fonts/fonts.conf
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 (such as the /etc/conf.d/ directory for OpenRC systems). 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)

附注
This shows what might be used and not necessarily is being used on a particular system. It does not always account for the USE variables of packages that are installed or in a list of alternates.

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-0.18.1.1-r3 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
mail-client/mutt-1.13.1:
RDEPEND="
    app-misc/mime-types
    virtual/libiconv
    dev-db/lmdb:0/0.9.24=
    dev-libs/libressl:0/47=
    virtual/libintl
    >=dev-libs/cyrus-sasl-2
    net-dns/libidn2
    >=app-crypt/gpgme-0.9.0:1/11=
    >=sys-libs/ncurses-5.2:0/6=
"

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-0.18.1.1-r3 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-0.18.1.1-r3 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-0.18.1.1-r3 >=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-0.18.1.1-r3 >=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
media-libs/libechonest/libechonest-2.0.2.ebuild
media-libs/libechonest/libechonest-2.2.0-r1.ebuild
media-libs/libechonest/libechonest-2.3.0.ebuild
media-libs/libechonest/libechonest-2.3.1.ebuild
media-libs/libechonest/libechonest-2.3.1-r1.ebuild
media-libs/libechonest/libechonest-9999.ebuild
media-sound/clementine/clementine-1.2.3.ebuild
media-sound/clementine/clementine-1.2.3-r1.ebuild
media-sound/clementine/clementine-1.3.1-r1.ebuild
media-sound/tomahawk/tomahawk-0.8.4-r3.ebuild
media-sound/tomahawk/tomahawk-9999.ebuild

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-6.1.5.2: 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-2.2.7:PDEPEND=">=net-print/cups-filters-1.0.43"
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}] )

列出 ebuild 包含的文件(qlist)

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

user $qlist vim
/usr/bin/gvim
/usr/bin/gvimdiff
/usr/bin/evim
/usr/bin/eview
/usr/bin/gview
/usr/bin/rgvim
[...]

查找软件包使用了哪些 USE 标记(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
sys-devel/autogen-5.18.16-r1
  libopts       install the libopts tarball (a few packages want this for developing)
  static-libs   Build static versions of dynamic libraries as well

查看软件包大小(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 
[...]

搜索 ebuild 仓库(qsearch)

One of the most powerful tools of app-portage/portage-utils is qsearch. This tool allows to search ebuild repositories 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

从 emerge 日志提取信息 (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

安装二进制软件包 (qmerge)

qmerge 可以快速安装二进制软件包 (binpkgs):

user $qmerge sys-apps/sed
[R] sys-apps/sed-4.8

Create or manipulate binary package (qpkg)

qpkg is used to create or clean up Gentoo binary packages.

警告
qpkg used to be a gentoolkit command for querying packages, there is still much outdated documentation on that command to be found on the Internet. See equery.
附注
Not to be confused with quickpkg.

qsearch

List the descriptions of every package in the cache
user $qsearch --all .
Regex search package basenames
user $qsearch --search <regex>
Regex search package descriptions (or homepage when using -H)
user $qsearch --desc <arg>
Only show package name
user $qsearch --name-only <package>
Show homepage info instead of description
user $qsearch --homepage gentoo.org
Show repository the ebuild originates from
user $qsearch --repo gentoo
Print matched atom using given format string
user $qsearch --format <arg>
Set the ROOT env va
user $qsearch --root <arg>
Report full package versions, emit more elaborate output
user $qsearch --verbose syslog-ng
Tighter output; suppress warnings
user $qsearch --quiet <package>
Don't output color
user $qsearch --nocolor package>
Force color in output
附注
Colors is default enabled
user $qsearch --color <package>
Print current qsearch version
user $qsearch --version

quse

Print version and exit
user $quse --version
Print this help and exit
user $quse --help
Force color in output
user $quse --color
Don't output color
user $quse --nocolor
Tighter output; suppress warnings
user $quse --quiet <package>
Report full package versions, emit more elaborate output
user $quse --verbose <package>
Set the ROOT env var
user $quse --root <arg>
Print matched atom using given format string
user $quse --format <arg>
Show repository the ebuild originates from
user $quse --repo
Restrict matching to package or category
user $quse --package <arg>
Only search installed packages
user $quse --installed
Describe all USE flags
user $quse --describe .
Use the LICENSE vs IUSE
附注
Including a dot (.) will list all licenses available
user $quse --license .
List all ebuilds, don't match anything
user $quse --all
Show exact non regexp matching using strcmp
user $quse --exact useflag

故障排除

Defining atom fields for applet commands

Certain q applet commands / argument combinations (such as qsearch --format) mention the use of atom formatting. The defintion of this formatting can be found on the qatom man page under the --format (-F) argument:

user $man 1 qatom

另请参阅


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.