Có một thiết lập không có giấy tờ , Acquire::http::ProxyAutoDetect
. Cài đặt này phải chứa đường dẫn đầy đủ đến nhị phân và không thể có đối số. Lệnh sẽ xuất proxy được sử dụng (ví dụ http://10.0.0.1:8000
:).
Với các thông tin trên, một tập lệnh có thể được tạo để thử proxy trước khi đặt nó. Nếu không có proxy, kết nối trực tiếp sẽ được sử dụng.
Dưới đây là một kịch bản phát hiện proxy để thử http://10.0.0.1:8000/
và http://10.0.0.2:8000
proxy.
Đặt mã vào /etc/apt/detect-http-proxy
:
#!/bin/bash
# detect-http-proxy - Returns a HTTP proxy which is available for use
# Author: Lekensteyn <lekensteyn@gmail.com>
# Supported since APT 0.7.25.3ubuntu1 (Lucid) and 0.7.26~exp1 (Debian Squeeze)
# Unsupported: Ubuntu Karmic and before, Debian Lenny and before
# Put this file in /etc/apt/detect-http-proxy and create and add the below
# configuration in /etc/apt/apt.conf.d/30detectproxy
# Acquire::http::ProxyAutoDetect "/etc/apt/detect-http-proxy";
# APT calls this script for each host that should be connected to. Therefore
# you may see the proxy messages multiple times (LP 814130). If you find this
# annoying and wish to disable these messages, set show_proxy_messages to 0
show_proxy_messages=1
# on or more proxies can be specified. Note that each will introduce a routing
# delay and therefore its recommended to put the proxy which is most likely to
# be available on the top. If no proxy is available, a direct connection will
# be used
try_proxies=(
10.0.0.1:8000
10.0.0.2:8000
)
print_msg() {
# \x0d clears the line so [Working] is hidden
[ "$show_proxy_messages" = 1 ] && printf '\x0d%s\n' "$1" >&2
}
for proxy in "${try_proxies[@]}"; do
# if the host machine / proxy is reachable...
if nc -z ${proxy/:/ }; then
proxy=http://$proxy
print_msg "Proxy that will be used: $proxy"
echo "$proxy"
exit
fi
done
print_msg "No proxy will be used"
# Workaround for Launchpad bug 654393 so it works with Debian Squeeze (<0.8.11)
echo DIRECT
Bây giờ, APT phải được cấu hình để sử dụng tập lệnh phát hiện proxy ở trên, vì vậy hãy đặt đoạn mã sau vào /etc/apt/apt.conf.d/30detectproxy
:
# Fail immediately if a file could not be retrieved. Comment if you have a bad
# Internet connection
Acquire::Retries 0;
# undocumented feature which was found in the source. It should be an absolute
# path to the program, no arguments are allowed. stdout contains the proxy
# server, stderr is shown (in stderr) but ignored by APT
Acquire::http::ProxyAutoDetect "/etc/apt/detect-http-proxy";
Tôi cũng đã đặt mã tiếp theo vào tệp để ngăn một số máy chủ lưu trữ.
# Override the default proxy, DIRECT causes a direct connection to be used
Acquire::http::Proxy {
deb.opera.com DIRECT;
dl.google.com DIRECT;
};
Theo mặc định, tập lệnh xuất ra liệu proxy có được sử dụng hay không. Để vô hiệu hóa điều đó, chỉnh sửa /etc/apt/detect-http-proxy
và thay đổi show_proxy_messages=1
thành show_proxy_messages=0
.