search
LoginSignup
3

More than 3 years have passed since last update.

posted at

apt-getでパッケージをダウングレードする方法

すでにインストール済みのパッケージについて、何かの都合でバージョンをダウングレードするときは
/etc/apt/preferencesにパッケージの優先度を変更する記述を記載すること。

例えば、openjdk-8-*というパッケージは現状ubuntu16.04では最新8u171だが
これを8u77-b03-3ububtu3にダウングレードするには

Package: openjdk-8-*
Pin: version 8u77-b03-3ubuntu3
Pin-Priority: 1000

と書いておいて、通常通りapt-get updateとapt-get upgradeを実行する。
すると、aptがその名のadvancedにふさわしい高度な振る舞いで、依存関係を考慮して
ダウングレードしてくれる。 1000は古くてもインストールする優先度の指定。
apt-get install <パッケージ名>=<バージョン>でバージョン指定でインストールする方法があるが、

この方法では依存関係のパッケージが複数あって、バージョンがunmetでインストールできない。

それら関係するパッケージを複数同時にコマンドラインに並べても、その方法ではうまくいかない。

snapshot.debian.orgが過去のスナップショットのホスティングサービスしているが、
パッケージをダウングレードをする場合は、パッケージの優先度を変更する必要がある。
残念ながら、snapshot.debian.orgのサイトの説明は、sources.listの記載例が載っているが、
優先度をいじることまでは書かれていない。実際やってみると、古いパッケージは無視される。
このことは、Debian管理者ハンドブックをじっくり読むと、aptの優先度の説明の項に丁寧に説明されている。

ちなみにDebian 管理者ハンドブックは、PDF,ePub,mobi何ちゃらの3つの電子フォーマットで入手できる。
しかも日本語もあり無料でダウンロードできる。iPadはePubの方が読みやすい。とってもセンスのいい人達。
すかさず、際少額ですがdonateさせていただきました。
Debianって、カップルの二人の名前をミックスしたものだったのですね。女の人がDeb*で男がIan.

以上

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3