
我使用 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"; }; }; };