簡體   English   中英

pypi偽像的人工期滿

[英]Artifactory expiration of pypi artifacts

我有一個代理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/

我從這里了解了特權策略,實際上,如果我從以前的URL中刪除了-cache,或者如果我改用了我的虛擬存儲庫(沒有登錄到工件中),則模塊將更新並且pip安裝開始工作。

為什么pip install命令沒有觸發更新模塊並使之可下載的機制,我該如何解決?

@編輯

我將嘗試更好地解釋我昨天從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

感謝您的附加信息 :)

因此,這里的問題是Artifactory將元數據/索引文件(在遠程存儲庫上)標記為過期,以確保元數據/索引文件是最新的。

在您的情況下,您不想讓用戶能夠更改數據,由他們自己從遠程獲取數據的功能),因此,您希望他們將用戶定向到“緩存”存儲庫。

要實現所需的功能,可以將內容從遠程存儲庫移動/復制到本地存儲庫。 這將確保Artifactory將計算元數據,並且不會像在遠程存儲庫中那樣使它過期。

對於復制,如果您擔心空間的重復,請不要這樣做,因為Artifactory具有基於校驗和的存儲,這意味着您所擁有的工件有多少副本都沒有關系,因為它只會在數據庫意味着從原始文件到該指針的鏈接:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM