【Linux : Debian】apt-get update でエラーが出た時の対策

【Linux : Debian】apt-get update でエラーが出た時の対策 Linux
スポンサーリンク

みなさん、こんにちは。

今回は、Debianを使っていたら、apt-get でエラーが出たので、原因と解決方法をメモ程度ですが、紹介したいと思います。

今回のエラーは、Debianだけでなく、UbuntuやRaspbianで発生しているエラー事象なので、参考になればいいと思います。

使用した環境

ゲストOS:Debian9
ホストOS:Windows10
仮想環境:VirtualBox

今回の環境はWindows10にVirtualBoxをインストールして、仮想環境上にDebianを構築しました。

起きた症状

実行したコマンド

エラー:

このエラーに対して実施したこと

最初は接続元のIPに原因があるかと思っていましたが、どうやら違うらしいです。

Releaseファイルってなにするもの?

今回は、Releaseファイルがなんちゃらとか言われてしまった。そもそもReleaseファイルは、通常アーカイブに必ず存在するものです。このファイルがあることによって、書き換え等を防止し正確なパッケージをインストールすることができる。そのため、アーカイブに署名のないReleaseファイルがある場合や、Releaseファイルが存在しない場合に apt-get updateを行うと、APTがダウンロード拒否をするようにデォルトで設定されているそうです。Releaseファイルは安全にパッケージをインストールするために存在するファイルになります。(この内容はマニュアルにも記載されています。)

今回のエラーの原因は?

E: リポジトリ http://download.OOOOOO.com/debian stretch Release には Release ファイルがなくなっています。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
このエラーは、「debian stretchのバージョンのリポジトリを参照して失敗しており、Debian stretchにそのようなバージョンは存在しません。」ということだそうです。
このエラーの発生原因は、以下の通りです。
Debianで標準的に提供している更新サイトにアクセスできず、更新情報を入手できずエラーが発生している。

Debianだけでなく、多くのディストリビューションは、パッケージ更新するために必要なミラーサイトがあります。
ミラーサイトは世界各地に存在しています。

Debianのミラーサイト一覧:https://www.debian.org/mirror/list.ja.html

メジャーなディストリビューションなので、セキュリティーパッチの提供を終了しても更新サイトは存在することが多いです。

しかし、以下の理由により、ミラーサイトが参照できない場合があります。

・負荷が高くなっている
・メンテナンス中で停止している
・サイトが閉じれれている

よって、上記の理由で更新サイトから情報を受け取れずにエラーが発生している模様です。

対策:更新情報サイトのURLを変更する

結論から言うと、

CDNミラーサイトに設定されているか確認する
※CDN(コンテンツデリバリーネットワーク型DNSラウンドロピン)

[apt-get upgrade]と[apt-get update]のコマンドを実行すると、更新情報を取得できず、パッケージのReleaseファイルが見つからなくなってしまいます。

そのため、ミラーサイトURLに問題ないか確認して、再度[apt-get upgrade]と[apt-get update]コマンドを実行する必要があります。

ミラーサイトのURLが格納されているのは、/etc/apt/sources.list です。

このディレクトリには、パッケージのダウンロード元設定ファイルが格納されています。

もし上記のファイルが見つからない場合、/etc/apt/source.list.d以下に格納されています。

ここに書かれているリポジトリURLを見てみる。

更新サイトのURLは「.jp」があることから国内のサーバーから情報を取得していますね。

ミラーサイトは、国内サーバーを指定する方が高速に処理できるため、基本的に国内のサーバーを指定するようになっています。

おそらく問題なさそうですが、再度/etc/apt/source.listを作成してみます。
以前使用していたsource.listはリネームしましょう。

そして、新しくsource.listを作成して編集します。

また、/etc/apt/source.listの記述内容について調べたので確認します。

/etc/apt/source.listについて

/etc/apt/sources.list を知る
・”deb”:この行ではバイナリーパッケージの定義を示します。
・”deb-src”:この行ではソースパッケージのための定義です。
・第一引数:OS(今回はdebian)アーカイブのrootURL
・第二引数:スイーツ名(stable、testing、unstableなど)かコード名(busterやsidなど)のどちらかで与えられるディストリビューション名
・第三引数:Debianアーカイブの中の有効なアーカイブのメタデータのエリア名のリスト

Debianの場合は、完全なフリーなソフトウェアだけでLinuxを作ること目的のため、初期状態ではインストールできるパッケージに制限が限られている。

mainのみの記述しかない場合、Debianフリーソフトウェアガイドラインに沿ったmainセクションのものしかインストールされない。

contribが追記されている場合、ソフトウェア作成者によってフリーとされているが、他にフリーでないソフトウェアもインストールされるリスクがある。

non-freeが追記されている場合、このディレクトリにあるパッケージは、 そのソフトウェアの利用や再配布になんらかの煩わしい制限があるもの。

/etc/apt/sources.listにcontribとnon-freeがない場合は、追記する必要がある。

参照URL:https://www.debian.org/doc/manuals/debian-reference/ch02.ja.html#_debian_archive_basics

対策:編集内容をアップデート

先ほど、編集した/etc/apt/source.listからサイトから情報を取得できるか確認する。

updateを実行してみる。

エラーが出ませんでした。

これでapt-get updateエラーが改善されました。

これでも改善できない場合、アップグレードするリストを更新します。

対策:apt list –upgrade

一度、アップグレードする必要があるものを確認してみる。

updateしたときに保留になった8項目と、アップグレードする必要がある項目が一致した。

やっぱり、OSであるDebianのアップグレードが必要とのこと。

これで、必要なパッケージをインストールできた。

ちなみに、apt-get updateとした「取得」「ヒット」「無視」「エラー」について説明します。
取得(Get)
aptがパッケージリストのタイムスタンプを、ローカルに存在するものとチェックし、その差分に変更があり、ダウンロードする状態。
ヒット(Hit)
aptがパッケージリストのタイムスタンプをチェックしたことを意味し、それらはローカルに存在していたため変更はないという意味。そのためダウンロードも何もしない。
無視(Ign)
Ignは、無視できるレベルの問題が発生している状態。pdiffインデックスファイルに変更がないことを意味し、再度ダウンロードする必要はありません。
エラー(Err)
無視できないレベルの問題が発生している状態です。指定しているりリポジトリが見つからないなどどうやっても解決できないような場合に発生します。このエラーが発生しているリポジトリだけ更新されず、他の正常なリストは更新されるので放置しておいても特に問題はありません。

ん~・・・、Releaseファイルがまだだな。。。

解決策のまとめ

/etc/apt/surce.listにCDNミラーサイトが登録されているか確認する

おそらく色々な原因があるかと思いますが、エラー解決の対策になれば幸いです。

今回のエラー対策は、以下の本を参考にしました。

コメント

  1. […] 【Linux : Debian】apt-get update でエラーが出た時の対策今回は、Debianを使っていたら、apt-get でエラーが出たので、原因と解決方法をメモ程度ですが、紹介したいと思います。 今回のエラー […]

  2. 佐々木 より:

    参考になりました。
    Releaseの問題は下記のようにすれば良いかも

    deb [trusted=yes] つづく

    とする。

    後、
    sudo vim /etc/apt/source.list
    はaptで編集コマンドがあるので、それを使ったほうがいいかもです

    すごく長い時間悩んでいたので、良いヒントになりました。
    ありがとうございます

    • butakimuti butakimuti より:

      佐々木さん
      貴重なアドバイスいただき、ありがとうございます。
      参考にさせて頂きます。

タイトルとURLをコピーしました