У меня была проблема с загрузкой в репо Conan на нашем локальном сервере Artifactory (версия 6.5.8).
Сначала я попытался загрузить что-то общедоступное:
conan download zlib/1.2.11@conan/stable
и затем работает (на компьютере с Debian 9.9)
conan upload zlib/1.2.11@conan/stable -r my-local-repo --all
Где my-local-repo
был добавлен в качестве адреса HTTPS. В журналах моей машины Artifactory я обнаружил следующее:
2020-01-09 15:01:24,988 [http-nio-8081-exec-33] [WARN ] (o.a.r.ArtifactoryResponseBase:122) - Sending HTTP error code 409: Checksum policy 'LocalRepoChecksumPolicy: CLIENT' rejected the artifact 'my-local-repo:zlib/1.2.11@conan/stable/export/conanmanifest.txt'. Checksums info: ChecksumsInfo{checksums={SHA-1=ChecksumInfo{type=SHA-1, original='ec870f4efb283ac65d544e0cdb0a603968011a1e', actual='da39a3ee5e6b4b0d3255bfef95601890afd80709'}, MD5=ChecksumInfo{type=MD5, original='null', actual='d41d8cd98f00b204e9800998ecf8427e'}, SHA-256=ChecksumInfo{type=SHA-256, original='null', actual='e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'}}}
Я также пытался сделать то же самое в подсистеме Linux для Window (Ubuntu 16.04), и у меня там не было проблем. И я начал расследование. Сначала я изменил URL локального репо в ~/.conan/remotes.json
, чтобы он выглядел так:
http://artifactory.local:8081/artifactory/api/conan/my-local-repo
Вместо https : //artifactory.local / artifactory / api / conan / my-local-repo
Это сработало.
Итак, я начал проверять журналы Nginx на сервере Artifactory, где я обнаружил, что между двумя основными различиями первый (отказавший) компьютер Debian и второй (успешный) WSL (Ubuntu 16.04):
- user-agent на компьютере Debian был python - запросы 2.19.1 , в то время как на WSL это python -запросы 2.9.1 .
- Машина Debian (с python -запросами 2.19. 1 ) использует метод PUT, в то время как WSL, похоже, этого не делает.
Запуск pip install 'requests==2.9.1' --force-reinstall
решает эту проблему, но я задаюсь вопросом, является ли это правильным способом go? Не должен ли быть способ заставить это работать без использования старых Python -модулей, или это какая-то ошибка в Artifactory?