Использование файла для установки пакетов с помощью apt-get

9

Мне очень удобно устанавливать пакеты на новую машину через файлы пакетов, такие как brewfiles, caskfiles, dockerfiles, package.json и т. Д.

Есть ли альтернатива этому для apt-get, так как я все еще просто использую его
через командную строку с

apt-get install pkg1 pkg2 pkg3…

?

thibmaek
источник
2
Нужно ли это? Вы можете использовать xargs: xargs -P1 apt-get install < list-of-packages.
Муру
@muru ну, я действительно не знаю, как работает xargs (сейчас читаю man), но я не думаю, что это решение для централизации пакетов в одном файле? Мне все равно придется вручную перечислять файлы после <, так как использование .txt файла с тремя пакетами в нем не работает с этой командой (протестировано в Debian)
thibmaek
1
<это оболочка перенаправление. Для нескольких файлов используйте:cat file1 file2 .. | xargs -P1 apt-get install
Muru

Ответы:

13

Как указано в комментариях к вашему вопросу, вы можете создать простой текстовый файл, содержащий packages.txtсписок пакетов для установки:

iceweasel
terminator
vim

и затем выполните следующую команду:

cat packages.txt | xargs sudo apt-get install

xargs используется для передачи имен пакетов из packages.txtфайла в командную строку. Со страницы руководства:

xargs читает элементы из стандартного ввода, разделенные пробелами (которые могут быть защищены двойными или одинарными кавычками или обратной косой чертой) или символами новой строки, и выполняет команду (по умолчанию это / bin / echo) один или несколько раз с последующими начальными аргументами по пунктам, прочитанным из стандартного ввода.

Ортомала Локни
источник
9

Немного улучшив ответ @ ortomala-lokni, вы можете указать файл непосредственно в качестве аргумента xargs:

xargs -a packages.txt sudo apt-get install

При желании вы можете дать xargsна -rвозможность предотвратить apt-getвызов от того , работает вообще , если ваш packages.txtне содержит каких - либо не-пробельных символов.

quazgar
источник
Это может быть особенностью Alpine / BusyBox, но -aаргумент не был задокументирован и не похоже , чтобы работать там: xargs: unrecognized option: a. Вывод моей версииBusyBox v1.27.2 (2017-12-12 10:41:50 GMT) multi-call binary.
Тейлор Эдмистон
Использование принятого ответа привело к прерванному запросу Y / N apt. Используя это сработало. Спасибо!
Хорошо, Летсдотис
1

введите описание изображения здесь

для меня это работает в обоих направлениях, убедитесь, что у вас установлены последние xargs, или иначе проверьте, есть ли у него опция -a или нет с помощью справки (xargs --help)

Чинни Дивакар
источник
5
Этот ответ имеет проблемы доступности: текст в изображениях, не может быть прочитано слепыми людьми.
Ctrl-Alt-Delor
0

Помимо более общих скриптовых решений, вы можете создать пакет deb.

тебе понадобится

  • equivs-build, чтобы построить деб. Деб может содержать только зависимости. Это упрощенный построитель деба.
  • gdebi установить деб.

Это будет работать на всех системах, основанных на Debian (системах, которые используют apt / deb-файлы).

Преимущество работы с файлами deb, в отличие от сценария оболочки, состоит в том, что отменить гораздо проще, можно удалить deb или перенастроить deb и переустановить его (это приведет к тому, что файлы будут добавлено и удалено).

Ctrl-Alt-Делор
источник