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


266

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

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

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


これは「フェッチに失敗しました」という主な回答の1つと思われるため、sources.list内のUbuntuの「パートナー」URLでもこの問題が発生する可能性があることを指摘しておきます。エラーをチェックして、それらがエラーかどうかを確認し、コメント化してみてください。私はその問題(および解決策)に出会って、ケツァールからアップグレードしました。
joseph_morris

回答:


305

自動化された削除

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

404エラーとは

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

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

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

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

  1. ユーザーがアップグレードしたばかりで、存在しないPPAソフトウェアソースを再度有効にしました ここに画像の説明を入力してください
  2. ユーザーが新しいソフトウェアソースを誤って手動で入力した ここに画像の説明を入力してください
  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の詳細ボタンをクリックすると、次のようなエラーが表示されます。

ここに画像の説明を入力してください

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

ここに画像の説明を入力してください

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

gksu gedit /etc/apt/sources.list

ここに画像の説明を入力してください

詳細情報

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

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


どうもありがとうございます。
アンドリュース・B・アンソニー

51

スクリプトを介した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;

    コマンドのstdoutとstderrの両方sudo apt-get updateがファイルに書き込まれます/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:launchpad404/tmp/update.txtfile.Ifそれは、その行では、標準出力をリダイレクトしcolumn5.Thisにおける26の位置から始まる(STDOUT)すべての文字を表示することが見出された(書き込まれた)/tmp/awk.txtファイル。

例えば:

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単一のラインonly.Thatコマンドが表示されます(標準出力)一行がために書かれた/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を削除する必要はありません」と表示されます。

スクリーンショット

ここに画像の説明を入力してください

ここに画像の説明を入力してください


/ usr / bin / ppa-remove:行32:構文エラー:ファイルの予期しない終了
-Shravan40

21

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

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

ppa:petrakis / wdt-main ランチパッドのロゴ

wdt-main

ppa:screenlets / ppa ランチパッドのロゴ

スクリーンレット

のディレクトリquantalが見つからないことがわかります404 Not Found Error Messages

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


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

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

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


17

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

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

3
これにより、重複した質問が投稿されないようになりました。Qの本文を用意し、タイトルを入力し始めたときに、リンクを見つけましたいくつかに記載されているがあり/etc/apt/sources.list、私がチェックしたところが、私は見ていた知らなかった/etc/apt/sources.list.d/...あまりにも感謝...
正確な

これと適切な新しいPPAを追加することが、私にとって最良の(唯一の機能する)ソリューションであることがわかりました。
マルクス・タルクン

4

古いリポジトリを選択

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

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

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

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

手順

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

2

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

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

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


私には違いはありません。まだ404。
kwoxer

不要なPPAの一部を無効にして、試してみましたがsudo apt-get update、完全に機能しました。
Shashanth

1

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

次のいずれかを実行できます。

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

B)自動的に選択してください。

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

SnU


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.