Dockerfileにjessieバックポートリポジトリを追加し、それを使用して依存関係をインストールする、独自の開発のベースとしてdockerイメージを使用しています。このイメージは、次のコマンドを使用してリポジトリを追加します。
echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list
問題は、バックポートリポジトリからのパッケージのフェッチが次のエラーで失敗することです(これは以前は機能していました)。
W: Failed to fetch
http://ftp.debian.org/debian/dists/jessie-backports/main/binary-AMD64/Packages
404 Not Found
W: Failed to fetch
http://deb.debian.org/debian/dists/jessie-updates/main/binary-AMD64/Packages
404 Not Found
私はそのサーバーを調べましたが、それらのパスは実際には存在しません。
私は、Debianバックポートサイトで、この特定のリポジトリを引き続き使用できるかどうかを確認しようとしましたが、これが非推奨であるか、またはそのようなものであるという兆候は見つかりませんでした。
これはリポジトリの一時的な問題ですか、それともjessie-backportsリポジトリはもう利用できませんか?そして、これが一時的な問題でない場合、新しいDebian安定版にアップグレードせずに、これまたは同等のリポジトリを使用するにはどのようなオプションが必要ですか?
WheezyとJessieは最近ミラーネットワークから削除されました なので、Jessieバックポートのフェッチを続行するには、代わりにarchive.debian.org
を使用する必要があります。
deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main
(リポジトリは更新されなくなったため、有効性チェックを無効にする必要があります。ジェシーのapt
はcheck-valid-until
フラグをサポートしていません。詳細は inostiaの回答 を参照してください。この回答の後半にある構成の概要。)
jessie-updates
リポジトリが削除されました。すべての更新がメインリポジトリにマージされ、セキュリティ以外の更新はありません。したがって、jessie-updates
またはsources.list
ファイル内のsources.list.d
への参照はすべて削除する必要があります。セキュリティ更新 今後も提供されます 、LTSがサポートするアーキテクチャでは、セキュリティリポジトリで、2020年6月30日まで。
コンテナーイメージを構築しているので、私はhighly代わりにDebian 9(Stretch)をベースにすることをお勧めします。 Debian 8(Jessie)を使い続けるには、リポジトリは次のようになります。
deb http://cdn-fastly.deb.debian.org/debian/ jessie main
deb-src http://cdn-fastly.deb.debian.org/debian/ jessie main
deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main
deb http://archive.debian.org/debian jessie-backports main
deb-src http://archive.debian.org/debian jessie-backports main
(jessie-updates
リポジトリなし)。
また、/etc/apt/apt.conf
の有効性チェックを無効にする必要があります(すべてのリポジトリに適用されます):
Acquire::Check-Valid-Until "false";
@inostiaおよび@Stephen Kittによって提案された解決策を試した後も、次のエラーが発生していました。
W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/main/binary-AMD64/Packages 404 Not Found
E: Some index files failed to download. They have been ignored, or old ones used instead.
行deb http://deb.debian.org/debian jessie-updates main
を/etc/apt/sources.list
から削除することで解決できることを理解しました。
私は私のDockerfileに次のスニペットを入れました:
RUN echo "deb [check-valid-until=no] http://cdn-fastly.deb.debian.org/debian jessie main" > /etc/apt/sources.list.d/jessie.list
RUN echo "deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list
RUN sed -i '/deb http:\/\/deb.debian.org\/debian jessie-updates main/d' /etc/apt/sources.list
RUN apt-get -o Acquire::Check-Valid-Until=false update
これは、Debian "Jessie"を使用するVagrantボックスをプロビジョニングするときに起こりました。
Stephen Kitt's answer に従って、archive.debian.orgに切り替えるとうまくいきましたが、/etc/apt/sources.list.d/jessie-backports.list
ではなく/etc/apt/sources.list
に追加する必要がありました。
provision.sh
に次の行を追加しました:
echo "deb http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list
次に、apt-get update
の実行中にセキュリティエラーが発生しました。
ローカルミラーでの「ファイルの期限切れの解除」の問題を回避する方法 、これはそのエラーを修正しました:
apt-get -o Acquire::Check-Valid-Until=false update
または、チェックを完全に無効にするには、これをprovision.sh
に追加します。
echo "Acquire::Check-Valid-Until \"false\";" > /etc/apt/apt.conf.d/100disablechecks
その後、-o
フラグなしですべてのapt
コマンドを実行できます。
古いDockerイメージファンデーションでNodeJSを使用しているユーザー向け。追加のlibをコンパイルするためのこれらの古いソースを含むいくつかのフリーズしたイメージがありました。
コンテキスト:pythonをインストールしたい場合、イメージのビルド中に(過去24時間以内))Dockerビルド中に依存関係を取得できなかったため、この問題が発生しました。
私はこの投稿でアーカイブパスの推奨事項を試しましたが、404を超えることができませんでした。 (今日現在、archive.debian.orgの場所からも取得されています)
解決策:私は最終的にノードの最新のコンテナバージョン(python libsがプリインストールされています)に切り替えて、パッケージjson(これには、 pythyonが必要でした)は問題を廃止しました。
結局、コンテナスタック(node:latest)の基盤イメージを更新することが、解決への最も簡単な道のように思われました。
バイナリ依存関係が含まれている古いイメージスタックに注意してください。コアOSレイヤーを更新するには、おそらくしばらく時間がかかります。
これらのエラーのパネルを使用して、何も動作しない場合:
Unable to correct missing packages.
WARNING: The following packages cannot be authenticated!
W: GPG error
W: An error occurred during the signature verification.
Updates for this repository will not be applied.
E: Failed to fetch
E: Aborting install
フルディストリビューションアップグレードと、マシンを保存するためのソースリストのクリーンアップを検討してください。これらのメモを使用すると数分で完了しますが、最悪です。
初めての訪問/etc/apt/sources.list.d/
、すべて削除します。 (バックアップを実行します)。
編集/etc/apt/sources.list
、この行だけを残してください:
deb http://ftp.us.debian.org/debian stable main contrib
次に、rootとして以下を実行します。
aptitude update
aptitude full-upgrade
さまざまなメッセージを確認します。次に試してください:
Sudo apt update
エラーは発生せず、確認するだけです。
Reading package lists... Done
いくつかのさまざまなパッケージは、いくつかのconflictsを引き起こす可能性があり、それらの場合、一度使用すると、さまざまな競合が解決されます。
Sudo aptitude -y install packagename otherpackagename
考えられるその他のエラー:
W: There is no public key available for the following key IDs:
*648ACFXXXXX2FAB138*
解決するには、指定した公開鍵をインポートします。
Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFXXXXX2FAB138
非常にまれなメッセージが表示される場合があります!
A reboot is required to replace the running dbus-daemon.
Please reboot the system when convenient.
古いカーネルとlibcで問題が発生する可能性があります:
Kernel must be upgraded
This version of the GNU libc requires kernel version 3.2 or later. Please upgrade your kernel
これらの注記を公開サーバーに適用しないでください。常に最後のLTSを使用します。
https://www.debian.org/doc/manuals/debian-faq/ch-uptodate.en.html