Продовжуйте помилку, коли apt-get стикається з установкою, не в змозі знайти проблему пакета


11

Коли я запускаю таке:

sudo apt-get install vim abcde php5-cli

Він не дає наступного повідомлення про очікувану поведінку:

E: Неможливо знайти пакет abcde`.

Я хочу, щоб він встановився, vimі навіть якщо виникла помилка abcdeпросто продовжуйте встановлювати php5-cliпакет. Це означає, що я хочу apt-getпродовжити список, навіть якщо він не може знайти деякі пакети.

Я спробував:

sudo apt-get install --ignore-missing vim abcde php5-cli

Відповіді:


9

Коротка відповідь: Можливо, ви насправді цього не хочете робити.

Чому так? Про цю функціональність було багато дискусій. Одне з таких є у цьому (дублікатному) звіті про помилку та тому, до якого воно пов’язане.

Дискусія у звіті про помилку також пояснює, що "--ignore-missing" застосовується лише у тому випадку, якщо виникає проблема із завантаженням пакета, який інакше повинен існувати за інформацією, яку має ваше "get-get". Це також пояснено тут і в документації.

Чи існує рішення?

Якщо після прочитання попередніх джерел ви все ще дуже впевнені , що хочете зробити це , то, з іншого боку, є (неоптимальні , але досить безпечні) варіанту , як від зазначеного користувача «Олександр Левчук» тут :

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

Або якщо ви віддаєте перевагу, тоді однолінійний з мінімальною модифікацією:

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

Якщо пакетів багато, ви можете додати, -yщоб він не просив підтвердження повторно:

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

Або:

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

Сподіваюсь, це допомагає.


До речі, якщо ви такий, як я, хто використовує Fish замість Bash, спочатку вам потрібно буде набрати "bash" для перемикання снарядів. Потім скопіюйте та вставте команду, оскільки з якихось причин вона не працюватиме оболонкою Fish. Добре працює з Bash.
Ev-

1

Один із способів обійти це - викликати apt-get один раз для кожного пакету :

echo package1 package2 package3 | xargs -n 1 sudo apt-get install -y

Або як функція

function install_ignore_fail { echo "$*" | xargs -n 1 sudo apt-get install -y; }

install_ignore_fail package1 package2 package3
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.