Ubuntu

apt-get update 時跳過 InRelease 步驟(並直接轉到 Release)

  • January 12, 2017

我剛剛在伺服器上安裝了一個全新的 Xenial,幾乎立即嘗試在其上安裝 Docker。

Docker 安裝頁面說你必須創建一個文件並在其中/etc/apt/sources.list.d/docker.list添加 docker repo 源:

deb https://apt.dockerproject.org/repo ubuntu-xenial main

然後,只需通過正常apt-get update & install過程。這一步通常很簡單,但在這個全新的 xenial 上,這update一步總是超時:

Failed to fetch https://apt.dockerproject.org/repo/dists/ubuntu-xenial/InRelease  Connection timed out after 120000 milliseconds

這裡重要的一點是Docker 告訴我他們沒有InReleaserepo。通常,apt-get update應該嘗試InRelease步驟,而不是找到已簽名的內聯源,然後應該嘗試Release源。

我的問題是我全新的 Xenial 沒有嘗試Release來源就停在那裡。

如何強制 Ubuntu 檢查 https://apt.dockerproject.org/repo/dists/ubuntu-xenial/Release原始碼而不是https://apt.dockerproject.org/repo/dists/ubuntu-xenial/InRelease

如果需要,uname -a結果如下:

Linux sd-83589 4.4.0-22-generic #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

我安裝其他軟體包(zsh、screen 等)沒有問題。

請隨時問我任何其他資訊:我對這方面的知識了解太多,所以我可能忘記了一些東西……

感謝@Law29,我了解到當其他人使用 HTTP 時,一些更新是使用 HTTPS 進行的:/

我可以檢查curl該 HTTPS 請求不會到達伺服器。

原來是我的防火牆未配置為接受埠 443 請求…添加正確的行解決了問題!謝謝@Law29!

我有同樣的問題。導致問題的/etc/apt/apt.conf原因:

Acquire::http::Proxy "http://mirrors.aliyun.com/";

刪除此文件後,現在一切正常。


更新

我還可以通過添加另一行來繞過 docker repo:

Acquire::http::Proxy "http://mirrors.aliyun.com/";
Acquire::http::Proxy::apt.dockerproject.org DIRECT;

引用自:https://serverfault.com/questions/782737