Gentoo — уникальный дистрибутив, имеющий некоторые сложности в
использовании, просто отсутствующие в других дистрибутивах. Столкнувшись с этим,
разработчики и участники проекта Gentoo создали средства, помогающие
пользователям и администраторам обходить их. Многие из этих инструментов были
добавлены в проект Gentoo и включены в пакет
Gentoolkit содержит множество полезных утилит, помогающих управлять пакетами и следить за тем, что происходит в вашей системе. Многим пользователям — особенно тем, кто часто обновляют систему — будет полезно установить gentoolkit.
Как и для всех пакетов Gentoo, установка это просто вызов emerge.
# emerge gentoolkit
Любая имеющаяся документация к программам (за исключением страниц справки)
находится в каталоге
# equery belongs /usr/bin/xmms [ Searching for file(s) /usr/bin/xmms in *... ] media-sound/xmms-1.2.10-r9 (/usr/bin/xmms)
С использованием параметра
Иногда бывает полезно проверить целостность пакета.
# equery check gentoolkit [ Checking app-portage/gentoolkit-0.2.0 ] * 54 out of 54 files good
Обратите внимание, если после установки вы измените конфигурационные файлы пакета, они могут быть отмечены как не прошедшие проверку ("not good").
# equery depends pygtk [ Searching for packages depending on pygtk... ] app-office/dia-0.93 dev-python/gnome-python-2.0.0-r1 gnome-extra/gdesklets-core-0.26.2 media-gfx/gimp-2.0.4 x11-libs/vte-0.11.11-r1
# 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
Например, пока cdrtools напрямую зависит от glibc, он косвенно зависит
от linux_headers. Обратите внимание, что вывод также включает информацию
о виртуальных пакетах. В примере выше,
# equery files gentoolkit [ Searching for packages matching gentoolkit... ] app-portage/gentoolkit-0.2.0 * Contents of app-portage/gentoolkit-0.2.0: /usr /usr/bin /usr/bin/equery /usr/bin/etcat /usr/bin/euse /usr/bin/glsa-check /usr/bin/qpkg /usr/bin/revdep-rebuild /usr/lib /usr/lib/gentoolkit /usr/lib/gentoolkit/pym /usr/lib/gentoolkit/pym/gentoolkit /usr/lib/gentoolkit/pym/gentoolkit/__init__.py /usr/lib/gentoolkit/pym/gentoolkit/gentoolkit.py /usr/lib/gentoolkit/pym/gentoolkit/pprinter.py /usr/lib/gentoolkit/pym/glsa.py /usr/sbin /usr/share /usr/share/doc /usr/share/doc/gentoolkit-0.2.0_pre10 [...]
Функция
Если вы хотите найти все пакеты в вашей системе, использующие конкретный
USE-флаг,
# equery hasuse mozilla [ Searching for USE flag mozilla in all categories among: ] * installed packages [I--] [ ] dev-java/blackdown-jre-1.4.2.01 (1.4.2) [I--] [ ] mail-client/evolution-2.0.2 (2.0)
В
# equery list gentoolkit [ Searching for package 'gentoolkit' in all categories among: ] * installed packages [I--] [ ] app-portage/gentoolkit-0.2.0 (0)
Стандартный запрос покажет установленные у вас пакеты, с названием, совпадающим с переданным в качестве параметра. В случае совпадения, будет отображена следующая информация: между первых квадратных скобок — размещение пакета (I для установленных пакетов, P для пакетов в Portage, O для пакетов в оверлее), между вторыми — возможные маски (~ по ключевому слову, - по архитектуре или M для жестко замаскированных), затем следует категория и полное имя пакета, и в конце, слот, в котором размещен пакет.
Следующий пример. Сейчас мы используем дополнительные параметры функции
# equery list -p -o vim [ Searching for package 'vim' in all categories among: ] * installed packages [I--] [ ] app-editors/vim-6.3-r4 (0) * Portage tree (/usr/portage) [-P-] [M~] app-editors/vim-7.0_alpha20050126 (0) [-P-] [M~] app-editors/vim-7.0_alpha20050201 (0) [-P-] [ ] app-editors/vim-6.3-r2 (0) [-P-] [M~] app-editors/vim-7.0_alpha20050122 (0) [-P-] [M~] app-editors/vim-core-7.0_alpha20050126 (0) [-P-] [ ] app-editors/vim-core-6.3-r3 (0) [-P-] [M~] app-editors/vim-core-7.0_alpha20050122 (0) [-P-] [M~] app-editors/vim-core-7.0_alpha20050201 (0) [-P-] [ ] app-editors/vim-core-6.3-r4 (0) * overlay tree (/opt/ebuilds)
Интересно узнать, сколько места на диске занимает определенный пакет?
Поскольку файлы пакета могут быть расположены в большом количестве каталогов,
обычный вызов
# equery size openoffice-bin * app-office/openoffice-bin-1.1.2 Total Files : 2908 Total Size : 223353.31 KiB
Как видите,
# 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
Я установил ethereal только с включенными gtk, ssl и gtk2 USE-флагами, однако
есть и другие доступные для него USE-флаги — это adns, ipv6, snmp и debug.
За полной информацией о использовании USE-флагов, обращайтесь к главе
Используя
# equery which cdrtools /usr/portage/app-cdr/cdrtools/cdrtools-2.01_alpha37.ebuild
Команда
# 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 [+ ] ethereal [+ C ] fam [+ ] fbcon [+ 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 ] gtk2 [+ CD ] gtkhtml [+ C ] guile [+ ] imagemagick [+ ] imlib [+ CD ] imlib2 [+ ] 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 ] mozilla [+ C ] mp3 [+ ] mpeg [+ CD ] mpeg4 [+ C ] mysql [+ C ] ncurses [+ CD ] nls [+ D ] nvidia [+ C ] odbc [+ ] offensive [+ ] oggvorbis [+ 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 ] truetype-fonts [+ D ] type1-fonts [+ D ] usb [+ C ] vanilla [+ C ] x86 [+ C ] xml [+ ] xml2 [+ D ] xmms [+ D ] xosd [+ C ] xv [+ CD ] xvid [+ C ] zlib [+ CD ]
Подобным образом вы можете использовать команду
# euse -a -l bitmap-fonts [+ D ] font-server [+ D ] fortran [+ D ] gimpprint [+ C ] imlib2 [+ ] md5sum [+ C ] mpeg4 [+ C ] nvidia [+ C ] offensive [+ ] truetype [+ CD ] truetype-fonts [+ D ] type1-fonts [+ D ]
Мы также можем использовать
(Включение USE-флага) # euse -E 3dfx /etc/make.conf was modified, a backup copy has been placed at /etc/make.conf.euse_backup(/etc/make.conf после выполнения команды) USE="alsa acpi apache2 -arts cups cdr crypt cscope -doc ethereal fbcon gd \ gif gimpprint gnome gpm gstreamer gtk2 gtkhtml imlib imlib2 \ innodb -java javascript jpeg libg++ libwww mad mbox md5sum \ mikmod mmx motif mozilla mpeg mpeg4 mysql ncurses nvidia \ 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"(Выключение USE-флага) # euse -D 3dfx /etc/make.conf was modified, a backup copy has been placed at /etc/make.conf.euse_backup(/etc/make.conf после выполнения команды) USE="alsa acpi apache2 -arts cups cdr crypt cscope -doc ethereal fbcon gd \ gif gimpprint gnome gpm gstreamer gtk2 gtkhtml imlib imlib2 \ innodb -java javascript jpeg libg++ libwww mad mbox md5sum \ mikmod mmx motif mozilla mpeg mpeg4 mysql ncurses nvidia \ 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"
Этот инструмент предназначен для восстановления зависимостей пакетов Gentoo.
Он просканирует сборочные файлы для поиска пакетов, которые могут перестать
работать в результате обновления пакетов от которых они зависят. Он не только
поможет вам переустановить эти пакеты, но и, в случае если данный пакет не может
больше работать с установленными в настоящее время зависимостями, укажет на
необходимость обновления нерабочего пакета до более свежей версии.
revdep-rebuild переадресует переданные параметры emerge что позволяет вам,
используя параметр
# 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.
Если вам нужно восстановить некоторые пакеты, вы можете запустить