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
Calling
One of the most common uses for
# qpkg -i net-misc/neon
net-misc/neon-0.24.4
HTTP and WebDAV client library [ http://www.webdav.org/neon ]
net-misc/neon-0.23.8
HTTP and WebDAV client library [ http://www.webdav.org/neon ]
net-misc/neon-0.24.6
HTTP and WebDAV client library [ http://www.webdav.org/neon/ ]
net-misc/neon-0.24.5
HTTP and WebDAV client library [ http://www.webdav.org/neon ]
net-misc/neon-0.24.0
HTTP and WebDAV client library [ http://www.webdav.org/neon ]
net-misc/neon-0.21.3
HTTP and WebDAV client library [ http://www.webdav.org/neon ]
net-misc/neon-0.23.9
HTTP and WebDAV client library [ http://www.webdav.org/neon ]
net-misc/neon-0.24.7
HTTP and WebDAV client library [ http://www.webdav.org/neon/ ]
net-misc/neon-0.24.2
HTTP and WebDAV client library [ http://www.webdav.org/neon ]
# qpkg -l app-portage/gentoolkit app-portage/gentoolkit-0.2.0_pre8 * CONTENTS: /usr /usr/bin /usr/bin/euse /usr/bin/qpkg /usr/bin/etcat /usr/bin/revdep-rebuild /usr/bin/glsa-check /usr/bin/dep-clean /usr/bin/equery /usr/bin/ewhich /usr/bin/pkg-size /usr/lib /usr/lib/gentoolkit /usr/lib/gentoolkit/pym /usr/lib/gentoolkit/pym/glsa.py /usr/lib/gentoolkit/pym/gentoolkit.py /usr/sbin /usr/sbin/pkg-clean /usr/sbin/mkebuild /usr/share /usr/share/doc /usr/share/doc/gentoolkit-0.2.0_pre8 /usr/share/doc/gentoolkit-0.2.0_pre8/NEWS /usr/share/doc/gentoolkit-0.2.0_pre8/TODO /usr/share/doc/gentoolkit-0.2.0_pre8/euse /usr/share/doc/gentoolkit-0.2.0_pre8/euse/TODO /usr/share/doc/gentoolkit-0.2.0_pre8/euse/README /usr/share/doc/gentoolkit-0.2.0_pre8/euse/AUTHORS /usr/share/doc/gentoolkit-0.2.0_pre8/euse/ChangeLog /usr/share/doc/gentoolkit-0.2.0_pre8/qpkg /usr/share/doc/gentoolkit-0.2.0_pre8/qpkg/README /usr/share/doc/gentoolkit-0.2.0_pre8/qpkg/AUTHORS /usr/share/doc/gentoolkit-0.2.0_pre8/qpkg/ChangeLog /usr/share/doc/gentoolkit-0.2.0_pre8/etcat /usr/share/doc/gentoolkit-0.2.0_pre8/etcat/README /usr/share/doc/gentoolkit-0.2.0_pre8/etcat/AUTHORS /usr/share/doc/gentoolkit-0.2.0_pre8/revdep-rebuild /usr/share/doc/gentoolkit-0.2.0_pre8/revdep-rebuild/TODO /usr/share/doc/gentoolkit-0.2.0_pre8/revdep-rebuild/README /usr/share/doc/gentoolkit-0.2.0_pre8/revdep-rebuild/AUTHORS /usr/share/doc/gentoolkit-0.2.0_pre8/README /usr/share/doc/gentoolkit-0.2.0_pre8/equery /usr/share/doc/gentoolkit-0.2.0_pre8/equery/README /usr/share/doc/gentoolkit-0.2.0_pre8/equery/AUTHORS /usr/share/doc/gentoolkit-0.2.0_pre8/AUTHORS /usr/share/doc/gentoolkit-0.2.0_pre8/gentoolkit /usr/share/doc/gentoolkit-0.2.0_pre8/gentoolkit/TODO /usr/share/doc/gentoolkit-0.2.0_pre8/gentoolkit/README /usr/share/doc/gentoolkit-0.2.0_pre8/gentoolkit/AUTHORS /usr/share/doc/gentoolkit-0.2.0_pre8/gentoolkit/ChangeLog /usr/share/doc/gentoolkit-0.2.0_pre8/ChangeLog /usr/share/doc/gentoolkit-0.2.0_pre8/COPYING /usr/share/man /usr/share/man/man1 /usr/share/man/man1/revdep-rebuild.1.gz /usr/share/man/man1/mkebuild.1.gz /usr/share/man/man1/qpkg.1.gz /usr/share/man/man1/pkg-clean.1.gz /usr/share/man/man1/etcat.1.gz /usr/share/man/man1/ewhich.1.gz /usr/share/man/man1/equery.1.gz /usr/share/man/man1/euse.1.gz /usr/share/man/man1/dep-clean.1.gz /usr/share/man/man1/pkg-size.1.gz
To find the package that a file came from, use the
# qpkg -f /usr/lib/mozilla net-www/mozilla *
Sometimes multiple versions of the same package may exist.
# qpkg --dups --slot app-portage/gentoolkit kde-base/kdeaddons kde-base/kdeadmin kde-base/kdeartwork kde-base/kdebase kde-base/kdegames kde-base/kdelibs kde-base/kdemultimedia kde-base/kdenetwork kde-base/kdetoys kde-base/kdeutils media-libs/freetype x11-libs/qt
Sometimes it is useful to check a package's integrity to know that files have
not been replaced since they were installed.
To check both mtimes and md5 sums, use the
# qpkg cdrtools -c -v app-cdr/cdrtools-2.01_alpha25 * /etc/default/rscsi.dfl !mtime! /usr/bin/devdump !md5! !mtime! /usr/bin/mkisofs !md5! !mtime! /usr/bin/isovfy !md5! !mtime! /usr/bin/readcd !md5! !mtime! /usr/bin/cdda2wav !md5! !mtime! /usr/bin/cdrecord !md5! !mtime! /usr/bin/isodump !md5! !mtime! /usr/bin/isoinfo !md5! !mtime! /usr/lib/libfile.a !md5! !mtime! /usr/lib/librscg.a !md5! !mtime! /usr/lib/libunls.a !md5! !mtime! /usr/lib/libedc_ecc.a !md5! !mtime! /usr/lib/libdeflt.a !md5! !mtime! /usr/lib/libhfs.a !md5! !mtime! /usr/lib/libscg.a !md5! !mtime! /usr/lib/libparanoia.a !md5! !mtime! /usr/lib/libschily.a !md5! !mtime! /usr/sbin/rscsi !md5! !mtime! /usr/share/man/man1/cdrecord.1.gz !md5! !mtime! /usr/share/man/man1/readcd.1.gz !md5! !mtime! /usr/share/man/man1/cdda2wav.1.gz !md5! !mtime! /usr/share/man/man8/mkisofs.8.gz !md5! !mtime! 76/150 app-cdr/cdrtools-2.01_alpha37 * 0/122
As you can see, I have more than one version of cdrtools installed.
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-1.1.2 Total Files : 2908 Total Size : 223353.31 KiB
As you can see,
# equery uses ethereal
[ Colour Code : set unset ]
[ Legend : (U) Col 1 - Current USE flags ]
[ : (I) Col 2 - Installed With USE flags ]
U I [ Found these USE variables in : net-analyzer/ethereal-0.10.6 ]
- - adns : Adds support for the adns DNS client library
+ + gtk : Adds support for x11-libs/gtk+ (The GIMP Toolkit)
- - ipv6 : Adds support for IP version 6
- - snmp : Adds support for the Simple Network Management Protocol if available
+ + ssl : Adds support for Secure Socket Layer connections
+ + gtk2 : Use gtk+-2.0.0 over gtk+-1.2 in cases where a program supports both.
- - debug : Tells configure and the makefiles to build for debugging. Effects vary across packages,
but generally it will at least add -g to CFLAGS. Remember to set FEATURES=nostrip too
I have installed ethereal with only the gtk, ssl and gtk2 flags set, but the
other USE flags for ethereal are adns, ipv6, snmp and debug. For more
information on USE flags, please refer to the
We can also find out which ebuild is being used for a specific package using
# equery which cdrtools /usr/portage/app-cdr/cdrtools/cdrtools-2.01_alpha37.ebuild
# equery depgraph cdrtools
Displaying dependencies for app-cdr/cdrtools-2.01_alpha37
`-- app-cdr/cdrtools-2.01_alpha37
`-- sys-libs/glibc-2.3.4.20040808 (virtual/libc)
`-- sys-kernel/linux-headers-2.4.22 (virtual/os-headers)
`-- sys-apps/baselayout-1.10.4
`-- sys-apps/sysvinit-2.85-r1
`-- sys-apps/gawk-3.1.3-r1
`-- sys-apps/util-linux-2.12-r4
`-- sys-apps/sed-4.0.9
`-- sys-libs/ncurses-5.4-r4
`-- sys-apps/pam-login-3.14
`-- sys-libs/pam-0.77-r1
`-- sys-libs/cracklib-2.7-r10
`-- sys-apps/miscfiles-1.3-r1
`-- app-arch/gzip-1.3.5-r1
`-- sys-apps/portage-2.0.50-r10
For example, while glibc may be a direct dependency for cdrtools, the linux-headers are an indirect dependency for cdrtools.
The
# euse --conf USE setting in make.conf: alsa acpi apache2 cups cdr crypt cscope -doc ethereal fbcon gif gimpprint gnome gpm gstreamer gtk2 gtkhtml imlib imlib2 innodb -java javascript jpeg libg++ libwww mad md5sum mikmod mmx motif mozilla mpeg mpeg4 mysql ncurses oggvorbis odbc offensive opengl pam pdflib perl png python quicktime readline sdl spell sse ssl svga tcltk tiff truetype usb vanilla X xml2 xmms xosd xv xvid x86 zlib
Setting a USE flag is done with the help of the
# euse --enable 3dfx USE setting in make.conf after enabling: alsa acpi apache2 cups cdr crypt cscope -doc ethereal fbcon gif gimpprint gnome gpm gstreamer gtk2 gtkhtml imlib imlib2 innodb -java javascript jpeg libg++ libwww mad md5sum mikmod mmx motif mozilla mpeg mpeg4 mysql ncurses oggvorbis odbc offensive opengl pam pdflib perl png python quicktime readline sdl spell sse ssl svga tcltk tiff truetype usb vanilla X xml2 xmms xosd xv xvid x86 zlib 3dfx
# euse --disable 3dfx USE setting in make.conf after disabling: alsa acpi apache2 cups cdr crypt cscope -doc ethereal fbcon gif gimpprint gnome gpm gstreamer gtk2 gtkhtml imlib imlib2 innodb -java javascript jpeg libg++ libwww mad md5sum mikmod mmx motif mozilla mpeg mpeg4 mysql ncurses oggvorbis odbc offensive opengl pam pdflib perl png python quicktime readline sdl spell sse ssl svga tcltk tiff truetype usb vanilla X xml2 xmms 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 anymore with the currently installed
dependencies, in which cas 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
Checking reverse dependencies...
Packages containing binaries and libraries broken by any package update,
will be recompiled.
Collecting system binaries and libraries... done.
(/root/.revdep-rebuild.1_files)
Collecting complete LD_LIBRARY_PATH... done.
(/root/.revdep-rebuild.2_ldpath)
Checking dynamic linking consistency...
broken /usr/lib/ao/plugins-2/libarts.so (requires libartsc.so.0)
broken /usr/lib/kde3/libkpresenterpart.so (requires libartskde.so.1 libqtmcop.so.1
libsoundserver_idl.so.1 libkmedia2_idl.so.1 libartsflow.so.1 libartsflow_idl.so.1 libmcop.so.1)
broken /usr/lib/ruby/site_ruby/1.8/i686-linux/fox.so (requires libFOX-1.0.so.0)
broken /usr/lib/xine/plugins/1.0.0/xineplug_ao_out_arts.so (requires libartsc.so.0)
broken /usr/lib/perl5/vendor_perl/5.8.0/i686-linux/auto/SDL_perl/SDL_perl.so (requires libSDL_gfx.so.0)
broken /usr/lib/libloudmouth-1.so.0.0.0 (requires libgnutls.so.10)
broken /usr/bin/k3b (requires libartskde.so.1 libqtmcop.so.1 libsoundserver_idl.so.1 libkmedia2_idl.so.1
libartsflow.so.1 libartsflow_idl.so.1 libmcop.so.1)
broken /usr/bin/lua (requires libhistory.so.4)
broken /usr/bin/lyx (requires libAiksaurus-1.0.so.0)
broken /usr/bin/luac (requires libhistory.so.4)
broken /usr/bin/avidemux2 (requires libartsc.so.0)
broken /usr/bin/pptout (requires libxml++-0.1.so.11)
broken /usr/bin/xml2ps (requires libxml++-0.1.so.11)
done.
(/root/.revdep-rebuild.3_rebuild)
Assigning files to ebuilds... done.
(/root/.revdep-rebuild.4_ebuilds)
Evaluating package order... done.
(/root/.revdep-rebuild.5_order)
All prepared. Starting rebuild...
emerge --oneshot --nodeps -p =app-cdr/k3b-0.11.14 =app-office/koffice-1.3.2 =app-office/lyx-1.3.4 \
=app-office/passepartout-0.2 =dev-lang/lua-5.0.2 =dev-ruby/fxruby-1.0.29 =media-libs/libao-0.8.5 \
=media-libs/xine-lib-1_rc5-r3 =media-video/avidemux-2.0.26 =net-libs/loudmouth-0.16
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild R ] app-cdr/k3b-0.11.14
[ebuild R ] app-office/koffice-1.3.2
[ebuild R ] app-office/lyx-1.3.4
[ebuild R ] app-office/passepartout-0.2
[ebuild R ] dev-lang/lua-5.0.2
[ebuild R ] dev-ruby/fxruby-1.0.29
[ebuild R ] media-libs/libao-0.8.5
[ebuild R ] media-libs/xine-lib-1_rc5-r3
[ebuild R ] media-video/avidemux-2.0.26
[ebuild R ] net-libs/loudmouth-0.16
Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.
If you need to rebuild some packages, you may run