爲Snapd設置代理

Snap,全稱SnapCraft,是一個全新的應用軟件環境。在Snap中,軟件被封裝在類似於Docker的容器中,即開即用,可隨時獲取,這一切由其後臺服務snapd提供支持。Ubuntu從18.04開始,就引入它作爲系統的一部分,而其他的Linux發行版(如Deepin)也可以通過軟件管理工具進行安裝(如sudo apt install snapd)。

SnapCraft將軟件包分發在自己的服務器上。然而,因爲衆所周知的原因,訪問位於海外的Snap服務器異常緩慢,不加代理的情況下,下載速度會持續降到十幾KB每秒。這使得我們不得不想辦法通過代理服務器進行加速。

一般地,Linux上的一些應用程序會通過讀取環境變量http_proxyhttps_proxy來應用代理服務器設置,典型的有Chrome。然而,Snap比較特別,它不會從環境變量中上述環境變量中讀取代理服務器設置,因此直接使用export http_proxy=[代理服務器地址]export https_proxy=[代理服務器地址]是不起作用的。

那麼,有何正確的方法?

方法一:更改/etc/environment

/etc/environment是一個Shell腳本,snapd會讀取它,應用其中指定的配置信息。因此,設置代理服務器的正確目標,實際上就是這裏。

在/etc/environment中加入:

http_proxy=http://[服務器地址]:[端口號]
https_proxy=http://[服務器地址]:[端口號]

然後重啓snapd服務:

sudo systemctl restart snapd

方法二:覆蓋snapd的現有設置

除了修改environment文件,也可以修改snapd服務的配置文件,在其加入Environment信息,信息內容實際上就是“方法一”中設置代理服務器的語句。

運行以下命令,打開snapd的配置文件:

sudo systemctl edit snapd.service

在打開的文本編輯器中,加入以下語句:

[Service]
Environment=http_proxy=http://proxy:port
Environment=https_proxy=http://proxy:port

最後重新加載snapd服務:

sudo systemctl daemon-reload
sudo systemctl restart snapd.service

注意事項

一般的本地代理都不支持HTTPS,所以https_proxy的值也只能是http地址,否則會出現如下錯誤:

cannot install "conjure-up": Post https://api.snapcraft.io/v2/snaps/refresh: proxyconnect tcp: EOF

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章