みなさん、こんにちは。
今回は、Debianを使っていたら、apt-get でエラーが出たので、原因と解決方法をメモ程度ですが、紹介したいと思います。
今回のエラーは、Debianだけでなく、UbuntuやRaspbianで発生しているエラー事象なので、参考になればいいと思います。
使用した環境
ホスト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
今回のエラーの原因は?
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
Debianだけでなく、多くのディストリビューションは、パッケージ更新するために必要なミラーサイトがあります。
ミラーサイトは世界各地に存在しています。
メジャーなディストリビューションなので、セキュリティーパッチの提供を終了しても更新サイトは存在することが多いです。
しかし、以下の理由により、ミラーサイトが参照できない場合があります。
・メンテナンス中で停止している
・サイトが閉じれれている
よって、上記の理由で更新サイトから情報を受け取れずにエラーが発生している模様です。
対策:更新情報サイトのURLを変更する
結論から言うと、
[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について
・”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) パッケージリストを読み込んでいます... 完了
ん~・・・、Releaseファイルがまだだな。。。
解決策のまとめ
おそらく色々な原因があるかと思いますが、エラー解決の対策になれば幸いです。
今回のエラー対策は、以下の本を参考にしました。
コメント
[…] 【Linux : Debian】apt-get update でエラーが出た時の対策今回は、Debianを使っていたら、apt-get でエラーが出たので、原因と解決方法をメモ程度ですが、紹介したいと思います。 今回のエラー […]
参考になりました。
Releaseの問題は下記のようにすれば良いかも
deb [trusted=yes] つづく
とする。
後、
sudo vim /etc/apt/source.list
はaptで編集コマンドがあるので、それを使ったほうがいいかもです
すごく長い時間悩んでいたので、良いヒントになりました。
ありがとうございます
佐々木さん
貴重なアドバイスいただき、ありがとうございます。
参考にさせて頂きます。