apt-get install behind proxy - Impossibile recuperare
Questa è un'altra domanda riguardante il messaggio di errore E: Failed to fetch ...(esempio nella nota 2 di seguito). Ciò che rende questa domanda diversa (immagino) dalle altre che ho visto è la seguente.
Sto eseguendo Ubuntu 18.04LTS, dietro un proxy. Avevo molti pacchetti con aggiornamenti disponibili (più di 200, immagino).
- Potrei aggiornare molti dei pacchetti senza problemi, e sono finito con 48 che non posso installare.
Tutti i pacchetti non installati appartengono a bionic-updates/universeo bionic-updates/main. E la maggior parte sono legati alla java, jdk, linux, systemd. L'elenco completo è nella nota 1 di seguito. Ma ci sono pacchetti da bionic-updates/universee bionic-updates/mainche posso installare (ho appena installato qemue bsdutils).
Come è possibile che alcuni dei pacchetti possano essere installati e altri no?
Qual è una possibile soluzione (oltre al collegamento del PC senza proxy)?
Note :
Elenco completo dei pacchetti non installati
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
Questo è stato ottenuto con
$ sudo apt list --upgradable 2> /dev/null | sed 's/\/.*//' | tail +2 | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g'
Per trovare a quale repo apparteneva ognuno, ho usato ( printf "%30s"...aiuta a visualizzare in colonne)
$ 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
Questo genera output come
ant 500 http://us.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages
- Errore di esempio
$ 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: output "richiesto" in https://askubuntu.com/a/1276241/226614 è qui.
$ 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
Risposte
Sembra che il firewall aziendale stia bloccando alcuni URL di apt, ecco perché non sei in grado di scaricare pacchetti tramite apt. È necessario inserire tutti gli URL nella lista bianca nel firewall menzionato nell'elenco delle fonti. È necessario disporre dell'accesso come amministratore al firewall o contattare gentilmente l'amministratore di rete.
Come opzione alternativa, prova a connettere il sistema direttamente con un'altra fonte Internet come USB Dongle o Mobile.
Il server proxy può essere configurato in diversi modi. Un modo è consentire l'accesso a siti specifici tramite dominio jolly o viceversa. Se l'amministratore o l'ambiente per questo è ancora più paranoico, è possibile rendere le eccezioni ancora più granuali consentendo l'accesso a siti specifici mediante formule regex a URI specifici.
Qual è l'output di
apt-get updatese presenta errori?
Questo è uno sforzo per dare una base più solida al suggerimento in https://askubuntu.com/a/1276426/226614. Si afferma che il filtro del firewall è il colpevole e che si basa sull'URI completo utilizzato per ciascun pacchetto, incluso il nome del pacchetto stesso. Questo potrebbe spiegare perché alcuni pacchetti di un dato repository possono essere installati e altri no. Per verificarlo, ho ottenuto gli URI per tutti i pacchetti con cui non posso installare --print-uris(vedere la riga di comando completa nella Nota 1 di seguito) e per i pacchetti yudit-commonche non ho e che potrei installare successivamente. Poi ho provato a wgetinserire quegli URI.
Per ciascuno dei pacchetti che non sono stato in grado di installare, è stato prodotto il .debfile per quel pacchetto o per una delle sue dipendenze
$ 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.
Ciò confermerebbe più fortemente la proposta.
Note :
- Ottenere URI completi per i pacchetti (e anche provare
wgetqui)
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