2 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個贊
如果你不小心發(fā)布了一個你打算私有的包/模塊,那么go.dev: About頁面:
刪除一個包
如果您想刪除某個包,請發(fā)送電子郵件至
go-discovery-feedback@google.com
,并附上您要刪除的導(dǎo)入路徑或模塊路徑。
但正如 Adrian 在評論中提到的,不能保證沒有人下載您發(fā)布的軟件包。
如果您希望某些包/模塊保持私有,您可以在 go 工具尊重的環(huán)境變量GOPRIVATE
中GONOPROXY
枚舉它們(使用 glob 模式)。GONOSUMDB
GOPRIVATE, GONOPROXY, GONOSUMDB Comma-separated list of glob patterns (in the syntax of Go's path.Match) of module path prefixes that should always be fetched directly or that should not be compared against the checksum database. See 'go help module-private'.
從命令go help module-private
:
GOPRIVATE 環(huán)境變量控制 go 命令認(rèn)為哪些模塊是私有的(不公開),因此不應(yīng)使用代理或校驗(yàn)和數(shù)據(jù)庫。該變量是以逗號分隔的模塊路徑前綴的 glob 模式列表(在 Go 的 path.Match 的語法中)。
這些變量也可以使用go env -w
命令設(shè)置。您可以使用go help env
.

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個贊
對于問題2,我今天嘗試了幾次。如果你想安全地構(gòu)建一個私有包,你應(yīng)該做的最重要的事情是GOPRIVATE
在你構(gòu)建你的包之前設(shè)置。并且GONOPROXY
,GONOSUMDB
將自動設(shè)置為與 相同GOPRIVATE
?,F(xiàn)在你可以編寫代碼并寫入git push
一個私人遠(yuǎn)程倉庫并嘗試go get
它,你會失敗并看到一些類似的錯誤消息:
致命:無法讀取“ https://github.com ”的用戶名:終端提示已禁用 確認(rèn)導(dǎo)入路徑輸入正確。如果這是一個私有存儲庫,請參閱https://golang.org/doc/faq#git_https了解更多信息。
https
該鏈接向我們表明,如果您將密鑰上傳到遠(yuǎn)程 ropo ,我們應(yīng)該使用帶有您的用戶名/密碼的鏈接,或者只需將您的 https 鏈接替換為 ssh 鏈接。完成后,你go get
將從你的源地址(你的包名)而不是代理成功。
Futhurmore,讓我們通過 usinggo clean -modcache
和 set刪除所有 go 模塊緩存GOPRIVATE=""
。我將測試我們的私有包是否已上傳到代理。
案例1:設(shè)置GOPROXY="https://goproxy.io"
或其他代理,然后go get
是私有包。你將面臨一個404 Not Found
向你表明你從代理中找不到任何東西(這意味著沒有任何東西被緩存/存儲在代理中)。
案例2:設(shè)置GOPROXY="direct"
(使用你的包名的直接地址),然后go get
是私有包。你會面臨這樣的錯誤信息:
驗(yàn)證 {PACKAGENAME}:{PACKAGENAME}:初始化 sumweb.Conn:檢查樹#{ID}:獲取https://sum.golang.org/tile/8/2/000.p/11:撥打 tcp {IP}: {PORT}:I/O 超時。
該go get
函數(shù)將嘗試使用您的包檢查來自 golang.org 數(shù)據(jù)庫的校驗(yàn)和(我無法直接鏈接到谷歌服務(wù)器,因此它顯示超時錯誤/我猜如果你可以鏈接到谷歌服務(wù)器,你將得到 404)。它表明,如果我們嘗試go get
使用未設(shè)置的私有包GOPRIVATE
,您將失敗,因?yàn)槟鸁o法通過檢查。
建議:如果你想構(gòu)建你的私有 go 包,你應(yīng)該GOPRIVATE
首先設(shè)置你的包,并確保它足夠?qū)捯园愕陌?/p>
感謝大家閱讀和回答這個問題。
- 2 回答
- 0 關(guān)注
- 323 瀏覽
添加回答
舉報