Continue com o erro quando o apt-get encontrar uma instalação incapaz de localizar o problema do pacote

11

Quando executo o seguinte:

sudo apt-get install vim abcde php5-cli

Ele falha com a seguinte mensagem, que é o comportamento esperado:

E: Não foi possível localizar o pacote abcde`.

Quero instalar vime, mesmo que haja um erro, abcdecontinue a instalar o php5-clipacote. Ou seja, eu quero apt-getcontinuar na lista, mesmo que não consiga encontrar alguns dos pacotes.

Eu tentei:

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

Respostas:

9

Resposta curta: é possível que você realmente não queira fazer isso.

Por que é que? Houve muita discussão sobre essa funcionalidade específica. Um deles está neste relatório de erro (duplicado) e no qual está vinculado.

A discussão no relatório de erros também explica que "--ignore-missing" somente se aplica se houver um problema ao baixar um pacote que, de outra forma, deveria existir pelas informações que o seu'apt-get 'possui. Isso também é explicado aqui e na documentação.

Existe uma solução alternativa?

Se, depois de ler as fontes anteriores, você ainda tiver certeza de que deseja fazer isso, por outro lado, existem opções (subótimas, mas bastante seguras) como a especificada pelo usuário "Aleksandr Levchuk" aqui :

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

Ou, se preferir, uma linha com uma modificação mínima:

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

Se houver muitos pacotes, você pode adicionar -ypara que não seja solicitada confirmação repetidamente:

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

Espero que isto ajude.

user391035
fonte
A propósito, se você é alguém como eu que usa Fish em vez de Bash, primeiro precisa digitar "bash" para alternar entre conchas. Em seguida, copie e cole o comando, pois, por algum motivo, ele não funcionará com o shell Fish. Funciona bem com o Bash.
Ev-
1

Uma maneira de contornar isso é chamar o apt-get uma vez para cada pacote :

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

Ou como uma função

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

install_ignore_fail package1 package2 package3
xjcl
fonte