Como posso corrigir um erro 404 ao usar um PPA ou atualizar minhas listas de pacotes?

266

O PPA parece estar constantemente offline. Sempre que eu uso sudo apt-get update, este erro é mostrado:

W: Failed to fetch http://ppa.launchpad.net/ 404  Not Found

Como faço para corrigir esses erros?

Pedro
fonte
Como essa parece ser uma das principais respostas "Falha ao buscar", só quero salientar aqui que isso também pode acontecer com os URLs "parceiros" do Ubuntu no sources.list; verifique seus erros para ver se são esses e tente comentá-los. Eu encontrei esse problema (e solução) atualizando do Quetzal.
Joseph_morris

Respostas:

305

Remoção automatizada

pule para a parte inferior desta resposta para uma maneira com script de remover fontes de software ofensivas para todas as versões do ubuntu anteriores ao Ubuntu 15.04

O que são erros 404

A mensagem de erro 404 ou Não encontrado é um código de resposta padrão HTTP indicando que o cliente conseguiu se comunicar com o servidor, mas o servidor não pôde encontrar o que foi solicitado.

O servidor de hospedagem do site normalmente gera a página "404 - Página não encontrada", quando os usuários tentam seguir um link quebrado ou inoperante.

Quais são as causas desses erros no update-manager

Normalmente, três áreas principais causam esses erros em update-manager

  1. Um usuário acabou de atualizar e reativou uma fonte de software PPA que não existe mais insira a descrição da imagem aqui
  2. Um usuário digitou manualmente uma nova fonte de software incorretamente insira a descrição da imagem aqui
  3. Foi adicionado um PPA, mas o mantenedor excluiu posteriormente alguns / todos os PPA

onde estão essas fontes de software

Os PPAs geralmente são salvos em um dos dois locais

  1. /etc/apt/sources.list
  2. em um arquivo nomeado adequadamente com uma extensão de arquivo .list, /etc/apt/sources.list.d/por exemplowebupd8team-jupiter-natty.list

Esse arquivo de lista geralmente contém:

deb http://ppa.launchpad.net/webupd8team/jupiter/ubuntu oneiric main
# deb-src http://ppa.launchpad.net/webupd8team/jupiter/ubuntu oneiric main

Observe que #na frente de uma linha de texto significa que ele está comentado e não é verificado pelo gerenciador de pacotes.

Como eliminar esses erros

Normalmente, se você executar sudo apt-get updateem um terminal ou clicar no botão de detalhes no Gerenciador de Atualizações após pressionar o botão de atualização, você verá erros como:

insira a descrição da imagem aqui

Se o erro for devido a um PPA - normalmente desmarcar o PPA com o mesmo nome e o URL mostrado na mensagem de erro resolverá isso.

insira a descrição da imagem aqui

Se o erro 404 foi devido a um repositório adicional que foi adicionado /etc/apt/sources.list, é mais fácil adicionar #caracteres ao início da linha para comentar o repositório ofensivo, ou seja,

gksu gedit /etc/apt/sources.list

insira a descrição da imagem aqui

Mais informações

Aqui está um relatório de bug no gerenciador de atualizações para resolver esse problema:

Se você estiver tendo esses problemas sem PPAs, verifique esta pergunta:

liberdade de expressão
fonte
Muito obrigado.
Andrews B Anthony
51

Remoção automatizada de 404 Não encontrados PPA's através de script

Este é um script para remover automaticamente todos os PPA 404 não encontrados. Copie o código abaixo e cole-o em um arquivo e nomeie-o como ppa-remove.

#!/bin/bash
sudo rm /tmp/update.txt; tput setaf 6; echo "Initializing.. Please Wait" 
sudo apt-get update >> /tmp/update.txt 2>&1; awk '( /W:/ && /launchpad/ && /404/ ) { print substr($5,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print $1"/"$2 }' /tmp/awk.txt > /tmp/awk1.txt; sort -u /tmp/awk1.txt > /tmp/awk2.txt
tput sgr0
if [ -s /tmp/awk2.txt ]
then
  tput setaf 1
  printf "PPA's going to be removed\n%s\n" "$(cat /tmp/awk2.txt)"
  tput sgr0
  while read -r line; do echo "sudo add-apt-repository -r ppa:$line"; done < /tmp/awk2.txt > out
  bash out
else
  tput setaf 1
  echo "No PPA's to be removed"
  tput sgr0
fi

Conceda permissão de execução ao script

sudo chmod +x ppa-remove

Copie e cole o ppa-removearquivo no /usr/bindiretório, para que você possa acessá-lo de qualquer lugar.

Uso

sudo ppa-remove

Descrição do script

[ -f /tmp/update.txt ] && sudo rm /tmp/update.txt; tput setaf 6; echo "Initializing.. Please Wait" || echo "No update file"

tput setaf 6 O comando transforma a cor do texto do terminal em verde. Em seguida, ele exibe "Inicializando ..Por favor, aguarde" na cor verde.

sudo apt-get update >> /tmp/update.txt 2>&1; awk '( /W:/ && /launchpad/ && /404/ ) { print substr($5,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print $1"/"$2 }' /tmp/awk.txt > /tmp/awk1.txt; uniq /tmp/awk1.txt > /tmp/awk2.txt
  1. sudo apt-get update >> /tmp/update.txt 2>&1;

    Stdout e stderr do comando sudo apt-get updatesão gravados no arquivo/tmp/update.txt

  2. awk '( /W:/ && /launchpad/ && /404/ ) { print substr($5,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print $1"/"$2 }' /tmp/awk.txt > /tmp/awk1.txt;

Awk procura a linha que consiste em W:, launchpad, 404na /tmp/update.txtfile.If ele descobriu que, em seguida, em que a linha que exibe (stdout) todas as letras a partir da localização 26ª column5.This saída padrão foi redirecionada (escrita) ao /tmp/awk.txtarquivo.

Por exemplo:

W: Failed to fetch http://ppa.launchpad.net/pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages  404  Not Found

5o coloumn - http://ppa.launchpad.net/pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages

nessa quinta coluna, começa com a 26ª pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages

Essa linha acima foi armazenada no /tmp/awk.txtarquivo. Agora, o próximo comando,

awk -F '/' '{ print $1"/"$2 }' /tmp/awk.txt > /tmp/awk1.txt;  

awk findout o column1 e column2 com o delimitador /onde o column1 e column2 são concatenados por /do /tmp/awk.txtarquivo e, em seguida, redireciona (escrito) o stdout para /tmp/awk1.txtarquivar.

Agora o /tmp/awk1.txtarquivo contém a pitti/postgresqllinha.

uniq /tmp/awk1.txt > /tmp/awk2.txt

Se houver duas mesmas linhas, o uniquecomando exibirá apenas uma linha única (stdout). Essa linha única foi gravada em /tmp/awk2.txt Finalmente /tmp/awk2.txtconsiste em nomes exclusivos de PPA.

tput sgr0

Este comando altera a cor do texto do terminal para branco.

Finalmente if, instruções condicionais serão executadas. if [ -s /tmp/awk2.txt ]verifique se o conteúdo do arquivo /tmp/awk2.txt está ou não presente. Se sim, ele pega a primeira linha /tmp/awk2.txte executa o sudo add-apt-repository -r ppa:$linecomando. Ele continua até a última linha.

Se não, significa que não há conteúdo. Por isso, diz "Nenhum PPA a ser removido".

Screenshots

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Avinash Raj
fonte
/ usr / bin / ppa-remove: line 32: erro de sintaxe: final inesperado do arquivo
Shravan40 15/02
21

Você está recebendo esses erros porque seus repositórios PPA não fornecem pacotes para sua distribuição do Ubuntu (ou seja; quantal).

Veja as seguintes capturas de tela:

ppa: petrakis / wdt-main Logotipo do Launchpad

wdt-main

ppa: screenlets / ppa Logotipo do Launchpad

screenlets

Você pode ver que o diretório para quantalestá ausente e, portanto, você está recebendo 404 Not Found Error Messages.

Para se livrar dessas mensagens, você deve remover esses repositórios PPA do seu sistema. Siga esta pergunta sobre como remover PPAs:


Como investigar isso e chegar a essa conclusão?

Estas são as mensagens de erro que você recebe para o wdt-mainPPA:

W:Failed to fetch http://ppa.launchpad.net/petrakis/wdt-main/ubuntu/dists/quantal/main/source/Sources  404  Not Found
, W:Failed to fetch http://ppa.launchpad.net/petrakis/wdt-main/ubuntu/dists/quantal/main/binary-amd64/Packages  404  Not Found
, W:Failed to fetch http://ppa.launchpad.net/petrakis/wdt-main/ubuntu/dists/quantal/main/binary-i386/Packages  404  Not Found

Abra a guia do navegador e abra o link que fornece 404 erros não encontrados. Nesse caso, http://ppa.launchpad.net/petrakis/vá mais fundo conforme o link que fornece erros. Você seria capaz de ver qual é o problema real.

Aditya
fonte
17

O mais provável é que o PPA não seja mais mantido e precise ser removido. Você pode fazer isso usando:

sudo rm /etc/apt/sources.list.d/ppaname-ppa-$(lsb_release -sc).list*
Braiam
fonte
3
isso apenas salvou uma pergunta duplicada de ser postada .. Eu tinha o corpo do meu Q pronto e assim que comecei a digitar meu título encontrei o link .. por que eles não mantêm toda a lista em um lugar! Há alguns listados na /etc/apt/sources.listonde fiz verificar, mas não sabia que eu tinha que olhar em /etc/apt/sources.list.d/também .. obrigado ..
precisa
isso e, em seguida, adicionar o novo PPA adequado acabou sendo a melhor solução (apenas funcionando) para mim.
Markus-Tharkûn
4

Escolha Repositório Mais Antigo

Se você realmente precisa dos pacotes desse repositório, pode usar os espelhos de versões mais antigas.

No entanto, observe que nem todas as versões mais antigas são compatíveis com versões anteriores ; alguns deles causam conflitos com o repositório de pacotes principal.

A única coisa que você pode fazer quando estiver em conflito é construir a partir da fonte ou aguardar até que o provedor libere o repositório para sua versão do Ubuntu. Não sabemos exatamente quando os provedores de pacotes lançarão o pacote para a nossa versão, então você é o responsável por verificar o repositório do seu lançamento.

Isso pode ser usado com qualquer repositório baseado no Debian. No entanto, não há garantia de que isso será bem-sucedido.

Passos

  1. Faça o normal sudo apt updatedepois de adicionar o PPA / repositório. Você pode perceber que existem 404 erros durante a atualização; apenas ignore isso. Erro 404
  2. Abra o diretório do repositório que causa erro 404 no seu navegador; neste caso é https://dl.winehq.org/wine-builds/ubuntu. Geralmente, os releases disponíveis estão localizados em dists/. Espelhos
  3. Depois de localizá-lo, abra Software e atualizações e substitua o nome do seu lançamento pelo lançamento disponível; de preferência o mais recente ou o LTS. Substitua a seção 'Distribuição' nos espelhos binários e do código-fonte. Nesse caso, estou substituindo bionicpor artful. insira a descrição da imagem aqui
  4. Faça de sudo apt updatenovo.
  5. Você Terminou! Agora você não possui mais erros 404 ao atualizar suas listas de pacotes. insira a descrição da imagem aqui
  6. Quando os pacotes da sua versão do Ubuntu forem lançados, repita as etapas 3 e 4 substituindo a seção 'Distribuição' pelo seu nome de distribuição.
Aryo Adhi
fonte
2

Note que isso já aconteceu comigo e eu estava fora dessas situações. E também funcionou para um amigo meu. Mesmo não sendo capaz de explicar o porquê, há algo que resolveu esse problema:

  1. Desative todos os seus PPAs;
  2. Executar a sudo apt-get updatepartir do terminal;
  3. Habilite seus PPAs novamente;
  4. Corra sudo apt-get update;

E de repente funcionou. Não me pergunte o porquê.

Danilo
fonte
Não fez diferença para mim. Ainda 404s.
Kwoxer
Desabilitei alguns PPAs indesejados e tentei sudo apt-get updatee funcionou perfeitamente.
Shashanth #
1

Se você estiver recebendo um erro 404 ao tentar obter arquivos de segurança ou do sistema de um repositório oficial (não um PPA), poderá escolher um espelho diferente para resolver esse problema.

Você também pode:

A) determine um manualmente revisando esta lista e escolhendo o espelho mais atual. (você pode levar em consideração outros fatores, como distância e largura de banda) ou

B) Escolha um automaticamente.

De qualquer forma, você pode começar com o aplicativo Software & Updates, como mostrado abaixo: Em seguida, selecione Download de seguido de Outro. Em seguida, você pode escolher manualmente o espelho de sua escolha na lista ou clicar no botão Selecionar melhor servidor, que executará alguns testes e escolherá o melhor servidor para você, dependendo das condições atuais.

SnU

Elder Geek
fonte