我怎麼能讓 Portage 下載一個包而不做任何其他事情?

我怎麼能讓 Portage 下載一個包而不做任何其他事情?

在連接到 TLS 伺服器時遇到一些問題,然後注意到已經app-misc/ca-certificates晚了一年零四個月後,我很好奇自 以來發生了什麼變化20140927.3.17.2。我想我只需獲取該包的副本,從中提取所有內容,然後四處查看即可。瀏覽一下emerge手冊頁--fetchonly( -f):

無需進行任何套件構建,只需對所有套件執行提取(根據 USE 設定從 SRC_URI 提取內容)。

聽起來像我想要的!我們走吧。

caramel:~ blackl% emerge --fetchonly '='app-misc/ca-certificates-20151214.3.21
emerge: portage group access is required

……呃?嗯……我不明白為什麼不行。擁有root權限。

caramel:~ blackl% sudo emerge --fetchonly '='app-misc/ca-certificates-20151214.3.21
Calculating dependencies... done!
[ebuild     U ~] app-misc/ca-certificates-20151214.3.21 [20140927.3.17.2]

The following keyword changes are necessary to proceed:
 (see "package.accept_keywords" in the portage(5) man page for more details)
# required by =app-misc/ca-certificates-20151214.3.21 (argument)
=app-misc/ca-certificates-20151214.3.21 ~amd64

什麼?不……我只是想下載軟體包;我不想實際安裝它或對系統進行任何其他更改。

對手冊頁進行更徹底的搜索沒有發現任何其他看起來相關的內容(除了--fetch-all-uri| -F,它給了我相同的結果)。為什麼emerge在這裡堅持特權存取和關鍵字更改?會是什麼真的除了下載 tarball、驗證它並將其轉儲到工作目錄或快取中之外,還能做什麼?

答案1

問題可能應該更像是:「我如何下載 Portage包來源emerge,並且什麼都不做?ebuild命令(man 1 ebuild),如下圖所示:

ebuild <PATH_TO_EBUILD> fetch

此命令將所有內容下載(並驗證)$SRC_URI到您的$DISTDIR.

要取得變數的值:

要實際將來源取得到您選擇的目錄,只需$DISTDIR像這樣欺騙 var :

DISTDIR=<DIR> ebuild <PATH_TO_EBUILD> fetch

因此,如果您使用預設的 portage 路徑並希望將來源下載到您的主目錄,請發出以下命令:

DISTDIR=~ ebuild /usr/portage/app-misc/ca-certificates/ca-certificates-20151214.3.21.ebuild fetch

相關內容