web-dev-qa-db-ja.com

apt-getはプロキシの背後では機能しません

私の会社はHTTPプロキシを使用しているため、さまざまなUbuntu 12.04サーバーを適切に構成する必要があります。つまり、\etc\apt\apt.conf.d\80proxyを次のように設定する必要があります。

Acquire::http::Proxy "http://proxy.mycompany.com:80";

Acquire::http::No-Cache true;

さて、数日後、この方法は突然機能しなくなりました。合計不一致エラーが発生しました。 私はstackoverflowまたはwebで見られる通常のトリックをすべて試しました、とりわけ:

Sudo rm -fR /var/lib/apt/lists/*
Sudo apt-get clean

しかし、何もうまくいかないようです。運もなくFTPサーバーに切り替えさえしました。この問題の根本的な解決策は何ですか?プロキシサーバーに何らかの問題がある可能性はありますか?どうなり得るか?

Ubuntu 12.04を使用する

4
Greg

プロキシ経由でapt-getを使用するには、次の手順を実行します。ただし、インターネットにアクセスできる必要があります(Firefoxなどのブラウザー経由)。

Sudo apt-get --print-uris install PROGRAM

これにより、インストールの実行に必要なパッケージのURL(およびmd5sumsなどのその他の情報)が出力されるため、ダウンロードできます。たとえば、supertuxを使用する場合:

wilf@comp:~$ Sudo apt-get install --print-uris supertux
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  supertux-data
The following NEW packages will be installed
  supertux supertux-data
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 59.4 MB of archives.
After this operation, 80.0 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y
'http://gb.archive.ubuntu.com/ubuntu/pool/universe/s/supertux/supertux-data_0.3.3-6_all.deb' supertux-data_0.3.3-6_all.deb 58590640 MD5Sum:68bd36f2c262f7caed1b5c947977202a
'http://gb.archive.ubuntu.com/ubuntu/pool/universe/s/supertux/supertux_0.3.3-6_i386.deb' supertux_0.3.3-6_i386.deb 804782 MD5Sum:a49c6c3c918bae2c968b3da6ac725b06

次に、与えられたリンクから(できれば空のフォルダーに).debファイルを、プロキシーなどを介して動作するブラウザーを介してダウンロードし、Software Centerを使用してインストールできます。または、ターミナルでcd /FOLDER/WITH/DOWNLOADED-DEB-FILESとこれらのコマンドのいずれかを使用します

dpkg -i *.deb
gdebi *.deb 

これは少し遅くて面倒ですが、HTTPプロキシで動作するようです。 http://packages.ubuntu.com/ からパッケージを取得することもできます

5
Wilf

端末からaptを単独で使用することに関しては、次のことがうまくいくことがわかりました。

  1. /etc/apt/apt.confを空のままにして、aptが$*_proxy環境変数にフォールバックするようにします。
  2. 環境変数が適切に設定されていることを確認します。たとえば、.bashrcを追加できます。

    http_proxy="http://username:password@proxyserver:port"
    # And so on for other proxy settings like https_proxy and ftp_proxy
    

    ユーザー名またはパスワードに特殊文字が含まれている場合は、 RLエンコード にする必要があります。

  3. 独自の環境変数ではなく、your環境変数を使用するようにします。これは、/etc/sudoersファイルを編集することにより行われます。 これを行うときは注意してください!Sudo visudoコマンドのみを使用してファイルを編集してください。エラーがあると、Sudoモードに再度入ることができなくなります。以下を追加します。

    Defaults env_keep+="http_proxy https_proxy ftp_proxy socks_proxy"
    

    これにより、Sudo apt-get install ...などの実行時にSudoがこれらの変数を保持することが保証されます。

これは buntuのapt-get howto から見つけました。

動作するかどうか教えてください:)

16
Praveen

Wilfに追加するために、次のコマンドを実行して、Chromeを介したダウンロードを自動化しました。 Firefox、さらに簡単にできることを理解しています。

yes | Sudo apt-get --print-uris install PROGRAM-NAME-HERE | grep http | awk '{print $1 }' | tr -d \' | while read -r line; do google-chrome "$line"; done

編集:したがって、ダウンロードが完了すると、答え全体が1つの投稿になります。

cd /FOLDER/WITH/DOWNLOADED-DEB-FILES; dpkg -i *.deb
2

あなたがこれをすでに試したかどうかはわかりませんが、どうですか:

export http_proxy=proxy.mycompany.com:80

後で確認できます:

echo $http_proxy
1
zappendappen

ここでの1つの落とし穴は、非特権ユーザーとしてプロキシを設定した後に実行すると

Sudo apt-get install REQUIRED_PACKAGE

ここで、REQUIRED_PACKAGEはインストールするソフトウェアであり、プロキシを超えてマシンに接続するとハングすることがわかります。その後、次のようにSudoコマンドに-Eを渡して動作します。

Sudo -E apt-get install REQUIRED_PACKAGE

これには、現在の環境(プロキシ環境設定)を使用してrootとしてコマンドを実行する効果があります

0
Rob