32

XY の問題が発生する可能性を減らすために、私は PostGIS をクリーンな仮想 RHEL5 インストールに厳しい制限付きでインストールしようとしています。私たち (会社として) が RH サブスクリプションを持っているかどうかはわかりません。

# yum install postgis
Loaded plugins: product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Setting up Install Process
No package postgis available.
Nothing to do.

をインストールしようとすると同じエラーがスローされるためemacs、どのパッケージをインストールしようとしても問題ないことは比較的確実です。

VM にはインターネット アクセスがあります。

私がやりたいことは、指定したソフトウェアの完全な依存関係グラフを取得することだけです (明らかに、つまりpostgis)。yumジョブを実行するには、この依存関係グラフを既に計算している (または取得できる状態にしている) 必要があるため、このリソースを利用するにはどうすればよいでしょうか?

4

4 に答える 4

30

RHEL5のマニュアル ページによると、「 repoqueryは、rpm クエリと同様に、YUM リポジトリから情報をクエリするためのプログラムです。」

postgis の特定のケースの場合:

# repoquery --requires --recursive --resolve  postgis
postgresql-libs-0:8.1.23-6.el5_8.i386
geos-0:2.2.3-3.el5.i386
glibc-0:2.5-107.el5_9.5.i686
proj-0:4.5.0-3.el5.i386

システムが 64 ビットの場合、パッケージ名から「.i386」と「.i686」を削除できます。

repoquery からの出力は完全ではありません。たとえば、上記のリストに glibc-common がリストされていないためです。しかし、glibc と glibc-common の両方がインストールされていなければ、システムは実行されません。

EDIT : エラーにはなりませんが、--recursiveフラグは RHEL5.11 では何もしないように見え、省略できます。また、--pkgnarrow=allフラグを使用して、すべての (インストール済み、使用可能など) パッケージがクエリで考慮されるようにします。最後に、再帰の 1 ステップで依存関係ツリーをさらに取得するには、bash シェルで、次のようにteeandを使用して、repoquery コマンドの出力を 2 番目の repoquery コマンドに渡します。xargs

# repoquery --requires  --resolve --pkgnarrow=all postgis.i386 | tee >(xargs -r -n 1 -- repoquery --requires  --resolve --pkgnarrow=all) | sort | uniq
basesystem-0:8.0-5.1.1.noarch
geos-0:2.2.3-3.el5.i386
glibc-0:2.5-123.el5_11.3.i686
glibc-common-0:2.5-123.el5_11.3.i386
krb5-libs-0:1.6.1-80.el5_11.i386
libgcc-0:4.1.2-55.el5.i386
libstdc++-0:4.1.2-55.el5.i386
openssl-0:0.9.8e-40.el5_11.i686
postgresql-libs-0:8.1.23-10.el5_10.i386
proj-0:4.5.0-3.el5.i386
于 2013-06-14T20:36:36.227 に答える
10

私がやりたいことは、指定したソフトウェア (明らかに postgis) の完全な依存関係グラフを取得することだけです。

このために、この記事で推奨されているrpmreaperツールを試すことができます: Fedora、CentOS、または RHEL で RPM パッケージの依存関係を確認する方法

パッケージの要件を選択的にドリルダウンするか、「ドリルアップ」して、特定のパッケージに依存するものを確認できる curses ベースのインターフェイスを提供します。

ASCII ベースの典型的な出力は、repoquery --tree-requires数レベルの深さと数千行の長さの場合、追跡するのが非常に困難です。rpmreaper の表示は、読みやすく、トラバースしやすくなっています。

以下は、参照用に「ドリルアップ」(別名「Required by」) を使用して Samba RPM のサイクルを見つける簡単な例です。

サンバクライアントサイクル

于 2016-09-22T15:09:24.933 に答える
1

--tree-requiresこれはfor (x86_64)のクリーンアップに役立ちます:

for i in `repoquery --tree-requires --recursive --resolve postgis \
  | perl -nle '/([a-z]+-\d+\.\d+((\.|\-)?\d+)?.*x86_64)/;print "$1"'`; \
  do yumdownloader $i; \
  done
于 2016-05-13T20:51:38.057 に答える