#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. Пожалуйста, объясните свой ответ