Вопрос или проблема
Как мне перечислить все пакеты, установленные через Guix? На Ubuntu это можно сделать с помощью dpkg -l
.
guix package --list-installed
(guix package -I
) является действительным ответом для перечисления установленных пакетов на любой дистрибутив Linux с помощью менеджера пакетов guix
.
Но это не эквивалент dpkg -l
. Почему?
dpkg -l
перечисляет все установленные пакеты в системе… guix
не может получить информацию о пакетах, установленных через apt
, dpkg
…, доступны только пакеты, установленные самим guix
.
На Guix System (ранее известной как GuixSD)
GuixSD поставляется с предустановленными пакетами; в дополнение к guix package --list-installed
, для перечисления пакетов на уровне системы нужно установить опцию --profile
:
guix package --list-installed --profile=/run/current-system/profile |awk '{print $1}'
Например:
$ guix package --list-installed=zile
$
Не возвращает ничего.
Но:
$ guix package --list-installed --profile=/run/current-system/profile |awk '/zile/ {print $1,$2}'
zile 2.4.14
Управление пакетами (по методам emacs):
Вы можете использовать
guix package --list-installed
чтобы перечислить все установленные пакеты. Добавьте | grep name
в конце, чтобы искать “name” в этом списке.
Другие ответы верны относительно того, как перечислить пакеты, установленные с помощью guix
в пользовательских или системных профилях, но есть и другие пакеты, которые установлены для удовлетворения зависимостей. Такие пакеты не перечисляются с помощью guix package
, но они установлены в хранилище.
Для сравнения, dpkg -l
перечисляет все установленные пакеты, были они установлены специально или автоматически только для удовлетворения зависимости. Я сам искал подобный список, сначала просто для общего понимания, а позже, когда хотел проверить, что пакет драйвера присутствует, хотя я не мог сказать по этому, используется ли такой пакет драйвера.
Поскольку все пакеты установлены в хранилище, можно посмотреть, какие каталоги присутствуют в /gnu/store
, чтобы определить, какие пакеты были установлены. Для себя я придумал следующую команду, которая находит директории сразу в /gnu/store
с дефисом в их именах, затем обрезает часть перед первым дефисом, сортирует их в алфавитном порядке и удаляет дубликаты. Это ближайшее к списку установленных пакетов, что я мог получить на данный момент.
$ find /gnu/store/ -maxdepth 1 -type d -iname '*-*' | cut -d '-' -f 2- | sort | uniq
Конечно, это отличная функция Guix — держать все это скрытым и позволять пользователю беспокоиться только о пакетах, отображаемых с помощью guix package --list-installed
.
Ответ или решение
Чтобы получить список всех пакетов, установленных с помощью Guix, используйте следующую команду:
guix package --list-installed
Эта команда предоставляет вам информацию о пакетах, установленных через пакетный менеджер Guix. Однако важно понимать, что это не так же, как dpkg -l
в системе Ubuntu или Debian, который показывает все пакеты, установленные в системе, независимо от способа их установки.
Потенциальные ограничения команды guix package --list-installed
Это связано с тем, что Guix может управлять только пакетами, установленными непосредственно через него. В то время как dpkg -l
отображает все пакеты, включая те, которые были установлены автоматически как зависимости для других пакетов, Guix не предоставляет такой же возможности.
Список системных пакетов в Guix System
Если вы используете Guix System (ранее известный как GuixSD), некоторые пакеты устанавливаются по умолчанию при первой настройке системы. Чтобы получить список установленных системных пакетов, вы можете дополнительно воспользоваться опцией --profile
. Например:
guix package --list-installed --profile=/run/current-system/profile | awk '{print $1}'
Эта команда покажет вам системные пакеты, установленные в текущем окружении.
Поиск конкретного пакета
Если вам нужно проверить, установлен ли конкретный пакет, например zile
, вы можете использовать следующую команду:
guix package --list-installed --profile=/run/current-system/profile | awk '/zile/ {print $1, $2}'
Установка зависимостей и доступ к хранилищу
Следует помнить, что некоторые пакеты могут быть установлены для удовлетворения зависимостей и не отображаются в результатах guix package --list-installed
. Эти пакеты все равно находятся в хранилище, поэтому вы можете выполнить следующую команду, чтобы узнать, какие пакеты установлены в /gnu/store
:
find /gnu/store/ -maxdepth 1 -type d -iname '*-*' | cut -d '-' -f 2- | sort | uniq
Эта команда поможет вам увидеть список всех пакетов, включая те, которые могут быть установлены как зависимости, что весьма полезно для более глубокого понимания системы.
Заключение
Guix предлагает гибкий и мощный способ управления пакетами, хотя и имеет свои ограничения по сравнению с другими пакетными менеджерами. Используйте указанные команды для получения необходимой информации о пакетах и для эффективного управления вашей системой.