既にインストールされているコマンド用のRPMパッケージをダウンロードする


11

私はすでにopenssl-develをインストールしたCentOSマシンを使用しています

$ yum install openssl-devel 

すべての依存パッケージをダウンロードしてインストールしました。ここで、これらすべてのRPMパッケージが必要です。RPMパッケージのみをダウンロードすることは可能ですか?私がこれを行うとき:

 $ yum install  openssl-devel -y --downloadonly 

それは言います

Package 1:openssl-devel-1.0.1e-4.fc18.x86_64 already installed and latest version

既にインストールされているため。

同じシステムにこれらのRPMパッケージをダウンロードする方法を知っている人はいますか?

回答:


12

--downloadonlyスイッチを使用して既にインストールされているRPMのパッケージをダウンロードすることができます。パッケージが既にインストールされているかどうかを確認する前にyumがこの設定を確認しない理由はわかりませんが、ツールの基盤となるアーキテクチャが原因である可能性があります。

とにかく、あなたがする必要があるのは、パッケージを再インストールするようにyumに伝えることです:

yum --downloadonly --downloaddir=/tmp/rpm_files/ reinstall package_name

もちろん、yumはこのパッケージのためだけにインストールされた依存関係を認識しないため、RPMを使用して別のシステムにインストールしようとすると、いくつかの依存関係が失われる可能性があります。依存関係グラフ全体を探索する方法がありますが、これは既にSEの他の場所で説明されていると思います。


7

yumdownloaderin yum-utilsは、渡すパッケージをダウンロードします。または、オプションで、パッケージのダウンロード元のURLを生成します。


依存関係を解決せず、単にopenssl-devel.x86_64.rpmをダウンロードします
abubacker

いいえ、依存関係を解決しません。しかし、依存関係を解決するためにツールをどれくらい前に戻しますか?glibcfilesystem
イグナシオバスケスエイブラムス

1
私の要件は簡単です、オフラインの別のマシンにインストールするためにrpmのリストを取得する必要があります
-abubacker

あなたは「単純」と言いますが、実際にはあなたが思うほど単純ではありません。既にインストールされているパッケージのリストのみを指定すると、依存関係を解決するツールはありません。
イグナシオバスケス-アブラムス

1
実際には簡単です、yum install openssl-devel -y --downloadonlyこのコマンドを別のマシンで実行すると、すべての依存関係が解決されますが、私の質問は、そのコマンドをインストールしたマシンで同じことを行うことができるかどうかですすでに
-abubacker

3

yum-utilsパッケージのrepotrackコマンドを使用できます。既にインストールされている場合でも、依存関係ツリー全体がダウンロードされます。

例:

sudo yum install yum-utils      # Install yum-utils
sudo repotrack openssl-devel    # Download all dependencies for openssl-devel


サンプル出力:

[sbadra@rhel6 ~]$ sudo yum install openssl-devel
Loaded plugins: product-id, search-disabled-repos, subscription-manager
Setting up Install Process
Package openssl-devel-1.0.1e-57.el6.x86_64 already installed and latest version
Nothing to do

[sbadra@rhel6 ~]$ sudo repotrack openssl-devel
Downloading audit-libs-2.4.5-6.el6.x86_64.rpm
Downloading audit-libs-2.4.5-6.el6.i686.rpm
Downloading basesystem-10.0-4.el6.noarch.rpm
Downloading bash-4.1.2-48.el6.x86_64.rpm
Downloading ca-certificates-2017.2.14-65.0.1.el6_9.noarch.rpm
Downloading chkconfig-1.3.49.5-1.el6.x86_64.rpm
Downloading coreutils-8.4-46.el6.x86_64.rpm
Downloading coreutils-libs-8.4-46.el6.x86_64.rpm
.... more packages ....
Downloading openssl-1.0.1e-57.el6.i686.rpm
Downloading openssl-1.0.1e-57.el6.x86_64.rpm
Downloading openssl-devel-1.0.1e-57.el6.i686.rpm
Downloading openssl-devel-1.0.1e-57.el6.x86_64.rpm
.... more packages ....
Downloading sed-4.2.1-10.el6.x86_64.rpm
Downloading setup-2.8.14-23.el6.noarch.rpm
Downloading tzdata-2018c-1.el6.noarch.rpm
Downloading zlib-1.2.3-29.el6.x86_64.rpm
Downloading zlib-1.2.3-29.el6.i686.rpm
Downloading zlib-devel-1.2.3-29.el6.i686.rpm
Downloading zlib-devel-1.2.3-29.el6.x86_64.rpm

1
それは実際に予想される動作であるため、アーキテクチャのバグに関するメモを撤回しました。(x86_64はi686のスーパーセットであるため、このコマンドはi686パッケージもダウンロードします)詳細についてこの記事とこの記事を参照してください。
サミBadra

2

長期的には、インターネットからダウンロードするマシンとしてマシンを指定し、そのマシンでNFS(またはWebサーバー)を実行して/ var / cache / yumを内部ホストに公開する可能性があります。

次に、yum configを更新して以下を追加する必要があります。

[main]
keepcache = 1

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Working_with_Yum_Cache.htmlごと:

キャッシングを有効にすると、すべてのyum操作は設定されたリポジトリからパッケージデータをダウンロードする場合があります。

より実用的な用語で:

$ sudo yum install -y nginx
$ sudo find /var/cache/yum/ -type f -name '*.rpm'
<...snip....>
/var/cache/yum/x86_64/7/epel/packages/nginx-1.10.2-1.el7.x86_64.rpm

他の回答は実際に当面の問題を解決します。これyum reinstallは、すでに持っているパッケージを実行し、RPMが必要な場合にのみ役立ちます。


0

ここに私がやることがあります:

sudo yum install --config =。/ yum.conf --installroot = / tmp / f541Sdex --downloadonly --downloaddir / tmp / DL-e25xds $(cat list-of-packages)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.