SDB:製造元を変更する更新
目次
概要
パッケージマネージャである Zypp では、 製造元を維持する 考え方を採用しています。これにより、新しいバージョンを異なる製造元が提供していても、お使いのシステムの更新時に、勝手にバージョンを変更したりしないようにしています。
製造元を維持する利点:
- 安定したバージョンのパッケージをインストールしている環境で、更新の際に他のリポジトリが提供する不安定な (実験的な) バージョンに置き換えられてしまう問題を防ぐことができます。
- 2 つ (もしくはそれ以上) のリポジトリで同じパッケージを提供している場合、更新のたびに製造元をいったりきたりしてしまう ピンポン現象 を防ぐことができます。
製造元を維持する欠点:
- 製造元をまたぐ変更は通常、 YaST では表示されません。
- 製造元を変更した場合にのみ、新しい機能が利用できるようになる場合があります。
- パッケージマネージャは、製造元を変更するタイプの更新が存在すると、問い合わせメッセージを表示します。場合によってはこれらのメッセージが混乱を引き起こしてしまいます。
製造元を変更して更新を適用する方法
製造元を変更して更新を適用するには、いくつかの方法があります。
単一のパッケージのみの製造元変更
YaST を使用する方法
更新したいパッケージを検索してから バージョン タブを開き、インストールしたいバージョンを選択します。
zypper を使用する方法
zypper でバージョン番号を直接指定してインストールします。たとえば下記のように指定します:
zypper install 'amarok=2.3.1'
もしくは、リポジトリを直接指定してもかまいません:
zypper install --from [リポジトリ] [パッケージ]
リポジトリ全体に対する製造元の変更
YaST を使用する方法
インストール済みのパッケージを、特定のリポジトリが提供するものにすべて入れ替えたい場合は、 リポジトリ タブを開いてから、 システムパッケージを、このリポジトリ (XX) 内にあるバージョンに切り替える を選択します。
zypper を使用する方法
zypper でもすべてのパッケージの製造元を変更することができます:
zypper dup --from [リポジトリ]
製造元の変更を許可する方法
選択したリポジトリに対して製造元の変更を許可する方法
/etc/zypp/vendors.d/ ディレクトリ内に下記のようなファイルを作成することで、指定した "製造元" を等価なものとして扱わせることができます:
[main] vendors = suse,opensuse,obs://build.suse.de,Packman,http://packman.links2linux.de
- ファイル名は任意の名前でかまいませんが、等価なものみなす製造元ごとに 1 つのファイルを作成してください。
- libzypp では、文字列の比較で大文字と小文字を区別せず、文字列の冒頭部のみを比較します。たとえば製造元 "opensuse11.0" は、 "openSUSE" と互換性があるものとみなされます。
製造元の維持を外す方法
必要であれば、製造元の維持を完全に外してしまうこともできます。この場合、パッケージマネージャや製造元の変更に関して問い合わせメッセージを表示しなくなるほか、更新の際も製造元に関係なく、単純にもっとも大きなバージョン番号を持つパッケージがインストールされるようになります。
/etc/zypp/zypp.conf ファイルを開いて、下記の値を設定してください:
solver.allowVendorChange = true
上記を設定したら、あとは zypper up を実行すると、製造元に関係なくもっとも新しいバージョンをインストールするようになります。もちろん YaST でも、製造元に関係なく、最も新しいバージョンのものが青色で表示されるようになります。