【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を構築しました。

起きた症状

実行したコマンド

sudo apt-get update

エラー:

無視:1 http://ftp.jp.debian.org/debian stretch InRelease
無視:2 http://download.OOOOOO.com/debian stretch InRelease              
無視:3 http://security.debian.org/debian-security stretch/updates InRelease    
無視:4 http://ftp.jp.debian.org/debian stretch-updates InRelease               
エラー:5 http://download.OOOOOO.com/debian stretch Release              
  403  Forbidden
エラー:6 http://security.debian.org/debian-security stretch/updates Release    
  403  Forbidden [IP: 151.101.108.204 80]
エラー:7 http://ftp.jp.debian.org/debian stretch Release                       
  403  Forbidden
エラー:8 http://ftp.jp.debian.org/debian stretch-updates Release
  403  Forbidden
パッケージリストを読み込んでいます... 完了
E: リポジトリ http://download.OOOOOO.com/debian stretch Release には Release ファイルがなくなっています。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
E: リポジトリ http://security.debian.org/debian-security stretch/updates Release には Release ファイルがなくなっています。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
E: リポジトリ http://ftp.jp.debian.org/debian stretch Release には Release ファイルがなくなっています。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
E: リポジトリ http://ftp.jp.debian.org/debian stretch-updates Release には Release ファイルがなくなっています。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。

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

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

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

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

man apt-secure 8

今回のエラーの原因は?

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 です。

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

ls -l /etc/apt/sources.list

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

ls -l /etc/apt/sources.list.d

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

cat /etc/apt/sources.list
deb http://ftp.jp.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ stretch main contrib non-free

deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

# stretch-updates, previously known as 'volatile'
deb http://ftp.jp.debian.org/debian/ stretch-updates main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ stretch-updates main contrib non-free

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

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

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

sudo mv /etc/apt/sources.list /etc/apt/source.list.old

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

sudo vim /etc/apt/source.list
deb http://ftp.jp.debian.org/debian/ stretch main contrib non-free
deb http://ftp.jp.debian.org/debian/ stretch-updates main contrib
deb http://ftp.jp.debian.org/debian/ streach-backports main contrib  non-free

#deb-src http://ftp.jp.debian.org/debian/ stretch main contrib non-free
#deb-src http://ftp.jp.debian.org/debian/ stretch-updates main contrib non-free
#deb-src http://ftp.jp.debian.org/debian/ stretch-backports main contrib non-free

また、/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
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージは保留されます:
--エラーがなかったので省略ーー
default-jre default-jre-headless icedtea-netx libfreerdp-cache1.1
libfreerdp-core1.1 libfreerdp-gdi1.1 linux-headers-686-pae
linux-image-686-pae
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 8 個。

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

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

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

対策:apt list –upgrade

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

# apt list --upgradable
一覧表示... 完了
default-jre/oldstable 2:1.8-58+deb9u1 i386 [2:1.8-58 からアップグレード可]
default-jre-headless/oldstable 2:1.8-58+deb9u1 i386 [2:1.8-58 からアップグレード可]
icedtea-netx/oldstable 1.6.2-3.1+deb9u1 i386 [1.6.2-3.1 からアップグレード可]
libfreerdp-cache1.1/oldstable 1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3 i386 [1.1.0~git20140921.1.440916e+dfsg1-13+deb9u2 からアップグレード可]
libfreerdp-core1.1/oldstable 1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3 i386 [1.1.0~git20140921.1.440916e+dfsg1-13+deb9u2 からアップグレード可]
libfreerdp-gdi1.1/oldstable 1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3 i386 [1.1.0~git20140921.1.440916e+dfsg1-13+deb9u2 からアップグレード可]
linux-headers-686-pae/oldstable 4.9+80+deb9u9 i386 [4.9+80+deb9u6 からアップグレード可]
linux-image-686-pae/oldstable 4.9+80+deb9u9 i386 [4.9+80+deb9u6 からアップグレード可]

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

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

# sudo apt upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージが新たにインストールされます:
  libwinpr-error0.1 linux-headers-4.9.0-11-686-pae linux-headers-4.9.0-11-common linux-image-4.9.0-11-686-pae
以下のパッケージは保留されます:
  default-jre default-jre-headless icedtea-netx
以下のパッケージはアップグレードされます:
  libfreerdp-cache1.1 libfreerdp-core1.1 libfreerdp-gdi1.1 linux-headers-686-pae linux-image-686-pae
アップグレード: 5 個、新規インストール: 4 個、削除: 0 個、保留: 3 個。
47.0 MB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 192 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
changelog を読んでいます... 完了
以前に未選択のパッケージ libwinpr-error0.1:i386 を選択しています。
(データベースを読み込んでいます ... 現在 204139 個のファイルとディレクトリがインストールされています。)
.../0-libwinpr-error0.1_1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3_i386.deb を展開する準備をしています ...
libwinpr-error0.1:i386 (1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3) を展開しています...
.../1-libfreerdp-core1.1_1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3_i386.deb を展開する準備をしています ...
libfreerdp-core1.1:i386 (1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3) で (1.1.0~git20140921.1.440916e+dfsg1-13+deb9u2 に) 上書き展開しています ...
.../2-libfreerdp-cache1.1_1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3_i386.deb を展開する準備をしています ...
libfreerdp-cache1.1:i386 (1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3) で (1.1.0~git20140921.1.440916e+dfsg1-13+deb9u2 に) 上書き展開しています ...
.../3-libfreerdp-gdi1.1_1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3_i386.deb を展開する準備をしています ...
libfreerdp-gdi1.1:i386 (1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3) で (1.1.0~git20140921.1.440916e+dfsg1-13+deb9u2 に) 上書き展開しています ...
以前に未選択のパッケージ linux-headers-4.9.0-11-common を選択しています。
.../4-linux-headers-4.9.0-11-common_4.9.189-3+deb9u2_all.deb を展開する準備をしています ...
linux-headers-4.9.0-11-common (4.9.189-3+deb9u2) を展開しています...
以前に未選択のパッケージ linux-headers-4.9.0-11-686-pae を選択しています。
.../5-linux-headers-4.9.0-11-686-pae_4.9.189-3+deb9u2_i386.deb を展開する準備をしています ...
linux-headers-4.9.0-11-686-pae (4.9.189-3+deb9u2) を展開しています...
.../6-linux-headers-686-pae_4.9+80+deb9u9_i386.deb を展開する準備をしています ...
linux-headers-686-pae (4.9+80+deb9u9) で (4.9+80+deb9u6 に) 上書き展開しています ...
以前に未選択のパッケージ linux-image-4.9.0-11-686-pae を選択しています。
.../7-linux-image-4.9.0-11-686-pae_4.9.189-3+deb9u2_i386.deb を展開する準備をしています ...
linux-image-4.9.0-11-686-pae (4.9.189-3+deb9u2) を展開しています...
.../8-linux-image-686-pae_4.9+80+deb9u9_i386.deb を展開する準備をしています ...
linux-image-686-pae (4.9+80+deb9u9) で (4.9+80+deb9u6 に) 上書き展開しています ...
linux-headers-4.9.0-11-common (4.9.189-3+deb9u2) を設定しています ...
linux-headers-4.9.0-11-686-pae (4.9.189-3+deb9u2) を設定しています ...
libc-bin (2.24-11+deb9u4) のトリガを処理しています ...
libwinpr-error0.1:i386 (1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3) を設定しています ...
linux-image-4.9.0-11-686-pae (4.9.189-3+deb9u2) を設定しています ...
I: /vmlinuz.old is now a symlink to boot/vmlinuz-4.9.0-8-686-pae
I: /initrd.img.old is now a symlink to boot/initrd.img-4.9.0-8-686-pae
I: /vmlinuz is now a symlink to boot/vmlinuz-4.9.0-11-686-pae
I: /initrd.img is now a symlink to boot/initrd.img-4.9.0-11-686-pae
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.9.0-11-686-pae
/etc/kernel/postinst.d/vboxadd:
VirtualBox Guest Additions: Building the modules for kernel 4.9.0-11-686-pae.
update-initramfs: deferring update (hook will be called later)
/etc/kernel/postinst.d/zz-update-grub:
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Linux イメージを見つけました: /boot/vmlinuz-4.9.0-11-686-pae
Found initrd image: /boot/initrd.img-4.9.0-11-686-pae
Linux イメージを見つけました: /boot/vmlinuz-4.9.0-8-686-pae
Found initrd image: /boot/initrd.img-4.9.0-8-686-pae
Linux イメージを見つけました: /boot/vmlinuz-4.9.0-6-686-pae
Found initrd image: /boot/initrd.img-4.9.0-6-686-pae
完了
linux-headers-686-pae (4.9+80+deb9u9) を設定しています ...
libfreerdp-core1.1:i386 (1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3) を設定しています ...
linux-image-686-pae (4.9+80+deb9u9) を設定しています ...
libfreerdp-cache1.1:i386 (1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3) を設定しています ...
libfreerdp-gdi1.1:i386 (1.1.0~git20140921.1.440916e+dfsg1-13+deb9u3) を設定しています ...
libc-bin (2.24-11+deb9u4) のトリガを処理しています ...

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

#sudo apt-get update
ヒット:1 http://security.debian.org/debian-security stretch/updates InRelease
無視:2 http://ftp.jp.debian.org/debian stretch InRelease
無視:3 http://download.atmark-techno.com/debian stretch InRelease
取得:4 http://ftp.jp.debian.org/debian stretch-updates InRelease [91.0 kB]
ヒット:5 http://download.atmark-techno.com/debian stretch Release
ヒット:6 http://ftp.jp.debian.org/debian stretch Release
91.0 kB を 1秒 で取得しました (49.5 kB/s)
パッケージリストを読み込んでいます... 完了
ちなみに、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をコピーしました