Apt-get встановити декілька пакетів без зупинки


25

Я створюю скрипт bash, який встановлює різні пакети за допомогою apt-get install. Однак я помічаю, що якщо є рядок, який говорить:

sudo apt-get install package1 package2 package3

і жоден із пакунків не знайдений, жоден з інших не буде встановлений. Як змусити його продовжувати роботу, навіть якщо він не може знайти один із пакетів?

Заздалегідь спасибі.

Відповіді:


18

Я пропоную apt-getваріант

sudo apt-get --ignore-missing install $list_of_packages

але пам’ятайте, що відсутні залежності не можна ігнорувати, і навіть якщо ви використовуєте, --forceви можете отримати зламану систему.


1
Зауважте, що --ignore-missingлише проблема вирішення проблеми з завантаженням. Дивіться superuser.com/a/844627/106974
IsaacS

3
Це насправді не працює.
leoheck

9
for i in package1 package2 package3; do
  sudo apt-get install $i
done

5
Трохи жорстока ефективність роботи (дерево залежностей від пакета будується з нуля для кожної ітерації), але має працювати нормально.
Серж Брославський

Як нагадав @blueskin, використання цього -yпараметра було б добре, якщо ви не хочете з ним взаємодіяти, особливо при встановленні масивного списку пакунків.
pd12

0

Встановіть кожен пакет як окрему команду, а не як одну команду, таким чином, якщо один не вдасться встановити через не знайдену або іншу помилку, це не зупинить іншу установку. Для якого ви можете використовувати цикл "for", як показано нижче. Крім того, не забудьте використовувати -yпрапор, якщо встановлюєте багато пакетів, щоб уникнути хаосу введення тексту yesдля кожного з них.

INSTALL_PKGS="pk1 pk2 pk3 pk4 pk5 ... and so ... on ..pk_gogol"
for i in $INSTALL_PKGS; do
  sudo apt-get install -y $i
done

@Fabby Я відредагував текст, щоб зробити його явним для вашого задоволення
blueskin

1
Це більше схоже на редагування існуючої відповіді, ніж на нову відповідь. ¯ \ _ (ツ) _ / ¯ Вибачте! -1 ...
Фабі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.