
TLS サーバーに接続する際に問題が発生し、app-misc/ca-certificates
1 年 4 か月遅れていることに気付いた後、 以降何が変わったのか興味が湧きました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
…えーっと?まあ…ダメな理由はわかりません。ルート権限が必要です。
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 がそのように設計されているからです。emerge は、単にこの種の作業を行うのに適したツールではなく、今後も適さないことを願っています。実際に目的を達成するには、次のようにコマンド ( )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/リポジトリフォーマット
<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