Próbuję postępować zgodnie z instrukcjami „Instalowanie Cross Toolchain na Ubuntu 10.04 (Lucid) i 10.10 (Maverick) Hosts” na wiki.linaro.org (na mojej maszynie Wirtualnej Ubuntu 10.04). Pierwszym krokiem jest:
sudo add-apt-repository ppa:linaro-maintainers/toolchain
Ale kiedy biegnę, dostaję:
Error reading https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain: <urlopen error [Errno 110] Connection timed out>
Zgaduję, że problem dotyczy mojej konfiguracji serwera proxy mojego pracodawcy, szczególnie HTTPS.
Kiedy otworzyłem https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain w przeglądarce Firefox, dostałem komunikat „Upłynął limit czasu połączenia”. Następnie przeszedłem do Preferencji Firefoksa -> Zaawansowane -> Sieć -> Ustawienia ... i ustawiłem Serwer proxy HTTP na „bramę” i Port na 8080, i zaznaczyłem „Użyj tego serwera proxy dla wszystkich protokołów”. Następnie strona załadowana. To potwierdza moją teorię.
Próbowałem ustawić zmienne środowiskowe http_proxy i https_proxy (małe i wielkie litery):
$ set | grep -i proxy
HTTPS_PROXY=https://gateway:8080
HTTP_PROXY=http://gateway:8080
http_proxy=http://gateway:8080
https_proxy=https://gateway:8080
Próbowałem też zmienić je na:
$ set | grep -i proxy
HTTPS_PROXY=gateway:8080
HTTP_PROXY=gateway:8080
http_proxy=gateway:8080
https_proxy=gateway:8080
Próbowałem dodać tę drugą linię do /etc/apt/apt.conf:
Acquire::http::proxy "http://gateway:8080/";
Acquire::https::proxy "https://gateway:8080/";
Ale nadal pojawia się ten sam błąd.
Jak rozwiązać ten problem?
Aktualizacja: Postępowałem zgodnie z instrukcjami w zaakceptowanej odpowiedzi na „Problem z dodawaniem repozytoriów i łączeniem się z terminala za proxy” i dostałem dalej:
$ sudo add-apt-repository ppa:linaro-maintainers/toolchain
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv 1DD749B890A6F66D050D985CF1FCBACA7BE1F97B
gpg: requesting key 7BE1F97B from hkp server keyserver.ubuntu.com
gpgkeys: HTTP fetch error 7: couldn't connect to host
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
Zastanawiam się, czy „błąd pobierania HTTP” oznacza, że muszę również dodać „Domyślne env_keep = http_proxy” do /etc/sudoers
...
Aktualizacja nr 2: Dodałem:
Defaults env_keep="http_proxy"
Defaults env_keep="https_proxy"
... jak w komentarzu 18 dla błędu 516032 , ale wciąż pojawia się ten sam błąd „gpgkeys: błąd pobierania HTTP 7: nie można połączyć się z hostem”.
I to jest ciekawe:
$ sudo env | grep proxy
https_proxy=https://gateway:8080
... ponieważ http_proxy nie ma.
Wszelkie porady są mile widziane.
Aktualizacja nr 3: Ponieważ hostem mojej maszyny wirtualnej jest laptop, zabrałem ją do domu i wypróbowałem (bez serwerów proxy):
$ sudo add-apt-repository ppa:linaro-maintainers/toolchain
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv 1DD749B890A6F66D050D985CF1FCBACA7BE1F97B
gpg: requesting key 7BE1F97B from hkp server keyserver.ubuntu.com
gpg: key 7BE1F97B: public key "Launchpad Linaro Overlay PPA" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
Zadziałało. Problem związany jest z konfiguracją proxy. Ale przypuszczam, że mam obejście.
źródło
Odpowiedzi:
Oprócz konfigurowania serwerów proxy powiedz,
sudo
aby chronić środowisko z-E
opcją:z nazwą użytkownika i hasłem:
źródło
https_proxy
konfiguracja była konieczna ...: Pman sudo
:-E, --preserve-env
Wskazuje na politykę bezpieczeństwa, że użytkownik chce zachować istniejące zmienne środowiskowe. Polityka bezpieczeństwa może zwrócić błąd, jeśli użytkownik nie ma uprawnień do ochrony środowiska. MUżyj następującego kodu w terminalu, aby dodać klucz gpg za serwerem proxy,
I odpowiednio zamień wielkie litery. Jeśli używasz serwera proxy bez uwierzytelnienia użytkownika (tj. Nazwy użytkownika i hasła), użyj
http-proxy=http://PROXY_URL:PORT/
zamiast tego.Na przykład,
GPG_KEY=C2514567EEA14886
abyś mógł użyć,gdzie,
Jeśli nie masz uwierzytelnienia użytkownika, po prostu użyj,
źródło
Wreszcie! Musisz ustawić https_proxy poprzez:
tylko ustawiony http_proxy to za mało.
Musiałem wykonać polecenie add-apt-repository jako root, NIE poprzez sudo.
Kod:
źródło
Wygląda na to, że konfiguracja proxy jest skonfigurowana, ale jakoś nie można się skontaktować z serwerem ...
Miałem bardzo podobny problem, który rozwiązałem w ten sposób: korporacyjny serwer proxy ze względów bezpieczeństwa zezwala tylko na port 80 i 443, więc zdarzenie po jego skonfigurowaniu, ponieważ protokół HKP używa portu 11371, nie przepuści.
Tak więc, po wyłączeniu SSH i uzyskaniu klucza z jednego z serwerów na zewnątrz, pobraniu go i zainstalowaniu lokalnie, możesz określić serwer kluczy z jednego z wymienionych poniżej i określić port:
http://sks-keyservers.net/overview-of-pools.php
na przykład:
Bum, Voila!
źródło
sudo -E apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
Twoja
sudoers
zmiana nie zadziałała zgodnie z oczekiwaniami, ponieważ zamiast:Powinieneś napisać:
Upewnij się również, że odstęp między
Defaults
ienv_keep
jest tabulatorem za każdym razem.źródło
Udało mi się to obejść, edytując
/usr/lib/python3/dist-packages/softwareproperties/ppa.py
i dodającpod następującą linią
Więcej informacji ogólnych
ppa.py
jest skryptem Pythona używanymadd-apt-repository
do wywoływania gpg. Czasami wydaje się, że występuje błąd w gpg, który nie używa zmiennej środowiskowej http_proxy. Można to potwierdzić, przeglądając plik/root/.gnupg/dirmngr.conf
i sprawdzając,honor-http-proxy
czy nie został on skomentowany.źródło
To czteroetapowe podejście działało dla mnie na maszynie Wirtualnej Ubuntu 17.04 za korporacyjnym proxy.
sudo apt-add-repository ppa:brightbox/ruby-ng
i niech zawodzisudo apt update
i poszukaj komunikatu o błędzie, takiego jakThe following signatures couldn't be verified because the public key is not available: NO_PUBKEY F5DA5F09C3173AA6
sudo apt-key adv --keyserver-options http-proxy=http://10.0.2.2:3128 --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F5DA5F09C3173AA6
sudo apt update
będzie teraz działaćNależy zauważyć, że hosta VM działa
CNTLM
serwer proxy na porcie 3128.źródło
Pomogło mi to:
Sądzę, że istnieją pewne zmienne środowiskowe, które nie są potrzebne w poleceniu, ale nie szkodzą.
źródło
Dodaj PPA ręcznie do
/etc/apt/sources.list
:Zapisz plik i uruchom
sudo apt-get update
. Ten błąd może się pojawić:Uruchom następujące polecenie, aby zaakceptować klucz PPA, pamiętając o zmianie klucza (5BB92C09DB82666C) dla odpowiedniego PPA.
Uruchom
sudo apt-get update
i gotowe.Ref: Jak dodać PPA Launchpad w Debianie za pomocą
add-apt-repository
poleceniaźródło
Właściwie mam te same problemy, tak znalazłem tę stronę.
zmienne środowiskowe http_proxy (wielkość liter ma znaczenie) i https_proxy (niezależnie od wielkości liter) coś robią. Nieprzedstawienie ich kończy się niepowodzeniem w pierwszym etapie, ustawienie zmiennych środowiskowych wydaje się mieć pewien efekt; zakończy się niepowodzeniem, jeśli ich nie wyeksportujesz
(reszta się udała - tym razem)
Chodzi o to, że czasem się zacina i kończy się zwykłym komunikatem o przekroczeniu limitu czasu: Nie można dodać PPA: „” Błąd odczytu https://launchpad.net/api/1.0/~webupd8team/+archive/java : (7, ” Nie można połączyć się z portem launchpad.net 443: Przekroczono limit czasu połączenia „)”.
... ale oszukuję, robię to wszystko jako root. Łatwym rozwiązaniem jest edycja / etc / profile lub, na Ubuntu / Mint, po prostu dodaj skrypt w /etc/profile.d:
Och, tak, jest też coś takiego w curl (przy okazji, którego używa apt-add-repository). Podręcznik mówi, aby dodać .curlrc do katalogu domowego. Ponieważ katalog apt-add-należy do roota, oznacza to dodanie go do katalogu /root/.curlrc:
Dobrym pomysłem jest zrobienie tego samego we własnym ~ / .curlrc
Również włączenie proxy w / etc / wgetrc jest dobrą rzeczą, chociaż nie ma to nic wspólnego z zadanym pytaniem, po prostu zapisuję ci kolejne wyszukiwanie w Google (jeśli to czytasz, masz wiele z proxy ) ...
źródło
W
/etc/apt/apt.conf.d/01proxy
dodać coś jak tenSpowoduje to proxy wszystkich pobrań aptitude, ale myślę, że to jedyny sposób, aby to zrobić na backend. Jeśli Twój serwer proxy to obsługuje, możesz także użyć adresu URL, dla
http://my.proxy:port/www.target.site.com/url
którego wiem, że działaapt-cache-ng
Nie jestem pewien, czy samo add-apt-repository używa tych ustawień, ale jeśli nie możesz sprawić, by działało, zawsze możesz dodać repozytorium do swojego
/etc/apt/sources.list
lub/etc/apt/sources.list.d/*mytoolchain*
Od 11.10 w głównym repozytorium jest także możliwość wymiany narzędzi
apt-get install gcc-arm-linux-gnueabihf
. Istnieją również łańcuchy narzędzi dostępne od emdebian, a niektóre instrukcje tutaj: http://gsoc.sitedethib.com/posts/apt-get_install_gcc-4.7-arm-linux-gnueabihf/źródło
Używam http poprzez curl zamiast próbować proxy apt-key lub gpg:
curl -sSL \ ' http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xBBEBDCB318AD50EC6865090613B00F1FD2C19886 ' \ | sudo apt-key add -
Ta metoda powinna być stosowana zamiast
apt-key
linii poleceń lubhttp_proxy
lubhttps_proxy
ustawienia zmiennych środowiskowych (które są wyłączone w najnowszych wersjach apt-key).źródło
Wykonaj poniższe polecenie w terminalu
źródło
Zmienne środowiskowe dla całego systemu powinny być naprawdę dodane
/etc/environment
(użyjsudo
lubgksu
), ale zgłoszony błąd wydaje się wskazywać, że nie znaleziono danych gpg. Pomysły:źródło
Innym rozwiązaniem jest dodanie
proxy.conf
pliku APT ,/etc/apt/apt.conf.d/proxy.conf
źródło