こんな変なことがどこで起きたのか調べた
pacman -S -w awesome xorg-xinit xorg-server xorg-server-utils
パックマン必要なすべての依存関係はダウンロードされません。
パッケージをダウンロードする理由は、必要な特定のパッケージのみを含むローカルストアを作成するためです。(フルストレージをダウンロードする代わりに、Archコミュニティは帯域幅の制限のためにダウンロードしたくないので、これは尊重されます)
これで、上で定義されたパッケージはうまくダウンロードされ、ダウンロードなどをxorg-server
行い、インストール-w
されないようになります。ただし、-S
何らかの理由でダウンロードされていない依存関係もダウンロードする必要があります。
後でローカルリポジトリを使用して上記のパッケージをインストールしようとしたときの出力は次のとおりです。
warning: cannot resolve "xorg-xset", a dependency of "xorg-server-utils"
warning: cannot resolve "xorg-xauth", a dependency of "xorg-xinit"
リストは続きます...リポジトリを確認すると、パッケージは間違いなく欠落しており、どこにもダウンロードされませんでした。
どんなアイデアがありますか?私は何を逃したことがありませんか?論理的またはパラメータ的に?
答え1
指摘したとおり現実的なそしてデーモンマッドマン3~へ#アーチLinuxircチャンネルがまさにその理由です。pacman
すでにローカルにインストールされている場合は、何も再ダウンロードされません。しかし、ユーザーが具体的に指示したものは何でもダウンロードされます。、考えてみると理解になります。
これは、カスタム/ローカルリポジトリ用のパッケージをダウンロードする場合は、ダウンロードしているパッケージがローカルにインストールされていないことを確認するか、次のいずれかのオプションを実行する必要があることを意味します。
空のパッケージデータベースの一時/ローカル使用
pacman -y --dbpath /tmp ...
これは、ローカルに何もインストールされず、必要なすべてのパッケージがダウンロードされるという錯覚をもたらします。また、-y
構成データベースにマスターパッケージのリストがないため、これを行う必要があります。
システムアップグレードの実行
pacman -Syuw ...
これにより、すべてのパッケージ(すでにインストールされているかどうかにかかわらず)を再インストール/アップグレードする必要があります。
メモ:レビューされていません(私はパックマンのロジックについてほとんど知らず、それをテストするのに時間ジレンマに陥っています。)
ダウンロードしたファイルの隔離
コメントで指摘したように、ダウンロードしたファイルを別のディレクトリに入れて作業できるようにしたい可能性が高いです--cachedir
。これは次のように実行されます。
pacman --cachedir /tmp/somewhere ...
最終例
sudo pacman -Syw --cachedir /tmp/somewhere --dbpath /tmp/pacmandb base base-devel linux linux-firmware
その後、次のように画像に追加したいと思います。ストレージが追加されました次のようなものを解放することによって:
repo-add /tmp/somewhere/my_mirror.db.tar.gz /tmp/somewhere/{*.pkg.tar.xz,*.pkg.tar.zst}
以下を使用して依存関係リストを作成する拡大する
expac -S '%E' -l '\n' base base-devel linux linux-firmware | tr '\n' ' '
expac
控訴<package string>
(ダウンロードしたいすべてのパッケージ)ダウンロード中のアイテムを実行するために必要なパッケージのリストが提供されます。このリストを使用して、インストールする既存のパッケージ文字列をインポートまたは追加できます。
expac
デフォルトでは、個々の依存関係は1行に分かれていますが、パッケージ間で分割されるため、各単一行文字列を複数行に変換してから、trを使用して改行を空白に変換します。
私はプログラムで保存し、多くのスクリプトで利用できるので、このexpac
バージョンを好みますが、高速で汚れたバージョンはパックマンがチェックするデータベースをリダイレクトするだけです。