web-dev-qa-db-ja.com

Portageにパッケージをダウンロードさせるにはどうすればよいですか?それ以上何もしませんか?

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

…ええと?えーと…どうしてかわかりません。 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を使用して機能しない理由は、emergeがそのように設計されているためです。 Emergeは、この種の仕事を行うための適切なツールではなく、うまくいけば決してそうなることはありません。実際に目的を達成するには、次のようにebuildコマンド(man 1 ebuild)を使用する必要があります。

ebuild <PATH_TO_EBUILD> fetch

このコマンドは、$SRC_URI内のすべてを$DISTDIRにダウンロード(および検証)します。

変数の値を取得するには:

  • <PATH_TO_EBUILD>
  • <REPO_DIR>portageq get_repo_path / gentoo
  • $DISTDIRportageq distdir

選択したディレクトリにソースを実際にフェッチするには、次のように$DISTDIR変数をスプーフィングします。

DISTDIR=<DIR> ebuild <PATH_TO_EBUILD> fetch

したがって、デフォルトのポーテージパスを使用していて、ソースをホームディレクトリにダウンロードする場合は、次のコマンドを発行します。

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