2010年6月4日 星期五

在apt系統與wget上使用proxy

台灣的學術網路連國外很慢是眾所皆知的事情....但是像ubuntu這種系統,雖然有國內的mirror,但是有些東西,像是ppa之類的source,還是得從國外抓。今天剛裝完機器要更新,發現有些東西實在龜到不行,426B/s耶!雖然最後我抓完了啦.....不過還是要研究一下該怎麼透過proxy抓這些套件。

方法很簡單,只要在/etc/apt/apt.conf 裡面寫入以下這段設定:

ACQUIRE {
http::proxy "http://USER:PASSWORD@PROXY-SERVER:PORT"
}


使用者帳號密碼、server資訊請自行更改,如果是不需要帳號密碼的proxy server的話,則引號中只要打"http://PROXY-SERVER:PORT"即可。如果連port都不打的話,則預設的port是80(也就是http的預設port)

接著只要更新套件list,並安裝想要得套件就好。如果設定有誤,應該會在update的時候就出錯了。(像我一開始設定到一台已經不能用的proxy server,就直接噴error給我看.....)

那麼,該設定哪一台proxy server呢?我找到了一份(有點舊的)proxy列表,剛好是成大的人做的的樣子,請看參考資料。
其中我是覺得NCHC的proxy server好像滿可靠的(好歹人家是NCHC...) 如果那份列表的連結以後不能用了,可以試試看這台...

至於,wget又是怎麼回事?噢...只是因為我發現我去找proxy相關資料的時候,很多文章都會同時教apt跟wget怎麼設定proxy,那我就從善如流,把相關的資訊照抄一下了:P

編輯/etc/wgetrc或是~/.wgetrc,加入以下設定:

https_proxy = http://PROXY-SERVER:PORT
http_proxy = http://PROXY-SERVER:PORT
ftp_proxy = http://PROXY-SERVER:PORT

應該很好懂吧?
在我的Ubuntu 10.04上這幾行本來就已經存在/etc/wgetrc裡面了,用的是proxy.yoyodyne.com:18023這台機器,不過預設是註解起來的。所以如果想使用的話,其實只要編輯一下就可以了:)
(碎碎唸:本來應該用https抓的東西卻透過http proxy去抓不會不好嗎...不是應該要用https proxy....?)

參考資料:
Using apt-get with a proxy server
Proxy Server 列表
如何在linux使用wget透過proxy抓取檔案

5 則留言:

  1. 我都是用 env http_proxy wget example.org 耶,不知道 apt 能不能也用 http_proxy 這個 environment variable 去掛 Proxy

    回覆刪除
  2. 說錯了,是 env http_proxy=proxy.org wget example.org

    回覆刪除
  3. 說錯了orz 是 env http_proxy=proxy.example.org:80 wget example.org

    回覆刪除
  4. @Dannvix
    說不定可以唷!因為我看到的資料也有一些跟這個方法有關係....只是我看不太懂XD"

    回覆刪除
  5. 剛剛在網路上找到資訊可以直接用
    env http_proxy="http://:" apt-get install
    這樣的方式去讓APT走proxy~
    我自己是測試upgrade拉 確定是可以用

    回覆刪除