- Вопрос или проблема
- Ответ или решение
- Решение проблемы с добавлением PPA-репозитория OpenSSH
- Причины ошибки
- Шаги для устранения проблемы
- 1. Проверьте состояние сетевого подключения
- 2. Проверка состояния DNS-серверов
- 3. Настройка и изменение DNS-серверов
- 4. Перезагрузка сетевых служб
- 5. Проверка маршрутизации
- 6. Попытка повторного добавления PPA
- Заключение
Вопрос или проблема
$ sudo add-apt-repository ppa:openssh/openssh
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line 1363, in _conn_request
conn.connect()
File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line 1139, in connect
address_info = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM)
File "/usr/lib/python3.10/socket.py", line 955, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -5] Нет адреса, связанного с именем хоста
Во время обработки вышеупомянутого исключения возникло другое исключение:
Traceback (most recent call last):
File "/usr/bin/add-apt-repository", line 364, in <module>
sys.exit(0 if addaptrepo.main() else 1)
File "/usr/bin/add-apt-repository", line 347, in main
shortcut = handler(source, **shortcut_params)
File "/usr/lib/python3/dist-packages/softwareproperties/shortcuts.py", line 40, in shortcut_handler
return handler(shortcut, **kwargs)
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 82, in __init__
if self.lpppa.publish_debug_symbols:
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 120, in lpppa
self._lpppa = self.lpteam.getPPAByName(name=self.ppaname)
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 107, in lpteam
self._lpteam = self.lp.people(self.teamname)
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 98, in lp
self._lp = login_func("%s.%s" % (self.__module__, self.__class__.__name__),
File "/usr/lib/python3/dist-packages/launchpadlib/launchpad.py", line 494, in login_anonymously
return cls(
File "/usr/lib/python3/dist-packages/launchpadlib/launchpad.py", line 230, in __init__
super(Launchpad, self).__init__(
File "/usr/lib/python3/dist-packages/lazr/restfulclient/resource.py", line 472, in __init__
self._wadl = self._browser.get_wadl_application(self._root_uri)
File "/usr/lib/python3/dist-packages/lazr/restfulclient/_browser.py", line 447, in get_wadl_application
response, content = self._request(url, media_type=wadl_type)
File "/usr/lib/python3/dist-packages/lazr/restfulclient/_browser.py", line 389, in _request
response, content = self._request_and_retry(
File "/usr/lib/python3/dist-packages/lazr/restfulclient/_browser.py", line 359, in _request_and_retry
response, content = self._connection.request(
File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line 1725, in request
(response, content) = self._request(
File "/usr/lib/python3/dist-packages/launchpadlib/launchpad.py", line 144, in _request
response, content = super(LaunchpadOAuthAwareHttp, self)._request(
File "/usr/lib/python3/dist-packages/lazr/restfulclient/_browser.py", line 184, in _request
return super(RestfulHttp, self)._request(
File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line 1441, in _request
(response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line 1370, in _conn_request
raise ServerNotFoundError("Не удается найти сервер по адресу %s" % conn.host)
httplib2.error.ServerNotFoundError: Не удается найти сервер по адресу api.launchpad.net
Не удается найти сервер по адресу api.launchpad.net
означает, что вы не можете разрешить адрес. Теперь может быть несколько причин, скорее всего, вы неправильно настроили что-то в ваших DNS-серверах или ваша сеть не настроена. Пожалуйста, проверьте вашу сетевую конфигурацию и убедитесь, что сетевая карта правильно настроена и активна.
Прежде всего, проверьте, какую сетевую карту вы используете:
nmcli device
Это должно показать как минимум две записи, одну для обратной петли и другую для сетевой карты, которую вы используете. Как только у вас будет название сетевой карты, вы можете проверить, какой DNS-сервер фактически настроен на этой карте, выполнив
nmcli device show <card-name>
В качестве примера, на моей системе:
nmcli device
DEVICE TYPE STATE CONNECTION
enp0s3 ethernet connected netplan-enp0s3
lo loopback connected (externally) lo
br-4873a3029be6 bridge connected (externally) br-4873a3029be6
docker0 bridge connected (externally) docker0
Здесь нас интересует карта enp0s3, так как lo является обратной петлей, а два других устройства являются виртуальными устройствами (одно — это мост к другой сети, другое — мост сети docker)
Теперь выберите имя и выполните:
nmcli device show enp0s3
Вывод должен быть похожим на:
GENERAL.DEVICE: enp0s3
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 08:00:27:24:B2:9B
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: netplan-enp0s3
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 10.0.2.15/24
IP4.GATEWAY: 10.0.2.2
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 10.0.2.2, mt = 100
IP4.ROUTE[2]: dst = 10.0.2.0/24, nh = 0.0.0.0, mt = 100
IP4.DNS[1]: 10.0.2.3
IP6.ADDRESS[1]: fd00::a00:27ff:fe24:b29b/64
IP6.ADDRESS[2]: fe80::a00:27ff:fe24:b29b/64
IP6.GATEWAY: fe80::2
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 256
IP6.ROUTE[2]: dst = ::/0, nh = fe80::2, mt = 1024
IP6.ROUTE[3]: dst = fd00::/64, nh = ::, mt = 256
Обратите внимание на IP4.DNS: он сообщает мне, что использует внутренний DNS (мой адрес 10.0.2.15, мой шлюз 10.0.2.2, это означает, что я нахожусь в подсети 10.0.2).
Если вы настроили свой маршрутизатор как DNS-сервер, у вас будет что-то подобное тому, что есть у меня (за исключением “сетевых номеров”). Очень распространено использовать публичные DNS-серверы, такие как те, которые представлены в этом списке
Если вы не можете понять информацию, которую видите, пожалуйста, предоставьте результаты команд, которые я предложил выше, и мы посмотрим, сможем ли помочь
Ответ или решение
Решение проблемы с добавлением PPA-репозитория OpenSSH
При попытке добавить PPA-репозиторий OpenSSH команда sudo add-apt-repository ppa:openssh/openssh
завершилась неудачей с ошибкой, указывающей на невозможность разрешения хоста api.launchpad.net
:
httplib2.error.ServerNotFoundError: Unable to find the server at api.launchpad.net
Причины ошибки
Ошибка ServerNotFoundError
возникает в результате проблемы с сетью или неправильной конфигурации DNS. Это означает, что ваша система не может связаться с адресом, необходимым для загрузки информации о PPA. Основные причины могут включать:
- Проблемы с подключением к Интернету: Возможны отключения или неверные настройки сетевых интерфейсов.
- Неправильные настройки DNS: Если DNS-серверы не настроены правильно, система не сможет разрешить адреса хостов.
- Блокировка на уровне сети: Например, файрвол или настройки прокси могут препятствовать выходу в Интернет.
Шаги для устранения проблемы
1. Проверьте состояние сетевого подключения
Сначала убедитесь, что ваше устройство подключено к сети. Выполните команду:
nmcli device
Вы должны увидеть список сетевых интерфейсов и их статусов. Убедитесь, что один из интерфейсов (например, enp0s3) имеет состояние "connected".
2. Проверка состояния DNS-серверов
После того как определите рабочую сетевую карточку, выполните команду:
nmcli device show <имя_интерфейса>
Например:
nmcli device show enp0s3
Обратите внимание на строку IP4.DNS
, которая указывает на используемый DNS-сервер. Убедитесь, что это корректный адрес. Если у вас нет доступа к DNS-серверам от вашего интернет-провайдера или роутера, рассмотрите возможность использования публичных DNS-серверов, таких как Google DNS (8.8.8.8) или Cloudflare DNS (1.1.1.1).
3. Настройка и изменение DNS-серверов
Если необходимо изменить DNS-серверы, это можно сделать с помощью команды для редактирования конфигурации сетевого менеджера:
sudo nano /etc/resolv.conf
Добавьте строки для новых DNS-серверов, например:
nameserver 8.8.8.8
nameserver 8.8.4.4
Закройте и сохраните файл.
4. Перезагрузка сетевых служб
Для применения изменений перезагрузите сетевые службы:
sudo systemctl restart NetworkManager
Или перезагрузите устройство.
5. Проверка маршрутизации
Также полезно проверить маршрутизацию. Выполните команду:
ip route
Убедитесь, что вы видите корректный маршрут по умолчанию (default via <gateway>
), указывающий на ваш маршрутизатор.
6. Попытка повторного добавления PPA
После завершения всех вышеуказанных шагов снова выполните команду добавления PPA:
sudo add-apt-repository ppa:openssh/openssh
Заключение
Когда вы сталкиваетесь с проблемами добавления PPA-репозиториев, часто это связано с настройками сети или DNS. Следуя описанным шагам, вы сможете эффективно устранить ошибки и восстановить доступ к необходимым ресурсам. Если проблемы сохраняются, стоит обратиться за поддержкой к вашему интернет-провайдеру или системному администратору для глубокой диагностики сети.