第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用“go get”下載二進制文件而不將它們添加到 go.mod

使用“go get”下載二進制文件而不將它們添加到 go.mod

Go
qq_花開花謝_0 2023-06-26 17:57:01
我在我的項目和構建系統(tǒng)(例如 Travis CI)中使用 Go 模塊,我正在下載一個命令行實用程序(用 Go 編寫)來go get協(xié)助我的構建過程,例如:go get github.com/mitchellh/gox但是,這go get會導致該文件被添加到我的go.mod文件中。這會污染構建環(huán)境,導致它變得“臟”(因為 git 中跟蹤的某些文件發(fā)生了更改,在本例中為 go.mod 和 go.sum),我用它來描述我的構建,它顯示git describe --always --dirty --tag為“骯臟的”。有沒有辦法“獲取”二進制文件來下載它,而不將其添加到 go.mod/go.sum 中?我嘗試將 GOPATH 設置為其他位置,即使如此,go get也會更新 go.mod/go.sum 以將其添加為// indirect依賴項。dir="$(mktemp -d)"; \   env GOPATH="$dir" go get github.com/mitchellh/gox && \   mv "$dir/bin/gox" "$(go env GOPATH)"/bin/gox
查看完整描述

3 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

轉到 1.16 及以上

Go 1.16(2021 年 2 月發(fā)布)包含一項更改,可以在不影響go.mod.

問題 40276跟蹤該提案:

cmd/go:“go install”應該在模塊外部以模塊模式安裝可執(zhí)行文件

這已在CL 254365中實現(xiàn)。作為此更改的一部分,您可以運行例如:

go?install?golang.org/x/tools/cmd/goimports@latest

安裝二進制文件而不影響go.mod.

要安裝特定版本,請?zhí)鎿Q@latest為例如@v0.1.5。


查看完整回答
反對 回復 2023-06-26
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

希望 Go 1.14 中會有一個新標志可以go get完全滿足您的要求。這在問題#30515?“cmd/go:提供一致的全局安裝命令”中進行了跟蹤。

在此之前,您有幾個不同的選擇。

Go 1.12 和 1.13:更改目錄

go.mod如果您使用的是 Go 1.12 或更高版本,最簡單的解決方案可能是在執(zhí)行 之前將當前模塊移出到一個目錄go get,例如:

$ cd /tmp? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

$ go get github.com/foo/bar@v1.2.3

$ cd -? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # return to prior directory

圍棋 1.11、1.12、1.13+:哥賓

gobin是一個模塊感知命令,用于安裝或運行二進制文件,它提供了額外的靈活性,包括無需更改當前模塊的go.mod.?

Go 1.11:臨時模塊

如果您使用帶模塊的 Go 1.11,第一步可能是升級到 Go 1.12 或 1.13,因為模塊有很多改進。如果您需要使用 Go 1.11 并且希望使用@version語法而不更新當前模塊的go.mod,那么一種方法是創(chuàng)建一個臨時模塊:

cd?$(mktemp?-d)?&&?go?mod?init?tempmod?&&?go?get?github.com/foo/bar@v1.2.3

@version這是因為在 Go 1.11 中,除非在模塊中,否則無法使用該語法,而在 Go 1.12 中則放寬了這一點。這種方法已通過@rogpeppe的簡單 shell 腳本實現(xiàn)了自動化。

額外細節(jié)

一般來說,gomodule-module 中的命令始終確定它“位于”哪個模塊,這基于調用該go命令時的當前工作目錄。(您可以類比如何在make沒有任何參數(shù)的情況下在當前工作目錄中查找 makefile,或者歷史上go build沒有任何參數(shù)將如何構建當前工作目錄等)。

對于模塊,在當前工作目錄或其任何父目錄中go get查找文件,并將使用任何中列出的約束作為解決版本的一部分,并根據(jù)需要更新.?這就是為什么如果您從現(xiàn)有模塊中運行,您的文件會被更新。go.modgo getgo.modgo.modgo getgo.modgo get

另一方面,從 Go 1.12 開始,如果您所在的目錄不屬于任何模塊(即該目錄沒有 ,其父目錄也沒有go.mod),則無需go.mod更新,但是該go命令仍然能夠在模塊模式下運行并使用@version語法。

來自Go 1.12 發(fā)行說明:

當 GO111MODULE 設置為 on 時,go 命令現(xiàn)在支持模塊目錄之外的模塊感知操作,前提是這些操作不需要解析相對于當前目錄的導入路徑或顯式編輯 go.mod 文件。go get、go list 和 go mod download 等命令的行為就像在具有初始為空要求的模塊中一樣。在此模式下, go env GOMOD 報告系統(tǒng)的空設備(/dev/null 或 NUL)。


查看完整回答
反對 回復 2023-06-26
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

go help build

-mod 構建標志提供了對 go.mod 的更新和使用的額外控制。

如果使用 -mod=readonly 調用,則不允許 go 命令隱式自動更新 go.mod


查看完整回答
反對 回復 2023-06-26
  • 3 回答
  • 0 關注
  • 317 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號