Я использую менеджер пакетов Nix на NixOS . Предположим, я хочу установить пакет, который предоставляет файл libgtk-x11-2.0.so.0
. Как мне найти пакет, который предоставляет этот файл, похожий на другие дистрибутивы GNU / Linux ?
В настоящее время я должен погуглить файл и выяснить, к какому пакету он может принадлежать, и найти соответствующий пакет в репозитории Nix, но мне нужен более идиоматический метод.
package-management
nixos
nix
Миржан Иркегулов
источник
источник
yum
иdnf
в RPMland) позволяют вам сказать «установить файл», они выясняют правильный пакет и устанавливают тот.$ command-not-found foo
). Обратите внимание, что поиск файлов nix (например, с помощью ctags) там не поможет. Вы должны выполнить сборку, чтобы найти то, что она устанавливает.INSTALL
файла пакета (для которого вы хотите создать среду), а именно разделRequirements
/Dependencies
для пакетов, которые вы должны предварительно установить. Тогда ищите пакеты вnixpkgs
. (Другими словами, менеджеры пакетов - это пакеты, а не файлы ...)yum provides '*/bin/grep'
илиdnf provides '*/bin/grep
илиapt-file search 'fprintf.3.gz'
.Ответы:
nix-index - это то, что вам нужно.
Установите и постройте индекс:
Найдите
libgtk-x11-2.0.so.0
:Выход:
Последняя строка говорит, что пакет
gtk+-2.24.31
с путем атрибутаgnome2.gtk
содержит этот файл.источник
Просматривая документацию, не кажется, что есть простой способ сделать это.
С дистрибутивом на основе yum вы можете делать,
yum provides $file
а в apt-get distro вы можете установить apt-file и делать,apt-file $file
но я не вижу эквивалентного вnix-env -q
.источник