Làm cách nào để có được add-apt-repository để hoạt động thông qua proxy?


119

Tôi đang cố gắng làm theo hướng dẫn "Cài đặt Cross Toolchain trên Ubuntu 10.04 (Lucid) và 10.10 (Maverick) Hosts" trên wiki.linaro.org (trên máy ảo Ubuntu 10.04 của tôi). Bước đầu tiên là:

sudo add-apt-repository ppa:linaro-maintainers/toolchain

Nhưng khi tôi chạy, tôi nhận được:

Error reading https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain: <urlopen error [Errno 110] Connection timed out>

Tôi đoán vấn đề là do cấu hình của tôi cho máy chủ proxy của chủ nhân, đặc biệt là đối với HTTPS.

Khi tôi mở https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain trong Firefox, tôi nhận được "Kết nối đã hết thời gian". Sau đó, tôi đã đi vào Tùy chọn Firefox -> Nâng cao -> Mạng -> Cài đặt ... và đặt Proxy HTTP thành "cổng" và Cổng thành 8080 và kiểm tra "Sử dụng máy chủ proxy này cho tất cả các giao thức". Sau đó trang được tải. Điều này hỗ trợ lý thuyết của tôi.

Tôi đã thử đặt các biến môi trường http_proxy và https_proxy (cả chữ thường và chữ hoa):

$ set | grep -i proxy
HTTPS_PROXY=https://gateway:8080
HTTP_PROXY=http://gateway:8080
http_proxy=http://gateway:8080
https_proxy=https://gateway:8080

Tôi cũng đã thử thay đổi chúng thành:

$ set | grep -i proxy
HTTPS_PROXY=gateway:8080
HTTP_PROXY=gateway:8080
http_proxy=gateway:8080
https_proxy=gateway:8080

Và tôi đã thử thêm dòng thứ hai này vào /etc/apt/apt.conf:

Acquire::http::proxy "http://gateway:8080/";
Acquire::https::proxy "https://gateway:8080/";

Nhưng tôi vẫn tiếp tục nhận được lỗi tương tự.

Làm thế nào để tôi khắc phục sự cố này?

Cập nhật: Tôi đã làm theo các hướng dẫn trong câu trả lời được chấp nhận cho "Sự cố thêm kho lưu trữ và kết nối từ thiết bị đầu cuối phía sau proxy" và nhận được thêm:

$ 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

Tôi tự hỏi liệu "lỗi tìm nạp HTTP" có nghĩa là tôi cũng cần thêm "Mặc định env_keep = http_proxy" vào /etc/sudoers...

Cập nhật # 2: Tôi đã thêm:

Defaults env_keep="http_proxy"
Defaults env_keep="https_proxy"

... như trong Nhận xét 18 về lỗi 516032 , nhưng tôi vẫn gặp lỗi "gpgkeys: lỗi tìm nạp HTTP 7: không thể kết nối với máy chủ".

Và điều này thật tò mò:

$ sudo env | grep proxy
https_proxy=https://gateway:8080

... bởi vì http_proxy không có ở đó.

Bất kỳ lời khuyên được đánh giá cao.

Cập nhật # 3: Vì máy chủ VM của tôi là máy tính xách tay, tôi đã mang nó về nhà và dùng thử ở đó (không có 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)

Nó đã làm việc. Vì vậy, vấn đề liên quan đến cấu hình proxy. Nhưng tôi cho rằng tôi có một cách giải quyết.


Câu trả lời:


183

Ngoài việc định cấu hình proxy, hãy sudobảo vệ môi trường bằng -Etùy chọn:

export http_proxy=http://<proxy>:<port>
export https_proxy=http://<proxy>:<port>
sudo -E add-apt-repository ppa:linaro-maintainers/toolchain

với tên người dùng và mật khẩu:

export https_proxy=https://<username>:<password>@<proxy>:<port>

Ya thực sự đã làm việc
Shashwat Kumar

14
-E (sau khi làm tất cả những thứ khác ở trên) đã làm cho nó hoạt động.
cschooley

2
và vâng, https_proxycấu hình là cần thiết ...: P
monkut

1
Làm cách nào để thêm proxy vĩnh viễn và tránh chuyển đổi -E? Tôi đã tập tin / etc / môi trường được cấu hình đúng với các dòng được thêm vào ... Cảm ơn
Enrique

1
From man sudo: -E, --preserve-envBiểu thị chính sách bảo mật mà người dùng muốn duy trì các biến môi trường hiện có của họ. Chính sách bảo mật có thể trả về lỗi nếu người dùng không có quyền bảo vệ môi
trường.m

39

Sử dụng mã sau trong một thiết bị đầu cuối để thêm khóa gpg phía sau proxy,

sudo apt-key adv --keyserver-options http-proxy=http://USER:PASSWORD@PROXY_URL:PORT/ --keyserver keyserver.ubuntu.com --recv-keys GPG_KEY

Và thay thế chữ in hoa cho phù hợp. Nếu bạn đang sử dụng proxy mà không có bất kỳ xác thực người dùng nào (ví dụ: tên người dùng và mật khẩu), hãy sử dụng http-proxy=http://PROXY_URL:PORT/thay thế.

Ví dụ để GPG_KEY=C2514567EEA14886bạn có thể sử dụng,

sudo apt-key adv --keyserver-options http-proxy=http://user:abc123@10.10.2.21:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886

Ở đâu,

USER_ID=user
PASSWORD=abc123
PROXY_URL=10.10.2.21
PORT=3128

Nếu bạn không có xác thực người dùng chỉ cần sử dụng,

sudo apt-key adv --keyserver-options http-proxy=http://10.10.2.21:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886

3
Điều này không thực sự "sửa" thực thi lệnh add-apt-repository. Quả thực nó hoạt động xung quanh một trong những nhiệm vụ của nó. Ít nhất một lệnh bổ sung là cần thiết: sudoedit /etc/apt/source.list.d/XXXX.list + phiên bản thủ công để thêm URL gỡ lỗi ...
Chucky

Sẽ là hoàn hảo nếu bạn thêm một số thông tin làm thế nào để sửa proxy vĩnh viễn. Giải pháp bạn cung cấp yêu cầu RẤT NHIỀU cách gõ
Danatela

9

Cuối cùng! Bạn cần đặt https_proxy qua:

export https_proxy=....

chỉ đặt http_proxy là không đủ.

Và tôi cần phải thực thi lệnh add-apt-repository dưới dạng root, KHÔNG qua sudo.

Mã số:

sudo su
add-apt-repository ppa:........

6

Có vẻ như cấu hình proxy được thiết lập nhưng bằng cách nào đó, máy chủ không thể liên lạc được ...

Tôi đã gặp một vấn đề tương tự mà tôi đã giải quyết như sau: Proxy công ty chỉ cho phép cổng 80 và 443 vì lý do bảo mật, vì vậy, khi nó được thiết lập, vì giao thức HKP đang sử dụng cổng 11371, nó sẽ không cho phép bạn qua.

Vì vậy, thiếu SSH và lấy khóa từ một trong các máy chủ của bạn bên ngoài, tải xuống và cài đặt cục bộ, bạn có thể chỉ định máy chủ khóa từ một trong những máy chủ được liệt kê bên dưới và chỉ định cổng:

http://sks-keyservers.net/overview-of-pools.php

ví dụ:

apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys XXXXX

Bùng nổ, Voila!


Vâng Điều này làm việc với tôi, trong khi cài đặt Mono trên Debian 7:sudo -E apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
ken

3

Lý do sudoersthay đổi của bạn không hoạt động như mong đợi là vì thay vì:

    Defaults env_keep="http_proxy"
    Defaults env_keep="https_proxy"

Bạn nên viết:

    Defaults env_keep+="http_proxy"
    Defaults env_keep+="https_proxy"

Cũng đảm bảo không gian giữa Defaultsenv_keeplà một tab mỗi lần.


3

Tôi quản lý để khắc phục điều này bằng cách chỉnh sửa /usr/lib/python3/dist-packages/softwareproperties/ppa.pyvà thêm

"--keyserver-options", "http-proxy=<proxy_url>",

dưới dòng sau

"--keyserver", self.keyserver,

Thêm thông tin cơ bản

ppa.pylà tập lệnh python được sử dụng add-apt-repositoryđể gọi gpg. Đôi khi dường như có một lỗi với gpg khi nó không sử dụng biến môi trường http_proxy. Điều này có thể được xác nhận bằng cách xem tệp /root/.gnupg/dirmngr.confvà kiểm tra xem honor-http-proxykhông được bình luận.


3

Cách tiếp cận bốn bước này đã làm việc với tôi trên máy ảo Ubuntu 17.04 đằng sau một proxy công ty.

  1. sudo apt-add-repository ppa:brightbox/ruby-ng và để nó thất bại
  2. sudo apt update và tìm kiếm một thông báo lỗi như The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F5DA5F09C3173AA6
  3. sudo apt-key adv --keyserver-options http-proxy=http://10.0.2.2:3128 --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F5DA5F09C3173AA6
  4. sudo apt update bây giờ sẽ làm việc

Lưu ý rằng máy chủ VM đang chạy CNTLMmáy chủ proxy trên cổng 3128.


1
Bạn không cần phải đợi apt cho bạn biết chìa khóa là gì. Nó có trong các chi tiết kỹ thuật của PPA : "Dấu vân tay: 80F70E11F0F0D5F10CB20E62F5DA5F09C3173AA6"
muru

Điều đó đúng, nhưng tôi thấy quá trình này dễ dàng hơn một chút.
thegreendroid

1

Điều này đã giúp tôi:

sudo https_proxy='https://user:password@proxyhost:port/' \
http_proxy='http://user:password@proxyhost:port/' \
ftp_proxy='ftp://user:password@proxyhost:port/' \
no_proxy=localhost,127.0.0.0/8,10.0.0.0/8 add-apt-repository ppa:webupd8team/java

Tôi đoán rằng có một số biến môi trường không cần thiết trong lệnh nhưng chúng không gây hại.


1

Thêm PPA thủ công vào /etc/apt/sources.list:

deb http://ppa.launchpad.net/<user>/<repo>/ubuntu trusty main

Lưu tập tin và chạy sudo apt-get update. Lỗi này có thể bật lên:

W: GPG error: http://ppa.launchpad.net trusty InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5BB92C09DB82666C

Chạy lệnh sau để chấp nhận khóa cho PPA, hãy nhớ thay đổi khóa (5BB92C09DB82666C) cho PPA tương ứng.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 5BB92C09DB82666C

Chạy sudo apt-get updatevà bạn đã hoàn thành.

Tham khảo: Cách thêm PPA Launchpad trong Debian qua add-apt-repositorylệnh


1

Trên thực tế, tôi gặp vấn đề tương tự, đó là cách tôi tìm thấy trang này.

  • biến môi trường http_proxy (phân biệt chữ hoa chữ thường) và https_proxy (bất kỳ trường hợp nào) làm gì đó. Không đặt chúng thất bại trong giai đoạn đầu tiên, thiết lập các biến môi trường dường như có một số ảnh hưởng; nó sẽ thất bại nếu bạn không xuất chúng

    TCRKVMW ~ $ sudo su -
    TCRKVMW ~ # export http_proxy=http://10.54.0.4:8080/
    TCRKVMW ~ # export https_proxy=http://10.54.0.4:8080/
    TCRKVMW ~ # add-apt-repository ppa:webupd8team/java
    You are about to add the following PPA:
     Oracle Java (JDK) Installer (automatically downloads and installs Oracle JDK7 / JDK8 / JDK9). There are no actual Java files in this PPA.
    

    (phần còn lại là thành công - lần này)

Vấn đề là, đôi khi, nó chỉ bị kẹt và kết thúc bằng thông báo hết thời gian thông thường: Không thể thêm PPA: '"Lỗi đọc https://launchpad.net/api/1.0/~webupd8team/+archive/java : (7,' Không thể kết nối với launchpad.net cổng 443: Đã hết thời gian kết nối ') "'.

... nhưng tôi đang gian lận, tôi đang làm tất cả những điều này như root. Một giải pháp dễ dàng là chỉnh sửa / etc / profile hoặc, trên Ubuntu / Mint, chỉ cần thêm một tập lệnh trong /etc/profile.d:

    TCRKVMW ~ $ sudo su -c 'F=/etc/profile.d/proxy.sh S="export proxy_http=\"http://192.168.99.4\"\nexport proxy_https=\"http://192.168.99.4\"" ; echo -e ${S} > ${F} ; chmod 700 ${F}'

Ồ, vâng, cũng có điều đó về curl (được sử dụng bởi apt-add-repository, nhân tiện). Hướng dẫn nói để thêm .curlrc trong thư mục nhà của bạn. Vì apt-add-thư mục là của riêng root, nên nó có nghĩa là thêm nó vào /root/.curlrc:

    proxy_http="http://192.168.99.4"
    proxy_https="http://192.168.99.4"

Một ý tưởng tốt là làm điều tương tự trong ~ / .curlrc của riêng bạn

Ngoài ra, bật proxy trong / etc / wgetrc là một việc nên làm, mặc dù nó không liên quan gì đến câu hỏi được hỏi, tôi chỉ tiết kiệm cho bạn một tìm kiếm khác trên Google (nếu bạn đọc điều này, bạn có nhiều với một proxy ) ...


1

Trong /etc/apt/apt.conf.d/01proxyadd một cái gì đó như thế này

Acquire::http { Proxy "http://192.168.0.99:3142"; };

Điều này sẽ ủy quyền tất cả các tải xuống năng khiếu, nhưng tôi nghĩ đây là cách duy nhất để làm điều này trên phần phụ trợ. Nếu proxy của bạn hỗ trợ nó, bạn cũng có thể sử dụng một url http://my.proxy:port/www.target.site.com/urlmà tôi biết là hoạt động choapt-cache-ng

Tôi không chắc liệu chính kho lưu trữ add-apt có sử dụng các cài đặt này không, nhưng nếu bạn không thể thực hiện công việc đó, bạn luôn có thể thêm kho lưu trữ vào /etc/apt/sources.listhoặc/etc/apt/sources.list.d/*mytoolchain*

Kể từ 11.10, cũng có một công cụ chéo có sẵn trong repo chính apt-get install gcc-arm-linux-gnueabihf. Ngoài ra còn có các công cụ chéo có sẵn từ emdebian và một số hướng dẫn tại đây: http://gsoc.sitedethib.com/posts/apt-get_install_gcc-4.7-arm-linux-gnuablesihf/


user72421: làm thế nào bạn biết rằng proxy nên có tiền tố là 01 chứ không phải với số khác?
jgomo3

Không hoạt động với apt-get & keyerver
Vik


0

Thực hiện lệnh dưới đây trong thiết bị đầu cuối

export http_proxy=http://username:password@proxyserver.net:port/
export ftp_proxy=http://username:password@proxyserver.netport/

0

Các biến môi trường toàn hệ thống thực sự cần được thêm vào /etc/environment(sử dụng sudohoặc gksu), nhưng lỗi được báo cáo cho bạn dường như không tìm thấy dữ liệu gpg nào. Ý tưởng:

  • kiểm tra cài đặt proxy (nếu bạn có quyền truy cập)
  • kiểm tra xem proxy có bằng cách nào đó kết hợp đầu ra của lưu lượng được mã hóa không.
  • chạy một netstat liên tục để xem liệu kết nối với proxy trên thực tế có được thực hiện không
  • giải pháp cuối cùng sẽ là tcpdump và kiểm tra trong wireshark
  • thử một đường hầm http;)

0

Một giải pháp khác là thêm proxy.conftệp APT ,/etc/apt/apt.conf.d/proxy.conf

Acquire::http::Proxy "http://your.proxy.server.here.com:port/";
Acquire::https::Proxy "http://your.proxy.server.here.com:port/";
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.