Артефакторный срок действия пипи-артефактов - PullRequest
0 голосов
/ 28 мая 2018

У меня есть репозиторий proxy pypi, который может быть обновлен только определенным пользователем, но доступ к которому имеют все, у меня есть частное репозиторий pypi и виртуальное репо для доступа к ним.

Моя проблема в том, что через некоторое времялюбая установка pip в виртуальном репо завершится неудачно, не найдя версий модуля.Я попытался связаться с ним напрямую через https // myartifactory / proxy_name-cache / .pypi / module_name и получаю 404.

https://jfrog.com/knowledge-base/how-to-fix-404-error-resource-has-expired/

Я узнал здесь о политике истечения срока действияи, действительно, если я удаляю -cache из предыдущего URL-адреса или вместо этого использую свой виртуальный репозиторий (без входа в систему), модуль обновляется, и установка pip начинает работать.

Почему некоманда pip install запускает тот же механизм, который обновляет модуль и делает его загружаемым, и как я могу это исправить?

@ EDIT

Я попытаюсь объяснить лучше, что я заполнилкеш от pypi вчера.Сегодня артефакты помечены как просроченные (я вижу, что, выполнив запрос по адресу https // myartifactory / proxy_name-cache / .pypi / module_name.html, который возвращает 404)

Поэтому, выполняя установку pip module_nameне работает (Не удалось найти версию, которая удовлетворяет требованию ...).

Это моя проблема

Дело в том, что если я сделаю тот же запрос, который вернул мне ошибку 404, но на proxy_name или virt_name вместо proxy_name-cache, тогда артефакт обновляет артефакт своей версией выше и затем он начинает работать (пока снова не помечен как просроченный)

Такое поведение заставляет меня задуматься, почему выполнениеУстановка pip вместо простого запроса (например, с помощью curl или с помощью браузера) не обновляет артефакт до его исходной версии тоже

Чтобы проиллюстрировать мою проблему:

pip install -i https://myartifactory.net/api/pypi/virt/simple requests  # Could not find a version...
curl https://myartifactory.net/pypi-cache/.pypi/requests.html # 404, resource has expired
curl https://myartifactory.net/virt/.pypi/requests.html # 200, returns the html page of versions, meaning it has updated the module with the upstream version
pip install -i https://myartifactory.net/api/pypi/virt/simple requests  # Is now working

1 Ответ

0 голосов
/ 28 мая 2018

Спасибо за дополнительную информацию:)

Итак, проблема в том, что Artifactory помечает метаданные / индексные файлы (в удаленных репозиториях) как просроченные, чтобы убедиться, что метаданные / индексные файлыв курсе.

В вашем случае вы не хотите давать пользователям возможность изменять данные, извлекать их с удаленного устройства самостоятельно), и по этой причине вы хотите, чтобы они направляли в хранилище '-cache'.

Чтобы достичь желаемого, вы можете переместить / скопировать контент из удаленного репозитория в локальный репозиторий.Это гарантирует, что Artifactory будет вычислять метаданные и не будет истекшим, как в удаленном хранилище.

В случае копирования, если вас беспокоит дублирование пространства, не думайте, что в Artifactory имеется хранилище на основе контрольной суммы, что означает, что не имеет значения, сколько у вас копий артефакта, а толькосоздать дополнительный указатель в базе данных, означающий ссылку из исходного файла на этот указатель:)

...