Từ những gì tôi hiểu, thiết lập proxy toàn hệ thống thông qua GUI đó thực hiện ba điều:
- Đặt các giá trị tương ứng trong cơ sở dữ liệu dconf.
- Đặt các giá trị trong
/etc/environment
.
- Đặt các giá trị trong
/etc/apt/apt.conf
.
1 và 3 có hiệu lực ngay lập tức. /etc/environment
được phân tích cú pháp khi đăng nhập, vì vậy bạn sẽ cần phải đăng xuất và đăng nhập để có hiệu lực. (Lưu ý rằng đây là đăng nhập phù hợp, không chỉ đơn thuần là chạy vỏ đăng nhập.) Tập lệnh sau phải tương đương (giả sử proxy http / https):
#! /bin/bash
HTTP_PROXY_HOST=proxy.example.com
HTTP_PROXY_PORT=3128
HTTPS_PROXY_HOST=proxy.example.com
HTTPS_PROXY_PORT=3128
gsettings set org.gnome.system.proxy mode manual
gsettings set org.gnome.system.proxy.http host "$HTTP_PROXY_HOST"
gsettings set org.gnome.system.proxy.http port "$HTTP_PROXY_PORT"
gsettings set org.gnome.system.proxy.https host "$HTTPS_PROXY_HOST"
gsettings set org.gnome.system.proxy.https port "$HTTPS_PROXY_PORT"
sudo sed -i.bak '/http[s]::proxy/Id' /etc/apt/apt.conf
sudo tee -a /etc/apt/apt.conf <<EOF
Acquire::http::proxy "http://$HTTP_PROXY_HOST:$HTTP_PROXY_PORT/";
Acquire::https::proxy "http://$HTTPS_PROXY_HOST:$HTTPS_PROXY_PORT/";
EOF
sudo sed -i.bak '/http[s]_proxy/Id' /etc/environment
sudo tee -a /etc/environment <<EOF
http_proxy="http://$HTTP_PROXY_HOST:$HTTP_PROXY_PORT/"
https_proxy="http://$HTTPS_PROXY_HOST:$HTTPS_PROXY_PORT/"
EOF
Mặc dù nó yêu cầu đăng nhập lại để PAM áp dụng /etc/environment
ở mọi nơi, nhưng trong trình bao hiện tại, bạn vẫn có thể trích xuất các giá trị trong tệp đó:
export http_proxy=$(pam_getenv http_proxy)
sudo service network manager restart
.