Continuer en cas d'erreur lorsque apt-get rencontre une installation incapable de localiser le problème du package

11

Lorsque je lance ce qui suit:

sudo apt-get install vim abcde php5-cli

Il échoue avec le message suivant qui est le comportement attendu:

E: Impossible de localiser le paquet abcde`.

Je veux l'installer vimet même s'il y a une erreur, abcdecontinuez simplement d'installer le php5-clipackage. Ce qui signifie que je veux apt-getcontinuer dans la liste, même s'il ne trouve pas certains des packages.

J'ai essayé:

sudo apt-get install --ignore-missing vim abcde php5-cli
tbenz9
la source

Réponses:

9

Réponse courte: il est possible que vous ne souhaitiez pas faire cela.

Pourquoi donc? Il y a eu beaucoup de discussions sur cette fonctionnalité particulière. Un tel est dans ce rapport de bogue (en double) et celui auquel il est lié.

La discussion sur le rapport de bogue explique également que "--ignore-missing" ne s'applique que s'il y a un problème de téléchargement d'un paquet qui devrait autrement exister d'après les informations dont dispose votre "get-get". Ceci est également expliqué ici et dans la documentation.

Y at-il un travail autour?

Si après avoir lu les sources précédentes, vous êtes toujours sûr de vouloir le faire, alors, d'autre part, il existe des options (sous-optimales mais plutôt sûres) comme celle spécifiée par l'utilisateur "Aleksandr Levchuk" ici :

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

Ou si vous préférez alors un monoplace avec une modification minimale:

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

S'il y a beaucoup de packages, vous pouvez en ajouter -yafin de ne pas demander de confirmation à plusieurs reprises:

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

Ou:

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

J'espère que cela t'aides.

user391035
la source
Par ailleurs, si vous êtes quelqu'un comme moi qui utilise Fish au lieu de Bash, vous devrez d'abord taper "bash" pour changer de shell. Ensuite, copiez et collez la commande car pour une raison quelconque, cela ne fonctionnera pas avec le shell Fish. Fonctionne bien avec Bash.
Ev-
1

Pour contourner ce problème, vous pouvez appeler apt-get une fois pour chaque package :

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

Ou en fonction

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

install_ignore_fail package1 package2 package3
xjcl
la source