apt-get install sau proxy - Không tìm nạp được
Đây là một câu hỏi khác liên quan đến thông báo lỗi E: Failed to fetch ...(ví dụ trong Chú thích 2 bên dưới). Điều gì làm cho câu hỏi này khác (tôi đoán) với những câu hỏi khác mà tôi đã thấy là sau đây.
Tôi đang chạy Ubuntu 18.04LTS, đằng sau một proxy. Tôi đã có rất nhiều gói với các bản cập nhật có sẵn (hơn 200, tôi đoán vậy).
-
Tôi có thể cập nhật nhiều gói mà không có vấn đề gì và tôi đã kết thúc với 48 gói mà tôi không thể cài đặt.
Tất cả các gói không được cài đặt thuộc về bionic-updates/universehoặc bionic-updates/main. Và hầu hết đều liên quan đến java, jdk, linux, systemd. Danh sách đầy đủ có trong Ghi chú 1 bên dưới. Nhưng có những gói từ bionic-updates/universevà bionic-updates/maintôi có thể cài đặt (tôi vừa cài đặt qemuvà bsdutils).
Làm thế nào để một số gói có thể được cài đặt và một số không thể?
Giải pháp khả thi là gì (ngoài việc kết nối PC mà không có proxy)?
Ghi chú :
Danh sách đầy đủ các gói chưa được cài đặt
ant ant-optional apport apport-gtk fwupd fwupdate fwupdate-signed gettext gettext-base jarwrapper junit4 libasm-java libcommons-collections3-java libcommons-compress-java libcommons-httpclient-java libdb5.3 libdb5.3-java libdb5.3-java-jni libecj-java libequinox-osgi-java libhsqldb1.8.0-java libjetty9-java libnss-systemd libobjenesis-java libpam-systemd libservlet3.1-java libsystemd0 libtomcat8-java linux-generic linux-headers-generic linux-image-generic openjdk-11-jdk openjdk-11-jdk-headless openjdk-11-jre openjdk-11-jre-headless openjdk-8-jdk openjdk-8-jdk-headless openjdk-8-jre openjdk-8-jre-headless python-pip-whl python3-pip snapd systemd
Điều này thu được với
$ sudo apt list --upgradable 2> /dev/null | sed 's/\/.*//' | tail +2 | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g'
Để tìm từng repo thuộc về, tôi đã sử dụng ( printf "%30s"...giúp hiển thị trong các cột)
$ for p in $(sudo apt list --upgradable 2> /dev/null | sed 's/\/.*//' | tail +2 | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g') ; do printf "%30s" $p ; apt policy $p 2> /dev/null | tail +6 | head -1 ; done
Điều này tạo ra đầu ra như
ant 500 http://us.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages
- Lỗi mẫu
$ sudo apt-get install apport
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
apport
1 upgraded, 0 newly installed, 0 to remove and 46 not upgraded.
Need to get 125 kB of archives.
After this operation, 20,5 kB of additional disk space will be used.
Ign:1 http://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 apport all 2.20.9-0ubuntu7.17
Err:1 http://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 apport all 2.20.9-0ubuntu7.17
403 URLBlockDownload [IP: xxx.xxx.xxx3.xxx 80]
E: Failed to fetch http://us.archive.ubuntu.com/ubuntu/pool/main/a/apport/apport_2.20.9-0ubuntu7.17_all.deb 403 URLBlockDownload [IP: 10.1.33.101 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
- EDIT: đầu ra "được yêu cầu" trong https://askubuntu.com/a/1276241/226614 ở đây.
$ find /etc/apt/ -name "*.list" -exec grep -iq http {} \; -exec egrep -v '^#|^$' {} \; | uniq
deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main
deb http://us.archive.ubuntu.com/ubuntu/ bionic main restricted
deb http://us.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
deb http://us.archive.ubuntu.com/ubuntu/ bionic universe
deb http://us.archive.ubuntu.com/ubuntu/ bionic-updates universe
deb http://us.archive.ubuntu.com/ubuntu/ bionic multiverse
deb http://us.archive.ubuntu.com/ubuntu/ bionic-updates multiverse
deb http://us.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu bionic-security main restricted
deb http://security.ubuntu.com/ubuntu bionic-security universe
deb http://security.ubuntu.com/ubuntu bionic-security multiverse
deb https://apt.kitware.com/ubuntu/ bionic main
Trả lời
Có vẻ như tường lửa doanh nghiệp đang chặn các url nhất định của apt, đó là lý do tại sao bạn không thể tải xuống các gói qua apt. Bạn cần có được tất cả các URL được liệt kê trắng trong tường lửa được đề cập trong danh sách nguồn. Bạn cần có quyền truy cập quản trị của tường lửa hoặc vui lòng liên hệ với quản trị viên mạng.
Là tùy chọn Thay thế, hãy thử kết nối hệ thống trực tiếp với một nguồn internet khác như USB Dongle hoặc Di động.
Máy chủ proxy có thể được thiết lập theo nhiều cách khác nhau. Một cách là cho phép truy cập vào các trang web cụ thể là theo miền ký tự đại diện hoặc ngược lại. Nếu quản trị viên hoặc môi trường cho điều này thậm chí còn hoang tưởng hơn thì có thể thực hiện các ngoại lệ chi tiết hơn cho phép truy cập vào các trang web cụ thể bằng công thức regex cho các URI cụ thể.
Đầu ra của apt-get updatenó có lỗi gì không?
Đây là một nỗ lực nhằm cung cấp cơ sở vững chắc hơn cho đề xuất trong https://askubuntu.com/a/1276426/226614. Nó đề cập rằng lọc tường lửa là thủ phạm và nó dựa trên URI đầy đủ được sử dụng cho mỗi gói, bao gồm cả chính tên gói. Điều đó có thể giải thích tại sao một số gói từ một repo nhất định có thể được cài đặt và một số gói khác thì không thể. Để kiểm tra điều này, tôi đã lấy các URI cho tất cả các gói mà tôi không thể cài đặt --print-uris(xem dòng lệnh đầy đủ trong Lưu ý 1 bên dưới) và cho gói yudit-commonmà tôi không có và tôi có thể cài đặt sau. Sau đó, tôi đã thử wgetting các URI đó.
Đối với mỗi gói mà tôi không thể cài đặt, .debtệp cho gói đó hoặc một trong các phần phụ thuộc của nó được tạo ra
$ wget http://us.archive.ubuntu.com/ubuntu/pool/universe/a/ant/ant-optional_1.10.5-3~18.04_all.deb
--2020-09-22 10:18:35-- http://us.archive.ubuntu.com/ubuntu/pool/universe/a/ant/ant-optional_1.10.5-3~18.04_all.deb
Resolving proxy-myserver (proxy-myserver)... xx.xx.xx.xx
Connecting to proxy-myserver (proxy-myserver)|xx.xx.xx.xx|:xx... connected.
Proxy request sent, awaiting response... 403 URLBlockDownload
2020-09-22 10:18:35 ERROR 403: URLBlockDownload.
Điều này sẽ xác nhận mạnh mẽ hơn đề xuất.
Ghi chú :
- Lấy URI đầy đủ cho các gói (và cũng đang thử
wgetở đây)
for p in $(sudo apt list --upgradable 2> /dev/null | sed 's/\/.*//' | tail +2 | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g') ; do for uri in $(apt install --print-uris $p 2> /dev/null | sed -n '/^After this operation/ { :a; n; p; ba; }' | awk '{ print substr($1,2,length($1)-2) }') ; echo "uri=${uri}" ; wget ${uri} ; done ; done