web-dev-qa-db-ja.com

PPAの使用時またはパッケージリストの更新時の404エラーを修正するにはどうすればよいですか?

PPAは常にオフラインのようです。 Sudo apt-get updateを使用するたびに、このエラーが表示されます。

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

これらのエラーを修正するにはどうすればよいですか?

264
Pedro

自動化された削除

ubuntu 15.04より前のすべてのubuntuバージョンの問題のあるソフトウェアソースを削除するスクリプト化された方法については、この回答の最後までスキップしてください

404エラーとは

404またはNot Foundエラーメッセージは、クライアントがサーバーと通信できたが、サーバーが要求されたものを見つけることができなかったことを示すHTTP標準応答コードです。

ユーザーが壊れたリンクまたはデッドリンクをたどろうとすると、Webサイトホスティングサーバーは通常「404-ページが見つかりません」Webページを生成します。

Update-managerでのこれらのエラーの原因は何ですか

通常、3つの主要な領域がupdate-managerでこれらのエラーを引き起こします

  1. ユーザーがアップグレードしたばかりで、存在しないPPAソフトウェアソースを再度有効にしました enter image description here
  2. ユーザーが新しいソフトウェアソースを誤って手動で入力した enter image description here
  3. PPAが追加されましたが、その後メンテナーがPPAの一部またはすべてを削除しました

これらのソフトウェアソースはどこですか

PPAは通常、2つの場所のいずれかに保存されます

  1. /etc/apt/sources.list
  2. /etc/apt/sources.list.d/内の.listファイル拡張子を持つ適切な名前のファイル内webupd8team-jupiter-natty.list

通常、このリストファイルには以下が含まれます。

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

テキスト行の先頭にある#は、コメント化されており、パッケージマネージャーによってチェックされないことを意味します。

これらのエラーを排除する方法

通常、端末からSudo apt-get updateを実行するか、更新ボタンを押した後にUpdate Managerの詳細ボタンをクリックすると、次のようなエラーが表示されます。

enter image description here

エラーの原因がPPAの場合-通常、エラーメッセージに示されているURLで同様の名前のPPAのチェックを外すと、これが解決されます。

enter image description here

404エラーの原因が/etc/apt/sources.listに追加された追加のリポジトリにある場合、#文字を行の先頭に追加して、問題のあるリポジトリをコメントアウトする方が簡単です。

gksu gedit /etc/apt/sources.list

enter image description here

詳細情報

この問題を解決するためのアップデートマネージャーに関するバグレポートを次に示します。

PPAなしでこれらの問題が発生している場合は、次の質問を確認してください。

304
fossfreedom

スクリプトを使用した404 Not found PPAの自動削除

これは、すべての404 Not found PPAを自動的に削除するスクリプトです。以下のコードをコピーしてファイルに貼り付け、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

スクリプトに実行許可を与える

Sudo chmod +x ppa-remove

ppa-removeファイルをコピーして/usr/binディレクトリに貼り付けます。どこからでもアクセスできるようにします。

使用法

Sudo ppa-remove

スクリプトの説明

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

tput setaf 6コマンドは、端末のテキストの色を緑色に変えます。そして、緑色で「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; uniq /tmp/awk1.txt > /tmp/awk2.txt
  1. Sudo apt-get update >> /tmp/update.txt 2>&1;

    コマンドSudo apt-get updateのstdoutとstderrの両方がファイル/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は、W:ファイル内の404launchpad/tmp/update.txtで構成される行を検索します。その行が見つかった場合、その行にすべての文字を表示(stdout)します。 column5の26番目の場所から開始します。この標準出力は/tmp/awk.txtfileにリダイレクト(書き込み)されました。

例えば:

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

5番目の列-http://ppa.launchpad.net/pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages

その5番目の列は26番目の文字から始まります-pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages

上記の行は/tmp/awk.txtファイルに保存されました。次のコマンドでは、

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

awkは、デリミタ/を使用してcolumn1とcolumn2を見つけ出します。column1とcolumn2は、/ファイルからの/tmp/awk.txtによって連結され、stdoutを/tmp/awk1.txtファイルにリダイレクト(書き込み)します。 。

/tmp/awk1.txtファイルにはpitti/postgresql行が含まれるようになりました。

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

同じ行が2行ある場合、uniqueコマンドは(stdout)単一行のみを表示します。その単一行は/tmp/awk2.txtに書き込まれ、最後に/tmp/awk2.txtは一意のPPA名で構成されます。

tput sgr0

このコマンドは、端末テキストの色を白に変更します。

最後に、if条件ステートメントが実行されます。 if [ -s /tmp/awk2.txt ] /tmp/awk2.txtファイルの内容の有無を確認します。ある場合は、/tmp/awk2.txtから最初の行を取得し、Sudo add-apt-repository -r ppa:$lineコマンドを実行します。最後の行。

いいえの場合、コンテンツがないことを意味します。したがって、「PPAを削除する必要はありません」と表示されます。

スクリーンショット

enter image description here

enter image description here

50
Avinash Raj

これらのエラーは、PPAリポジトリがUbuntuのディストリビューション用のパッケージを提供していないためです(つまり、quantal)。

次のスクリーンショットをご覧ください。

ppa:petrakis/wdt-main Launchpad logo

wdt-main

ppa:screenlets/ppa Launchpad logo

screenlets

quantalのディレクトリが欠落しているため、 404 Not Found Error Messages を取得していることがわかります。

これらのメッセージを取り除くには、これらのPPAリポジトリをシステムから削除する必要があります。 PPAを削除する方法に関する次の質問に従ってください。


これを調査してこの結論に至る方法は?

これらは、wdt-main PPAに関して表示されるエラーメッセージです。

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

ブラウザのタブを開き、404 Not Foundエラーを表示するリンクを開きます。この場合はhttp://ppa.launchpad.net/petrakis/で、エラーが発生するリンクごとに深くなります。実際の問題が何であるかを見ることができます。

21
Aditya

最も可能性が高いのは、PPAのメンテナンスが終了し、削除する必要があることです。これを行うには、次を使用します。

Sudo rm /etc/apt/sources.list.d/ppaname-ppa-$(lsb_release -sc).list*
17
Braiam

古いリポジトリを選択

thatリポジトリのパッケージが本当に必要な場合は、古いリリースのミラーを使用できます。

ただし、すべての古いリリースが 後方互換性 ;ではないことに注意してください。それらのいくつかは、メインパッケージリポジトリと競合します。

競合する場合にできる唯一のことは、ソースからビルドするか、プロバイダーがUbuntuバージョンのリポジトリをリリースするまで待つことです。パッケージプロバイダーがバージョンのパッケージをいつリリースするか正確にわかりません。リリース。

これは、任意のDebianベースのリポジトリで使用できます。ただし、これが成功する保証はありません。

手順

  1. PPA /リポジトリを追加した後、通常のSudo apt updateを実行します。更新中に404エラーが発生していることがわかります。これを無視してください。 404 Error
  2. ブラウザで404エラーの原因となるリポジトリディレクトリを開きます。この場合、https://dl.winehq.org/wine-builds/ubuntuです。通常、利用可能なリリースはdists/にあります。 Mirrors
  3. 見つけたら、Software&Updatesを開き、リリース名を使用可能なリリースに置き換えます。できれば最新またはLTSのものを使用してください。バイナリおよびソースコードミラーの「配布」セクションを置き換えます。この場合、bionicartfulに置き換えます。 enter image description here
  4. Sudo apt updateを再度実行します。
  5. 完了です!これで、パッケージリストの更新中に404エラーがなくなりました。 enter image description here
  6. Ubuntuバージョンのパッケージがリリースされたら、「Distribution」セクションをディストリビューション名に置き換えて、手順3と4を繰り返します。
4
Aryo Adhi

それはすでに私に起こり、私はこれらの状況から外れていたことに注意してください。そして、それは私の友人のためにも働きました。理由を説明できなくても、その問題を解決したものがあります。

  1. すべてのPPAを無効にします。
  2. ターミナルからSudo apt-get updateを実行します。
  3. PPAを再び有効にします。
  4. Sudo apt-get updateを実行します;

そして突然動作しました。私に理由を聞かないで。

2
Danilo

セキュリティまたはシステムファイルを(PPAではなく)公式リポジトリから取得しようとして404エラーが表示される場合は、別のミラーを選択してこの問題を解決できます。

次のいずれかが可能です。

A)このリスト を確認し、最新のミラーを選択して手動で決定します。 (距離や帯域幅などの他の要因を考慮することをお勧めします)または

B)いずれかを自動的に選択します。

どちらの方法でも、以下に示すようにSoftware&Updatesアプリケーションから開始できます。次に、[ダウンロード元]の後に[その他]を選択します。次に、リストから選択したミラーを手動で選択するか、いくつかのテストを実行して現在の条件に応じて最適なサーバーを選択する[最適なサーバーを選択]ボタンをクリックします。

SnU

1
Elder Geek

すべての可能な答えを試してみましたが、唯一の解決策は、 buntu 16.04 Xenial default /etc/apt/sources.list ファイルを/etc/apt/sources.listにコピーすることでした。

出典: https://Gist.github.com/rohitrawat/60a04e6ebe4a9ec1203eac3a11d4afc1

それは私のLinuxを救った。

1
Damjan Pavlica