Файл требований для apt-get, похож на pip

Мне нравится, как вы можете управлять зависимостями с помощью требований pip. Есть ли что-то подобное в случае apt-get?

http://www.pip-installer.org/en/latest/requirements.html#requirements-file-format


person Vladimir Keleshev    schedule 12.04.2012    source источник
comment
Не могли бы вы привести пример того, что вы имеете в виду?   -  person James Hurford    schedule 12.04.2012
comment
Вы имеете в виду зависимости версий? Если да, то да. Ни один менеджер пакетов не обходится без зависимостей от версий.   -  person Kien Truong    schedule 12.04.2012
comment
Я имел в виду наличие файла requirements.txt для массовой установки пакетов.   -  person Vladimir Keleshev    schedule 12.04.2012
comment
Вы можете создать мета-пакет для массовой установки пакетов. Просто укажите эти пакеты как зависимости метапакета.   -  person Kien Truong    schedule 12.04.2012
comment
Это решение также позволяет добавлять комментарии в файл требований: monolune.com/installing-apt-packages-from-a-requirements-file   -  person Flux    schedule 17.02.2018


Ответы (4)


Ваш вопрос в том, что вы хотите иметь список системных зависимостей в одном файле, чтобы можно было установить его одной командой.

Я не рекомендую включать версию пакета в системные зависимости. В программных зависимостях системы, таких как "build-essential" или "uuid-dev", вам обычно нужна последняя версия пакета. В «жестких зависимостях», таких как python, postgres и т. Д., Обычно версия указывается в имени самого пакета, например «python2.6-dev» или «postgresql-8.4 < / em> ". Другая проблема, с которой вы можете столкнуться при определении точной версии пакета, заключается в том, что, возможно, версия 8.4.11-1 из postgresql-8.4 не будет доступна в репозитории через три месяца или через год, и вы в конечном итоге установит текущую версию в репо.

Пример. Вы можете создать файл с именем "requirements.system" с системными пакетами, которые вам нужны для вашего проекта:

python-virtualenv
python2.6-dev
uuid-dev
python-pip
postgresql-8.4

Затем в файле INSTALL объясните, как устанавливать системные пакеты.

# Install system depencences by running
cat ~/project/install/requirements.system | xargs sudo aptitude install

Мы использовали эту конфигурацию около двух лет, нам приходилось воссоздавать среду с нуля несколько раз, и у нас никогда не было проблем.

person krenel    schedule 12.04.2012
comment
Вы также можете добавить номер версии для пакета аналогично pip, используя package_name=version (python-virtualenv=1.7.1.2-1). Однако это может быть не так полезно, как с pip, потому что зеркала Debian не поддерживают столько старых версий пакетов, сколько репозиторий PyPI. - person C2H5OH; 14.05.2012
comment
Иногда вы хотите указать версию, потому что некоторые dpkg действительно плохи. Я помню, что для memecache или подобного требовалась какая-то устаревшая версия, иначе она не установится. Это угловой случай, поэтому иногда это хорошо. Кроме того, если известно, что ваша система исправна в определенном состоянии, вы хотите воспроизвести это состояние. Если вам нужна последняя версия, стандартный рабочий процесс развертывания заключается в том, что вы создаете новую среду с нуля, используя указанные вами требования (но с последней версией), и тестируете ее. - person CppLearner; 10.01.2013
comment
Не нужен кот: xargs apt-get install <reqs.txt - person arand; 04.08.2014

В работе мы используем формат aptfile. Это просто оболочка bash со встроенными помощниками.

person Jose Diaz-Gonzalez    schedule 26.03.2016
comment
Легко и просто использовать. Есть ли способ использовать aptitude install? - person Abhi; 09.01.2018
comment
@Abhi задает проблему, и, возможно, я смогу это сделать. - person Jose Diaz-Gonzalez; 10.01.2018
comment
Конечно, я подам вопрос !! - person Abhi; 10.01.2018

Обычно я создаю список установленных пакетов с apt list --installed | awk -F/ '{print $1}' | grep -v Listing... > installed_packages.txt.

Объяснение:

  • apt list --installed отображает список установленных пакетов, включая версии
  • awk -F/ '{print $1}' избавляется от версий пакета, это делает файл независимым от вашего дистрибутива (последующая совместимость между Mint, Ubuntu, стабильная версия / тестирование Debian, восходящая ветвь не обязательно)
  • grep -v Listing... избавляется от интерактивного отображения apt (первая строка)
  • все это затем передается в один файл

Затем вы можете установить в другой системе через cat installed_packages.txt | xargs apt install -y, используя каждую строку указанного файла в качестве аргумента для apt.

person mr.pip    schedule 31.03.2021

Поскольку apt принимает ввод от стандартного ввода, самый простой способ сделать это:

$ cat requirement.txt
gcc
cmake

$ apt install < requirement.txt
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
person Pasqo    schedule 25.04.2020
comment
Насколько я могу судить, это точно ничего не делает, точнее, делает то же самое, что и apt install "", и ничего не устанавливает. - person Daniele Procida; 29.11.2020