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
Айзекс

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 ...
Fabby
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.