Używanie pliku do instalowania pakietów za pomocą apt-get

9

Uważam, że bardzo wygodne jest instalowanie pakietów na nowej maszynie za pomocą plików pakietów, takich jak pliki brewfile, pliki beczek, pliki dockerfiles, package.json itp.

Czy istnieje alternatywa dla apt-get, ponieważ nadal używam go
za pomocą wiersza poleceń z

apt-get install pkg1 pkg2 pkg3…

?

thibmaek
źródło
2
Czy to potrzebuje? Można użyć xargs: xargs -P1 apt-get install < list-of-packages.
muru
@muru cóż, tak naprawdę nie wiem, jak działa xargs (teraz czyta man), ale nie sądzę, że jest to rozwiązanie na scentralizowanie pakietów w jednym pliku? Nadal musiałbym ręcznie wyświetlić listę plików po <, ponieważ użycie pliku .txt z trzema pakietami nie działa z tym poleceniem (testowane na Debianie)
thibmaek
1
<jest powłoka przekierowania. W przypadku wielu plików użyj:cat file1 file2 .. | xargs -P1 apt-get install
muru

Odpowiedzi:

13

Jak określono w komentarzach do twojego pytania, możesz zbudować prosty plik tekstowy o nazwie packages.txt, zawierający listę pakietów do zainstalowania:

iceweasel
terminator
vim

a następnie uruchom następujące polecenie:

cat packages.txt | xargs sudo apt-get install

xargs służy do przekazywania nazw pakietów z packages.txtpliku do wiersza poleceń. Ze strony podręcznika:

xargs odczytuje elementy ze standardowego wejścia, oddzielone spacjami (które można zabezpieczyć podwójnymi lub pojedynczymi cudzysłowami lub ukośnikiem odwrotnym) lub znakami nowej linii, i wykonuje polecenie (domyślnie jest to / bin / echo) jeden lub więcej razy z następującymi argumentami początkowymi według elementów odczytanych ze standardowego wejścia.

Ortomala Lokni
źródło
9

Poprawiając nieco odpowiedź @ ortomala-lokni, możesz podać plik bezpośrednio jako argument do xargs:

xargs -a packages.txt sudo apt-get install

Ewentualnie można dać xargssię -ropcja, aby zapobiec apt-getpołączenia z bycia prowadzony w ogóle jeśli packages.txtnie zawiera żadnych znaków spoza spacji.

quazgar
źródło
Może to być osobliwością Alpine / BusyBox, ale -aarg nie został udokumentowany i nie wydają się działać tam: xargs: unrecognized option: a. Pokazane wyniki mojej wersji toBusyBox v1.27.2 (2017-12-12 10:41:50 GMT) multi-call binary.
Taylor Edmiston
Użycie zaakceptowanej odpowiedzi spowodowało przerwanie zapytania Y / n apt. Korzystanie z tego działało. Dzięki!
Ok Letsdothis,
1

wprowadź opis zdjęcia tutaj

działa dla mnie w obie strony, upewnij się, że masz najnowsze xargs, lub w inny sposób sprawdź, czy ma opcję -a, czy nie z opcją pomocy (xargs --help)

Chinni Diwakar
źródło
5
Ta odpowiedź ma problemy z dostępnością: Tekst w obrazach, nie może być odczytany przez osoby niewidome.
ctrl-alt-delor
0

Oprócz bardziej ogólnych rozwiązań skryptowych możesz utworzyć pakiet deb.

będziesz potrzebować

  • equivs-build, aby zbudować deb. Deb może zawierać tylko zależności. To jest uproszczony kreator debów.
  • gdebi zainstalować deb.

Działa to na wszystkich systemach opartych na Debianie (systemach korzystających z plików apt / deb).

Zaletą robienia tego z plikami deb, w przeciwieństwie do skryptu powłoki, jest to, że o wiele łatwiej jest cofnąć, można odinstalować deb, ponownie skonfigurować deb i ponownie go zainstalować (spowoduje to, że pliki będą dodane i usunięte).

ctrl-alt-delor
źródło