透過 sudo 呼叫的代理使 aptitude 正常工作

透過 sudo 呼叫的代理使 aptitude 正常工作

我使用 Debian 6。透過 GUI 進行瀏覽以及任何 HTTP 和 FTP 活動都可以正常運作。

我想更新我的包存儲庫,所以我在 shell 中輸入:

sudo aptitude

然後,如果我嘗試更新儲存庫(按「u」),則 aptitude 在嘗試存取 debian 的 FTP 伺服器時會停止,並且此操作最終將逾時。

但如果嘗試:

$ su
# aptitude

更新作品。

這兩個呼叫有什麼區別?$http_proxy和環境變數$ftp_proxy存在於兩個 shell 中。

答案1

命令以 root 身分啟動另一個 shell(或任何人,如果您提供使用者名稱和正確的密碼)。該 shell 取得所有正常的環境變量,其中當然包括 HTTP_PROXY 和 FTP_PROXY 變化。這樣就可以了。

須藤命令刪除除專門選擇的子集之外的所有環境變數...當然不包括 HTTP_PROXY 和 FTP_PROXY 變化,因此您的命令失敗。

你(們)能做到須藤透過編輯 sudoers 設定檔來保留 *_PROXY 變化,使用維蘇多命令(當然)。

添加以下內容將使須藤保留 HTTP_PROXY 和 FTP_PROXY 的值:

Defaults env_keep += "http_proxy ftp_proxy https_proxy HTTP_PROXY FTP_PROXY HTTPS_PROXY"

巧合的是,如果您將 DISPLAY 和 HOME 添加到該列表,您也可以透過 sudo 使用 gui 程式(它們需要 DISPLAY 變數才能連接)

Defaults env_keep += "DISPLAY HOME"

您甚至可以像這樣添加這兩行。 (這+=是這裡的關鍵)請記住將這些行添加到文件末尾,因為在前幾行中它通常設置 '環境保持' 帶有直角的變數 '=',這會刪除任何先前的值。

答案2

我自己也一直在努力解決這個問題,最後採用了 Ask Ubuntu 上提出的解決方案: apt-get 不適用於代理

如果設定http_proxy不起作用,請嘗試編輯apt.conf。在
Ubuntu中,目錄apt.conf是碎片化的/etc/apt/apt.conf.d/
在此目錄中編輯/etc/apt/apt.conf.d/01ubuntu

APT {
  Acquire {
      http {
          Proxy "http://user:password@server:port";
      };
  };
};

相關內容