apt-get install behind proxy - Impossibile recuperare

Sep 15 2020

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 :

  1. 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
  1. 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?
  1. 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

1 KKPatel Sep 20 2020 at 07:19

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.

Erkko Sep 19 2020 at 10:23

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?

sancho.sReinstateMonicaCellio Sep 22 2020 at 13:28

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 :

  1. 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