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.
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.
Installation[edit | edit source]
USE flags[edit | edit source]
USE flags for app-portage/portage-utils Small and fast Portage helper tools written in C
libressl
|
Use dev-libs/libressl instead of dev-libs/openssl when applicable (see also the ssl useflag) |
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 |
Emerge[edit | edit source]
Install the q applets:
root #emerge --ask app-portage/portage-utilsUsage[edit | edit source]
Invocation[edit | edit source]
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 --helpusage: 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
How to find a package to which a file belongs (qfile)[edit | edit source]
The qfile command finds the package to which a file belongs:
Example one:
user $qfile /etc/fonts/fonts.confmedia-libs/fontconfig (/etc/fonts/fonts.conf)
Example two:
user $qfile /usr/share/keymaps/atari/atari-uk-falcon.map.gzsys-apps/kbd (/usr/share/keymaps/atari/atari-uk-falcon.map.gz)
Verifying package integrity (qcheck)[edit | edit source]
To check the MD5 checksums or modification times of the files installed by some package, use the qcheck application:
user $qcheck portage-utilsChecking 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.
To check the integrity of all packages installed, enter:
root #qcheckListing package dependencies (qdepends)[edit | edit source]
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 muttmail-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 muttmail-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-typesmail-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=
Search ebuilds or eclasses for a pattern (qgrep)[edit | edit source]
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 libechonestmedia-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/cupsapp-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}] )
Listing files that belong to an ebuild (qlist)[edit | edit source]
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 [...]
Looking for packages that use some USE flag (quse)[edit | edit source]
Listing used USE flags is done with quse. In its simplest form, it lists which ebuilds use a given USE-flag.
user $quse firefoxapp-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 autogensys-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
Finding package sizes (qsize)[edit | edit source]
To show the size of a package, use the qsize application:
user $qsize vim-coreapp-editors/vim-core: 1846 files, 175 non-files, 28.5M [...]
Searching the Portage tree (qsearch)[edit | edit source]
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 terminusmedia-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 terminusmedia-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)[edit | edit source]
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 perldev-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 -rt2019-12-31T03:07:16 >>> net-fs/samba: 6′19″... (82 of 85) ETA: 23s
See also[edit | edit source]
- Portage — the official package manager and distribution system for Gentoo.
- Gentoolkit — a suite of tools to ease the administration of a Gentoo system.
- Useful Portage tools — a list of helpful Portage-related tools.
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.