Почему во время do-release-upgrade при использовании промежуточного прокси-сервера завершения TLS не обнаружено «новых выпусков»?

Вопрос, который лучше всего подходит для моей ситуации, описан здесь:

ошибка do-release-upgrade в Ubuntu 16.04 LTS - говорит: Новый выпуск не найден

... и вопросы, связанные с этим; Я бы ответил на один из них как на «альтернативный ответ», но моего представителя в SE недостаточно.


В редких случаях проблема возникает из-за использования прокси завершения TLS , факт, который может быть скрыт от конкретного системного администратора VPS или недоступен для настройки.

Проблема проявляется следующим образом:

% do-release-upgrade -c
Checking for a new Ubuntu release
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
There is no development version of an LTS available.
To upgrade to the latest non-LTS develoment release 
set Prompt=normal in /etc/update-manager/release-upgrades.

Однако получение файла вручную работает, например в Ubuntu 18.04.5 LTS:

% curl -s https://changelogs.ubuntu.com/meta-release-lts | grep -A10 focal
Dist: focal
Name: Focal Fossa
Version: 20.04.2 LTS
Date: Thu, 23 April 2020 20:04:00 UTC
Supported: 1
Description: This is the 20.04.2 LTS release
Release-File: http://archive.ubuntu.com/ubuntu/dists/focal-updates/Release
ReleaseNotes: http://archive.ubuntu.com/ubuntu/dists/focal-updates/main/dist-upgrader-all/current/ReleaseAnnouncement
ReleaseNotesHtml: http://archive.ubuntu.com/ubuntu/dists/focal-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html
UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/focal-updates/main/dist-upgrader-all/current/focal.tar.gz
UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/focal-updates/main/dist-upgrader-all/current/focal.tar.gz.gpg

do-release-upgrade написан на Python с использованием urllib , его urlopen по какой-то причине отключается, и я могу » Я не знаю почему.

1
задан 30 April 2021 в 19:42

1 ответ

Я начал с включения режима отладки:

% export DEBUG_UPDATE_MANAGER=yesplz
% do-release-upgrade -c

... и обнаружил следующее в выходных данных:

...
result of meta-release download: '<urlopen error Tunnel connection failed: 403 SSL CONNECT proxying not configured>'
...

Первое, что я пробовал, это изменение URL-адрес в файле / etc / update-manager / meta-release , чтобы иметь http: // вместо https: // . Это "работает", но к этому нельзя относиться легкомысленно.

Я также пробовал установить squid (кэширующий прокси) на том же компьютере и установить переменные среды http [s] _proxy (нижний и верхний регистры), предполагая, что дополнительный уровень программного обеспечения может стать доступным для культовых релизов; но это не сработало (т.е. та же ошибка).

Последний обходной путь - который работает! - загружает файл вручную:

% curl https://changelogs.ubuntu.com/meta-release-lts -o /home/`whoami`/.cache/update-manager-core/meta-release-lts
% sudo curl https://changelogs.ubuntu.com/meta-release-lts -o /var/lib/update-manager/meta-release-lts

... и затем принудительно использует этот файл, редактируя / usr / lib / python3 / dist-packages / UpdateManager / Core / MetaRelease.py и вставка в строку 339 перед попыткой urlopen () :

print('UGLY: urlopen my XSS! >:(')
raise(HTTPError(code=304, url='', msg='', hdrs='', fp=open('/tmp/myXSS', 'w')))

Итак, чтобы ответить на мой собственный вопрос, это, вероятно, из-за:

  • конкретного завершающего прокси TLS конфигурация (которую я не контролирую); или
  • Python urllib urlopen не принимает настройки прокси, либо настройки неверны (в случае « squid обходной путь»).
2
ответ дан 7 May 2021 в 17:41

Другие вопросы по тегам:

Похожие вопросы: