Snap,全稱SnapCraft,是一個全新的應用軟件環境。在Snap中,軟件被封裝在類似於Docker的容器中,即開即用,可隨時獲取,這一切由其後臺服務snapd
提供支持。Ubuntu從18.04開始,就引入它作爲系統的一部分,而其他的Linux發行版(如Deepin)也可以通過軟件管理工具進行安裝(如sudo apt install snapd
)。
SnapCraft將軟件包分發在自己的服務器上。然而,因爲衆所周知的原因,訪問位於海外的Snap服務器異常緩慢,不加代理的情況下,下載速度會持續降到十幾KB每秒。這使得我們不得不想辦法通過代理服務器進行加速。
一般地,Linux上的一些應用程序會通過讀取環境變量http_proxy
和https_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