Существует руководство, просто необходимо знать, где это. К этому можно получить доступ с man
команда. Если Вы не уверены, как использовать его, ввести man man
. man
команда очень важна; помните это, даже если Вы забываете все остальное.
Руководство содержит подробную информацию о множестве тем, которые разделены на несколько разделов:
/dev
) и драйверыНотация ls(1)
относится к ls
страница в разделе 1. Считать его тип man 1 ls
или man ls
.
Чтобы постараться не быть сказанным читать руководство, когда Вы зададите вопрос, попробовать man command
, apropos command
, command -?
, command --help
, и несколько поисков Google. Если Вы не понимаете что-то в руководстве, заключаете его в кавычки в Вашем вопросе и пытаетесь объяснить, что Вы не понимаете. Обычно, когда они просят, чтобы Вы прочитали руководство, это - потому что они думают, что это будет более выгодно для Вас, чем простой, неполный ответ. Если Вы не знаете, какие страницы справочника релевантны, спрашивают.
Это - то же имя, apt
просто frontend к dpkg
. Проблема здесь - то, что команды не делают то, что Вы вещь они делают. Как объяснено в man apt-cache
:
pkgnames [prefix]
This command prints the name of each package APT knows. The
optional argument is a prefix match to filter the name list. The
output is suitable for use in a shell tab complete function and the
output is generated extremely quickly. This command is best used
with the --generate option.
Note that a package which APT knows of is not necessarily available
to download, installable or installed, e.g. virtual packages are
also listed in the generated list.
Так, apt-cache pkgnames
списки все пакеты, доступные системе, независимо от того, установлены ли те пакеты или нет.
Если Вы хотите перечислить установленные пакеты только, Вы могли бы использовать dpkg -l
или dpkg-query -l
:
-l, --list [package-name-pattern...]
List packages matching given pattern. If no package-name-pattern
is given, list all packages in /var/lib/dpkg/status, excluding
the ones marked as not-installed (i.e. those which have been
previously purged).
Это означает, что также перечислит те пакеты, которые были удалены, если их конфигурационные файлы все еще присутствуют, т.е. если они не были очищены. Второй столбец dpkg-query -l
вывод является состоянием пакета, которое может быть любым из
Package status:
n = Not-installed
c = Config-files
H = Half-installed
U = Unpacked
F = Half-configured
W = Triggers-awaiting
t = Triggers-pending
i = Installed
Так, для нахождения тех пакетов, которые в настоящее время устанавливаются Вы захотите выбрать тех, состояние которых i
. Сделать это, просто grep
для строк, 1-й символ которых - что-либо и чей второй i
:
dpkg-query -l | grep '^.i'
Можно легко проверить, что две команды отличаются и что apt-cache
возвраты тысячи большего количества результатов, чем dpkg
. Например, в моей системе:
$ dpkg-query -l | grep '^.i' | wc -l
3938
$ apt-cache pkgnames | wc -l
39889
Проблема состоит в том, что необходимо установить 'шаблон' (с кавычками) вместо того, чтобы просто написать имя:
$ dpkg-query -W 'samba'
samba
$ dpkg-query -W 'samba*'
samba
samba-client
samba-common 2:3.6.9-1ubuntu1.1
samba-common-bin 2:3.6.9-1ubuntu1.1
samba-tools
samba4-clients
samba4-common
Вот почему никакой пакет не появляется:
$ dpkg-query -W 'rkhunter'
rkhunter 1.4.0-2
Другие вещи, которые могут работать:
dpkg-query -W '*a'
dpkg-query -W 'a*b*'
dpkg-query -W '?a*'
и т.д.
Нормальная оболочка wildchars позволяется в шаблоне имени пакета. Обратите внимание, что необходимо будет, вероятно, заключить шаблон имени пакета в кавычки, чтобы препятствовать тому, чтобы оболочка выполнила расширение имени файла.