
在連接到 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
.
要取得變數的值:
<PATH_TO_EBUILD>
- 是這樣組成的:
<REPO_DIR>/<CATEGORY>/<PACKAGE_NAME>/<PACKAGE_NAME>-<VERSION>.ebuild
- https://wiki.gentoo.org/wiki/Repository_format
<REPO_DIR>
:portageq get_repo_path / gentoo
$DISTDIR
:portageq 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