Gentoo is a unique distribution and presents some complexities that simply
don't exist for other distributions. As Gentoo developers and contributors
discovered some of these complexities, they also wrote tools to help users and
administrators work around them. Many of these tools have been contributed to
the Gentoo project and are included in the package
Gentoolkit contains a whole bunch of useful tools to help manage your packages and keep track of what is going on in your system. Most users -- particularly those who update systems often -- will benefit from having gentoolkit installed.
Just as with any Gentoo package, installation is just a simple emerge.
# emerge gentoolkit
Any documentation that a program might have (other than man pages) is stored in
Below is a list of features that work over the majority of modules.
(Many modules require a package argument. equery accepts all emerge-like input): $ equery --quiet list gcc #package sys-devel/gcc-4.3.2-r3 $ equery --quiet list sys-devel/gcc #category/package sys-devel/gcc-4.3.2-r3 $ equery --quiet list '>=sys-devel/gcc-4' #atom syntax sys-devel/gcc-4.3.2-r3(Like emerge, equery doesn't understand partial package names): $ equery check zilla !!! No package found matching zilla(Unlike emerge, equery can accept shell-like globbing in the category and/or package name): $ equery check '*zilla*' * Checking www-client/mozilla-firefox-3.0.14 ... 90 out of 90 files passed $ 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(Most equery modules take multiple input): $ 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)(A few modules also allow full regular expressions): $ 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 [...]
The next few sections in this document give a quick introduction to the
different
$ equery belongs -e /usr/bin/glxgears * Searching for /usr/bin/glxgears ... x11-apps/mesa-progs-7.5.1 (/usr/bin/glxgears)
(Show the latest installable version's entry): $ 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.
Sometimes it is useful to check a package's integrity.
$ equery check gentoolkit * Checking app-portage/gentoolkit-0.3.0_rc7 ... 71 out of 71 files passed
Ever wonder why a certain package has been installed on your system?
$ 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) [...]
$ 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)
[...]
Notice how
$ 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
[...]
You can use
$ 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)
$ 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) [...]
The standard query will search installed packages for the given package name.
Passing in '*' displays all packages in the set. In the leftmost field, we
see that all the above packages are
This time we are going to use local options to look for packages in the Portage tree and overlays.
$ 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)
In this example you can see version 7.2.182 is installed and there are no
versions available from an overlay. You can see which versions are keyword
masked by the
Each package in the Portage tree provides at least some metadata about
its maintainer, herd, etc. Read about
$ equery meta gnucash * app-office/gnucash [gentoo] Herd: gnome-office (gnome-office@gentoo.org) 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
When the maintainer provides extra information, it can be very useful:
$ 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.
Have you ever been curious to find out how much space a specific package is
occupying? Since a package could have its files over a number of directories,
the usual
$ equery size openoffice-bin
* app-office/openoffice-bin-3.1.1
Total files : 4624
Total size : 361.38 MiB
As you can see,
$ 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)
Here, a number of USE flags are enabled in
$ equery which gnome /usr/portage/gnome-base/gnome/gnome-2.26.3.ebuild
Lastly, if none of the above features of
$ grep HOMEPAGE $(equery which gentoolkit) HOMEPAGE="http://www.gentoo.org/proj/en/portage/tools/index.xml"
The
# euse -a X [+ CD ] aalib [+ ] acpi [+ C ] alsa [+ C ] apache2 [+ C ] apm [+ D ] avi [+ D ] berkdb [+ D ] bitmap-fonts [+ D ] bonobo [+ ] cdr [+ C ] crypt [+ CD ] cscope [+ C ] cups [+ CD ] curl [+ ] emboss [+ D ] encode [+ D ] esd [+ ] fam [+ ] fbcon [+ C ] firefox [+ C ] font-server [+ D ] foomaticdb [+ D ] fortran [+ D ] gd [+ C ] gdbm [+ D ] gif [+ CD ] gimpprint [+ C ] gnome [+ CD ] gphoto2 [+ ] gpm [+ CD ] gstreamer [+ C ] gtk [+ D ] gtkhtml [+ C ] guile [+ ] imagemagick [+ ] imlib [+ CD ] innodb [+ ] ipv6 [+ D ] javascript [+ C ] jpeg [+ CD ] kde [+ D ] ldap [+ ] libg++ [+ CD ] libwww [+ CD ] mad [+ CD ] mbox [+ C ] md5sum [+ C ] mikmod [+ CD ] mmx [+ C ] motif [+ CD ] mp3 [+ ] mpeg [+ CD ] mpeg4 [+ C ] mysql [+ C ] ncurses [+ CD ] nls [+ D ] nvidia [+ C ] odbc [+ ] offensive [+ ] ogg [+ CD ] opengl [+ CD ] oss [+ D ] pam [+ CD ] pdflib [+ CD ] perl [+ CD ] png [+ CD ] python [+ CD ] qt [+ D ] quicktime [+ CD ] readline [+ CD ] ruby [+ ] sdl [+ CD ] slang [+ D ] spell [+ CD ] sse [+ C ] ssl [+ CD ] svga [+ CD ] tcltk [+ C ] tcpd [+ D ] tiff [+ C ] truetype [+ CD ] usb [+ C ] vanilla [+ C ] x86 [+ C ] xml [+ ] xosd [+ C ] xv [+ CD ] xvid [+ C ] zlib [+ CD ]
Similarly you can use the
# euse -a -l bitmap-fonts [+ D ] font-server [+ D ] fortran [+ D ] gimpprint [+ C ] md5sum [+ C ] mpeg4 [+ C ] nvidia [+ C ] offensive [+ ] truetype [+ CD ]
We can also use
(Enabling a USE Flag) # euse -E 3dfx /etc/make.conf was modified, a backup copy has been placed at /etc/make.conf.euse_backup(/etc/make.conf after the command) USE="alsa acpi apache2 -arts cups cdr crypt cscope -doc fbcon \ firefox gd gif gimpprint gnome gpm gstreamer gtkhtml imlib \ innodb -java javascript jpeg libg++ libwww mad mbox md5sum \ mikmod mmx motif mpeg mpeg4 mysql ncurses nvidia \ ogg odbc offensive opengl pam pdflib perl png python \ quicktime readline sdl spell sse ssl svga tcltk tiff truetype usb \ vanilla X xosd xv xvid x86 zlib 3dfx"(Disabling the USE Flag) # euse -D 3dfx /etc/make.conf was modified, a backup copy has been placed at /etc/make.conf.euse_backup(/etc/make.conf after the command) USE="alsa acpi apache2 -arts cups cdr crypt cscope -doc fbcon \ firefox gd gif gimpprint gnome gpm gstreamer gtkhtml imlib \ innodb -java javascript jpeg libg++ libwww mad mbox md5sum \ mikmod mmx motif mpeg mpeg4 mysql ncurses nvidia \ ogg odbc offensive opengl pam pdflib perl png python \ quicktime readline sdl spell sse ssl svga tcltk tiff truetype usb \ vanilla X xosd xv xvid x86 zlib -3dfx"
This tool is Gentoo's Reverse Dependency rebuilder. It will scan your installed
ebuilds to find packages that have become broken as a result of an upgrade of a
package they depend on. It can emerge those packages for you but it can also
happen that a given package does not work any more with the currently installed
dependencies, in which case you should upgrade the broken package to a more
recent version. revdep-rebuild will pass flags to emerge which lets you use the
# revdep-rebuild -p * Configuring search environment for revdep-rebuild * Checking reverse dependencies * Packages containing binaries and libraries broken by a package update * will be emerged. * Collecting system binaries and libraries * Generated new 1_files.rr * Collecting complete LD_LIBRARY_PATH * Generated new 2_ldpath.rr * Checking dynamic linking consistency [ 48% ] * broken /usr/lib/gstreamer-0.10/libgsttaglib.la (requires /usr/lib/libtag.la) [ 64% ] * broken /usr/lib/libgdkglext-x11-1.0.la (requires /usr/lib/libGLU.la) [ 67% ] * broken /usr/lib/libgtkglext-x11-1.0.la (requires /usr/lib/libGLU.la) [ 85% ] * broken /usr/lib/python2.6/site-packages/gtk-2.0/gtk/gdkgl/_gdkgl.la (requires /usr/lib/libGLU.la) * broken /usr/lib/python2.6/site-packages/gtk-2.0/gtk/gtkgl/_gtkgl.la (requires /usr/lib/libGLU.la) [ 97% ] * broken /usr/qt/3/lib/libqt-mt.la (requires -lpng) [ 100% ] * Generated new 3_broken.rr * Assigning files to packages * /usr/lib/gstreamer-0.10/libgsttaglib.la -> media-plugins/gst-plugins-taglib * /usr/lib/libgdkglext-x11-1.0.la -> x11-libs/gtkglext * /usr/lib/libgtkglext-x11-1.0.la -> x11-libs/gtkglext * /usr/lib/python2.6/site-packages/gtk-2.0/gtk/gdkgl/_gdkgl.la -> dev-python/pygtkglext * /usr/lib/python2.6/site-packages/gtk-2.0/gtk/gtkgl/_gtkgl.la -> dev-python/pygtkglext * /usr/qt/3/lib/libqt-mt.la -> x11-libs/qt * Generated new 4_raw.rr and 4_owners.rr * Cleaning list of packages to rebuild * Generated new 4_pkgs.rr * Assigning packages to ebuilds * Generated new 4_ebuilds.rr * Evaluating package order * Generated new 5_order.rr * All prepared. Starting rebuild emerge --oneshot --pretend dev-python/pygtkglext:0 media-plugins/gst-plugins-taglib:0.10 x11-libs/gtkglext:0 x11-libs/qt:3 These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] media-plugins/gst-plugins-taglib-0.10.17 [ebuild R ] x11-libs/gtkglext-1.2.0 [ebuild R ] x11-libs/qt-3.3.8b-r2 [ebuild R ] dev-python/pygtkglext-1.1.0 * Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.
If you need to rebuild some packages, you may run
PORTAGE_ELOG_CLASSES="log" PORTAGE_ELOG_SYSTEM="save"
Once you've set up elog to your satisfaction, just run
$ eread This is a list of portage log items. Choose a number to view that file or type q to quit. 1) app-portage:gentoolkit-0.2.4_pre2:20070320-000256.log 2) app-portage:gentoolkit-0.2.4_pre2:20070320-000258.log 3) app-portage:gentoolkit-0.2.4_pre2:20070320-000319.log 4) app-portage:gentoolkit-0.2.3:20070320-000408.log Choice?
Select a number and the file will be displayed using the paging program
specified in the PAGER environment variable. If PAGER is not set, it will use
After displaying the elog item, you will be prompted if you want to delete the file.
When you build and install packages, the source files are downloaded and
preserved in DISTDIR, usually
You can create archives of installed packages by using
For more information on