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 45% complete.
Outdated translations are marked like this.


Утилиты q — коллекция небольших и быстрых утилит Portage, написанных на C.

Они предоставляют более быстрые, но более ограниченные версии их аналогов в gentoolkit.

Утилиты q не создавались для замены gentoolkit. Они не учитывают файлы eclasses и не предоставляют утилит типа revdep-rebuild или 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

Использование

Вызов

Полный список приложений пакета app-portage/portage-utils можно просмотреть с помощью команды man q или q --help. Обратитесь к man-странице по каждой описываемой утилите, так как это руководство является только краткой справкой по наиболее полезным функциям и не включает полную информацию по каждому приложению.

Для просмотра доступных апплетов с кратким описанием их назначения используйте q --help:

user $q --help
Usage: q <applet> <args>  : invoke a portage utility applet
  
Currently defined applets:
        q <applet> <args> : virtual applet
    qatom <pkg>           : split atom strings
   qcache <action> <args> : search the metadata cache
   qcheck <pkgname>       : verify integrity of installed packages
 qdepends <pkgname>       : show dependency info
    qfile <filename>      : list all pkgs owning files
    qgrep <misc args>     : grep in ebuilds
    qlist <pkgname>       : list files owned by pkgname
     qlop <pkgname>       : emerge log analyzer
   qmerge <pkgnames>      : fetch and merge binary package
     qpkg <misc args>     : manipulate Gentoo binpkgs
  qsearch <regex>         : search pkgname/desc
    qsize <pkgname>       : calculate size usage
    qtbz2 <misc args>     : manipulate tbz2 packages
     quse <useflag>       : find pkgs using useflags
    qxpak <misc args>     : manipulate xpak archives
  
Options: -[irmM:vqChV]
  -i, --install        * Install symlinks for applets
  -r, --reinitialize   * Reinitialize ebuild cache
  -m, --metacache      * Reinitialize metadata cache
  -M, --modpath  <arg> * Module path
  -v, --verbose        * Make a lot of noise
  -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

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

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 находит пакет, к которому относится файл:

Example one:

user $qfile /etc/fonts/fonts.conf
media-libs/fontconfig (/etc/fonts/fonts.conf)

Example two:

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

Здесь будет сообщено обо всех файлах, измененных после установки. Если приложение сообщает о файлах конфигурации, отредактированных вручную после установки, то не о чем беспокоиться.

To check the integrity of all installed packages, enter:

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.

Также существует приложение, позволяющее перечислить все пакеты, которые зависят от какого-то другого пакета. Это выполняется использованием команды qdepend. Используйте опцию -a, чтобы показать всю информацию о переменных DEPEND, RDEPEND и PDEPEND для пакета.

user $qdepends -a pygtk
 * DEPEND
dev-python/pygtk-2.8.2: >=dev-lang/python-2.3 >=x11-libs/gtk+-2.8.0
>=dev-libs/glib-2.8.0 >=x11-libs/pango-1.10.0 >=dev-libs/atk-1.8.0
>=gnome-base/libglade-2.5.0 >=dev-python/pycairo-0.9.0 dev-python/numeric
virtual/opengl dev-python/pyopengl >=x11-libs/gtkglarea-1.99
>=dev-util/pkgconfig-0.9 sys-devel/patch
 * RDEPEND
dev-python/pygtk-2.8.2: >=dev-lang/python-2.3 >=x11-libs/gtk+-2.8.0
>=dev-libs/glib-2.8.0 >=x11-libs/pango-1.10.0 >=dev-libs/atk-1.8.0
>=gnome-base/libglade-2.5.0 >=dev-python/pycairo-0.9.0 dev-python/numeric
virtual/opengl dev-python/pyopengl >=x11-libs/gtkglarea-1.99
 * PDEPEND

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=

Перечисление всех пакетов (установленных или неустановленных), зависящих от некоторого другого пакета (qgrep)

Апплет q можно использовать, чтобы найти ebuild, в которых упомянуто искомое имя ebuild (в примере ниже используется "libechonest") с очень большой скоростью:

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)

Команда qlist выдает список всех файлов, принадлежащих какому-либо файлу ebuild.

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

Поиск пакетов, использующих некоторый USE-флаг (quse)

Список используемых USE-флагов выполняется с помощью команды quse, которую нужно запустить c root привилегиями. Может потребоваться некоторое время для первоначального создания или обновления кэша файлов ebuild.

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)

Чтобы определить размер пакета, используйте приложение qsize:

user $qsize vim-core
app-editors/vim-core: 1846 files, 175 non-files, 28.5M 
[...]

Поиск в дереве Portage (qsearch)

Одним из наиболее мощных инструментов пакета app-portage/portage-utils является qsearch. Этот инструмент позволяет выполнить намного более быстрый поиск в дереве Portage, чем при использовании команды emerge -s.

Ниже приведено несколько примеров его использования:

user $qsearch terminus
media-fonts/terminus-font: A clean fixed font for the console and X11

Домашнюю страницу пакета можно определить с использованием опции -H:

user $qsearch -H terminus
media-fonts/terminus-font: http://terminus-font.sourceforge.net/

Рассмотрим еще один пример, поищем jabber-клиент:

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)

Также имеется инструмент для извлечения полезной информации из файла emerge.log. Он называется qlop и может быть полезен для оценки времени компиляции пакета или для его сравнения со временем компиляции на других системах. Также с его помощью можно посмотреть, что компилируется в данный момент и сколько времени, скорее всего, на это понадобится, что удобно при работе в консоли и при отсутствии других средств для проверки.

Чтобы узнать, сколько времени обычно требует компиляция пакета dev-lang/perl:

user $qlop -a perl
dev-lang/perl: 7′12″ average for 3 merges

Чтобы увидеть, что устанавливается в настоящий момент, и как долго процесс уже работает:

user $qlop -rt
2019-12-31T03:07:16 >>> net-fs/samba: 6′19″... (82 of 85) ETA: 23s

Install binary package (qmerge)

qmerge can quickly install binary packages (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.