1 回答

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
AFAIK,您需要附加 /usr/share/gocode
到您的GOPATH
環(huán)境變量(在您自己的私有 Go 工作區(qū)之后,以 分隔:
)以使這些包可用于go
工具鏈。
請參閱本指南(并查看dpkg -L
任何感興趣的已安裝 Go 庫包的輸出——您會(huì)看到包的導(dǎo)入路徑實(shí)際上位于 下/usr/share/gocode/src
)。
(擴(kuò)展@Flimzy 在他們對原始帖子的評(píng)論中提出的建議,@JimB 在他們的評(píng)論中進(jìn)行了擴(kuò)展……)
您可能需要清楚地說明自己在開發(fā)時(shí)的意圖是什么。
“問題”是 Debian 和 Go 管理依賴項(xiàng)的方法存在一定的不確定性:
Go 社區(qū)建議的常見做法是修復(fù)特定版本的依賴項(xiàng)(這些天 - 通過go modules)并讓工具鏈為您獲取并安裝它們,或者提供您的依賴項(xiàng) - 這在邏輯上是相同的,但在此如果您實(shí)際上將這些依賴項(xiàng)作為代碼庫的一部分?jǐn)y帶(它們只是位于特定目錄中)。
前者建議用于庫代碼和一般可供第三方重用的代碼,而后者通常用于“最終”產(chǎn)品(通常是內(nèi)部開發(fā))。
Debian 采用的方法是集成:可以理解的是,他們拒絕不受控制地嵌入依賴項(xiàng)的想法,并嘗試確保所有與其他任何東西“反向依賴”的東西都被正確打包,理想情況下只有給定的單個(gè)版本庫存在于任何特定的操作系統(tǒng)版本中(但這在現(xiàn)實(shí)生活中并不總是可能的)。
這兩種方法最終都不是“正確的”,因?yàn)樗鼈冞m用于不同的用例。
需要考慮的重要一點(diǎn)是,大多數(shù)(如果不是全部)用 Go 編寫行業(yè)代碼的團(tuán)隊(duì)將底層操作系統(tǒng)視為一個(gè)無聊的實(shí)現(xiàn)細(xì)節(jié)——比如,一個(gè)不太有趣的“東西”塊,只是需要運(yùn)行目標(biāo)產(chǎn)品(如今,通過使用容器將這種方法發(fā)揮到了極致)并自行管理它們的依賴關(guān)系。
這是為什么?
這是一個(gè)哲學(xué)問題。我認(rèn)為這主要?dú)w結(jié)為企業(yè)中普遍缺乏適當(dāng)技能的人員來與目標(biāo)平臺(tái)進(jìn)行適當(dāng)?shù)募?,同時(shí) - 易于維護(hù)您自己的經(jīng)過嘗試和測試的依賴項(xiàng)版本,而不是提供的那些由發(fā)行版。
現(xiàn)在讓我們從另一個(gè)角度看一下 Debian 打包的 Go 庫。
Debian 打包程序通過打包 Go 庫包來解決他們以集成為中心的任務(wù),這種方式使它們可供 Debian 的構(gòu)建助手使用(請參閱參考資料dh-golang
)。也就是說,在 Debian 中,當(dāng)您準(zhǔn)備一些用 Go 編寫的程序的包時(shí),您將不可避免地使用dh-golang
確保 Go 工具鏈以可以利用已安裝包的方式調(diào)用的東西。
現(xiàn)在考慮相當(dāng)大比例的 Go 庫代碼,并且許多可運(yùn)行程序與平臺(tái)無關(guān),如果您編寫的 Go 代碼旨在通用,因此將發(fā)布在某個(gè)地方(例如在一些流行的 Git托管解決方案),最好以任何開發(fā)人員都可以抓住它并能夠在沒有任何特殊準(zhǔn)備的情況下對其進(jìn)行工作的方式來組織代碼。
所以,我要引導(dǎo)你的是,除非你編寫的代碼肯定只會(huì)在Debian 中使用,否則你的方法可能是正確的,但如果你正在編寫“常規(guī)”Go 代碼,我建議將“編寫+維護(hù)代碼”和“Debian 集成”任務(wù)分開——也就是說,按照 Go 社區(qū)推薦的方式編寫代碼,然后編寫使用已安裝依賴項(xiàng)的 Debian 包。
請注意,對于后者,您可能首先需要實(shí)際打包所有缺少的依賴項(xiàng)。
- 1 回答
- 0 關(guān)注
- 125 瀏覽
添加回答
舉報(bào)