2014-02-06 1 views
7

Я был счастливым человеком, у него был собственный счастливый локальный индекс. Однажды я обновил клиенту pip, и мне больше не нравится:В python PIP, как я могу сделать файлы в моем личном индексе pip «безопасными и проверенными»?

Downloading/unpacking super_package 
Getting page https://my_server/index/super_package/ 
URLs to search for versions for super_package: 
* https://my_server/index/super_package/ 
* https://pypi.python.org/simple/super_package/ 
Analyzing links from page https://my_server/index/super_package/ 
Skipping https://my_server/ci/super_package-0.2.2.tar.gz (from https://my_server/index/super_package/) because it is an insecure and unverifiable file. 

Но ПОЧЕМУ? Я SSL включен на моем сервере, и мой pip.conf файл выглядит следующим образом:

[global] 
cert = /path/to/my_server/cert.pem 
index-url = https://my_server/index 
extra-index-url = https://pypi.python.org/simple/ 

Как «безопасные и поддающиеся проверке» определены «небезопасным и непроверяемый» файл /? Как PIP различает их?

И наконец: Вы хотите, чтобы я переключился на easy_install?

EDIT:

Мой собственный индекс PIP выглядит следующим образом:

<html> 
<head> 
<title>Package Index</title> 
<meta name="api-version" value="2" /> 
</head> 
<body><a href="ADMESARfari/index.html">ADMESARfari</a><br/> 
<a href="chembl-internal-ws/index.html">chembl-internal-ws</a><br/> 
<a href="chembl_api/index.html">chembl_api</a><br/> 
    ... 
<a href="gdb/index.html">gdb</a><br/> 
</body> 
</html> 

CA сертификат сервера PIP установлен на моем Mac, но я все еще с той же проблемой .. .

enter image description here

ответ

1

Вы указываете хеши в своих ссылках на пакеты? Если нет, pip не будет доверять ссылке.

Отъезд the warehouse docs on the simple api для получения более подробной информации/примеров.

+0

Итак, почему это говорит: «Ссылки могут необязательно включать хеш с использованием фрагмента url». Означает ли это, что это не «МОЖЕТ ОПЦИОНАЛЬНО», но ДОЛЖЕН. – mnowotka

+0

Наверное, потому что это необязательно, это просто, что пип на 1.5 больше не будет загружать его без дополнительных флагов; а также потому, что склад находится в стадии интенсивного развития, поэтому я не ожидал, что документы будут абсолютно функциональными или полностью обновленными, начиная с момента их создания, аннотируя старый API. – Ivo

1

Короткий ответ

Проверьте <meta name="api-version" value="..." /> файла https://my_server/index.

Подробный ответ

я мог бы быть более точным, если бы я знал, что истинный адрес вашего локального индекса (с учетом как https://my_server/index) и как вы его создания.

Не знаю, поэтому я надеюсь помочь в следующих более общих мыслях.

Прежде всего, вы можете использовать опцию командной строки --allow-insecure. По-видимому, это не очень хорошая идея, насколько вы заботитесь о безопасности своего компьютера.

Если вы предпочитаете оставаться в защищенной зоне, вам необходимо выяснить, почему ваш источник считается небезопасным и не поддающимся проверке.

Рассматривая код, в котором была создана эта ошибка, вы можете видеть, что наиболее вероятной причиной является результат метода verifiable() класса Link.

Глядя на этот метод и при условии, что ваша страница индекс должен быть в списке trusted из линии

index-url = https://my_server/index 

в файле конфигурации, основной причиной осталось значение переменной _api_version. Для того, чтобы проверить, что это api_version вашего индексного файла проверьте meta теги и искать что-то вроде этого:

<meta name="api-version" value="2" /> 

Если это не существует, или если он имеет значение 1 или меньше, то проблема должна быть здесь.

Существует также проверка hash, но я не исследовал, как это работает.

+0

Привет, спасибо за ответ. Прежде всего, я попытаюсь добавить 'allow-insecure' в мой' pip.conf' и добавить тег 'api-version' с правильным значением и посмотреть, поможет ли это. Если нет, я отредактирую свой вопрос. Проверка 'hash' будет сложнее сделать ... – mnowotka

+0

Попробуйте сначала исправить« api-версию »- это более безопасно –

+0

К сожалению, мне не нужно было проверять ваш ответ в выходные, но поскольку это единственный ответ, если бы это оказалось правильным, я почувствовал бы себя плохо, потеряв шанс наградить вас щедростью. Поэтому я делаю это, но это не значит, что ответ правильный. – mnowotka