Давайте зашифруем certbot-автоматический сбой из-за проблемы с Python / pip

#python #lets-encrypt #certbot

#python #давайте зашифруем #certbot

Вопрос:

Вчера все было нормально, но сегодня, выполнив ту же команду с использованием certbot-auto для обновления сертификата, я получаю это :

 Upgrading certbot-auto 0.31.0 to 0.32.0...
Replacing certbot-auto...
Creating virtual environment...
Installing Python packages...    
/opt/eff.org/certbot/venv/bin/python: No module named pip.__main__; 'pip' is a package and cannot be directly executed
    Traceback (most recent call last):
      File "/tmp/tmp.eUWQ3w7cFV/pipstrap.py", line 177, in <module>
        sys.exit(main())
      File "/tmp/tmp.eUWQ3w7cFV/pipstrap.py", line 149, in main
        pip_version = StrictVersion(check_output([python, '-m', 'pip', '--version'])
      File "/usr/lib/python2.7/subprocess.py", line 544, in check_output
        raise CalledProcessError(retcode, cmd, output=output)
    subprocess.CalledProcessError: Command '['/opt/eff.org/certbot/venv/bin/python', '-m', 'pip', '--version']' returned non-zero exit status 1
  

Я на Debian 7.9 … у кого-нибудь такая же проблема?

Комментарии:

1. Отчет с ошибкой Certbot с некоторыми обходными путями (включая ответ Фелипе). Закрыт как wontfix, поскольку он применяется только к системам с истекшим сроком службы.

Ответ №1:

Это проблема с новейшими версиями (> = 0.32.x) Ubuntu 12.04 и Debian 7.5.

Просто клонируйте предыдущую ветку (я использовал 0.30.x):

 git clone --branch 0.30.x https://github.com/letsencrypt/letsencrypt
  

И используйте опцию --no-self-upgrade при запуске letsencrypt. В моем случае:

 ./letsencrypt-auto certonly --no-self-upgrade --standalone -d mydomain.com
  

Не забудьте добавить --no-self-upgrade в свое задание обновить cron.

Комментарии:

1. Это ответ, который я искал! Спасибо!

2. Рад это слышать 🙂

3. Спасибо, это сработало у меня на Debian Jessie box. Ребята из letsencrypt знают об этой проблеме?

4. @UwePost Я думаю, да, эта информация также доступна на их форумах.

5. Это сработало потрясающе 😉 Когда вы указали Ubuntu 12.04; Я сказал: «- Этот ответ устранит проблему» … Спасибо

Ответ №2:

Я внес следующие 2 изменения в скрипт certbot-auto, и он работает

1-е изменение

 pip_version = StrictVersion(check_output([python, '-m', 'pip', '--version'])
  

Для

 pip_version = StrictVersion(check_output(['pip', '--version'])
  

2-е изменение

 command = [python, '-m', 'pip', 'install', '--no-index', '--no-deps', '-U']
  

Для

 command = ['pip', 'install', '--no-index', '--no-deps', '-U']
  

Ответ №3:

Похоже, это происходит в процессе обновления вашего пакета certbot?

 No module named pip.__main__; 'pip' is a package and cannot be directly executed
  

Это могло быть результатом того, что Python обнаружил папку с именем pip в своих путях включения, прежде чем найти фактический модуль pip. Это немного сложно отладить (вам нужно будет выяснить, какие пути включения в Python указаны в этом контексте, а затем выполнить поиск в них в поисках поврежденной папки), но, возможно, вы сможете устранить проблему, удалив и переустановив пакет certbot-auto.

(Ваша версия Debian довольно древняя, но версия certbot — нет, и она использует virtualenv для своих зависимостей, так что, вероятно, дело не в этом.)

Ответ №4:

Не забудьте перезапустить apache из-за проблемы с привязкой к порту 80: не удалось выполнить привязку к IPv4 или IPv6.

Комментарии:

1. Пожалуйста, объясните свой ответ