yumは他のパッケージを更新せずにパッケージをインストールするか、失敗しますか?


10

yum現在インストールされている依存関係が満たすパッケージのバージョンを選択して、パッケージをインストールするように指示する方法はありますか?

たとえば、peclパッケージをインストールしてphp-5.4.11いて、現在はインストールしているが、新しいパッケージをphp-5.4.14利用できる場合などです。新しいパッケージをインストールする(およびすべてのphpパッケージを5.4.14に更新する)のではなく、他のすべてを更新せずに、インストールするように要求したパッケージの古いバージョンを選択します(または、これを実行できない場合は失敗します)。

これは、phpパッケージを除外または修正できることがわかっている特定のケースですが、すべてのインストールに適用できる汎用オプションを探しています。

何かのようなもの:

yum install php-pecl-xxxx --no-updates

回答:


10

一時的な解決策:

-Cフラグを使用:

sudo yum install foobar -C

永続的なソリューション:

これを制御するにmetadata_expireは、yum.confのフラグを使用します。

編集/etc/yum.confして設定

metadata_expire=15d

あなたは使用することができるD、Hまたはメートルをして時間を設定するには、日、時間、または分

ボーナス:ここにドキュメントがあります:

metadata_expireは、メタデータが期限切れになるまでの時間(秒単位)です。そのため、ダウンロードされた現在のメタデータがこの数秒より古い場合、yumはリポジトリに対してメタデータを更新しません。yumが更新に関する情報を頻繁にダウンロードしていないことがわかった場合は、このオプションの値を下げてください。デフォルトの秒を使用することから、ad、h、またはmをそれぞれ追加することで、日、時間、または分を使用するように変更することもできます。デフォルトは6時間で、1時間に1回実行されるyum-updatesdを補完します。「なし」という単語を使用することもできます。つまり、メタデータが期限切れになることはありません。メタリンクファイルを使用する場合、メタリンクは常にリポジトリのメタデータよりも新しい必要があります。検証のため、このタイムアウトはメタリンクファイルにも適用されます。また、「never」は「yum clean expire-cache」をオーバーライドしないことに注意してください。


0

今のところ、そのようなオプションに出くわしていません。ただし、アップグレードせずにパッケージをインストールする場合は、同じバージョンのrpmをダウンロードしてインストールすることをお勧めします。


0

yum-utils、パッケージと呼ばれるツールがありますyumdownloader。インストールせずにリポジトリからダウンロードできます。のようなすべての標準スイッチが--disablerepo適用されます。詳細については、manページを参照してください

RPMをダウンロードして、RPMを直接使用して必要なことを実行できると思います。


1
これは自動パッケージインストールシステムの一部です。問題は、yumに「最新のものをインストール」したり、「必要なものすべてを更新」したりしたくないことです。インストール済みのものと互換性のあるバージョンのパッケージをインストールしたいだけです。基本的に、installonlyまたはinstall xxx -no-updatesオプション。
クリントプリースト2013年

0

古いバージョンのパッケージがまだyumリポジトリーにある場合は、実行するだけでyum install packagename-version-release.arch、最新リリースにアップグレードせずに古いバージョンをインストールできます。yumリポジトリに複数のバージョンとアーキテクチャがある場合は、フルネーム、バージョン、リリース、アーチを使用する必要があります。を実行yum list available 'packagename*'して「packagename」で始まるすべてのパッケージを検索することで、これらすべての情報を取得できます。パッケージのアップグレードに成功し、以前のリリースにダウングレードしたい場合は、を実行できますyum downgrade packagename1 packagename2。おそらく多くの依存関係が含まれるため、ダウングレードするすべてのパッケージのリストを含める必要があります。

古いリリースがyumリポジトリにない場合は、古いパッケージが見つかったところからダウンロードして、でインストールしてyum install /path/to/package.rpmください。信頼できないソースからパッケージをインストールすることは避けます。


しかし、yum利用可能な最新の互換性のあるバージョンを選択できれば、はるかに便利です。
forcefsck 2015年

できますが、適切な要件を定義するのはパッケージャの責任です。
jsbillings 2015年

要件が古いパッケージでカバーされていることもありますが、yumは最新のものだけを選択するように要求しています。例えば。上記の場合、システムのバージョンがphp-5.4.11にロックされていると、yumが自動的にphp-pecl-5.4.11を選択できるようになります。自動化の問題になる可能性があります。
forcefsck 2015年

Yumは、古いバージョンへの依存関係がない場合にのみ、最新バージョンに更新します。上記のケースでは、バージョン要件はpeclパッケージでは必要ありませんでした。Yumはあなたの心を読んで、必要なバージョンを指定しない限り、またはpeclおよびphpパッケージをバージョンロックすることによって、任意のバージョンを選択することができません。
jsbillings 2015

特にこの例では、phpがアップグレード可能でない場合(バージョンがロックされているか、リポジトリに新しいパッケージがない場合)、yumはphpのアップグレードを必要としないpeclの最新バージョンを選択できます。それは正確に読むのではなく、apt-getはすでにこれを行っていると思います。繰り返しますが、これは、システムの半分をアップグレードせずに追加のパッケージをインストールする必要があり、yumが要求を処理するのに十分スマートである必要がある場合の自動化の問題です。なんらかの理由でアップグレードできないこと。
forcefsck
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.