スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

siduxの安全なアップグレード

siduxを入れて二ヶ月。致命的なバグを抱えたソフトウェアを導入してしまってシステムを破壊された、などという事態には(幸運か、それともsiduxチームのおかげか)まだ遭遇していませんが…。

しかしさすがはDebian sid、更新も早いですが、パッケージ同士の依存関係が壊れたまま最新パッケージがリポジトリにアップされて(つまり、あるソフトの最新版が用意されたのでそのパッケージをインストールもしくはアップグレードしたいのだが、そのソフトの動作に必要となる他のパッケージが用意されていない状態)、aptコマンドでアップグレード(sidならばdist-upgrade)をかける際に、aptがそれを使えないパッケージと判断し、既にインストールされているものを削除にかかるという事態に遭遇することはしばしばあります。

まあ、こういったケースの場合、大抵はしばらく待てば足りないパッケージがアップされるので、その場でのd-uを止めて次の日にもう一回やってみればまず問題なくアップグレードできるものなのですが。

しかし、長期間依存関係の壊れたパッケージが放置されるということも考えられないわけではありません。現にこの二週間ほどsun-java6関連のパッケージの依存関係がおかしいようです。

siduxには、smxiという専用のパッケージ管理システムがあり、これは依存関係の壊れたパッケージの扱いに長けているようなのですが…すみません、俺はDebianのaptという極めて使い勝手の良いパッケージ管理システムに甘やかされてしまって、これ以外のものの使い方を覚える気も起きません。



siduxマニュアルを読めばすぐに分かることだが、siduxを安全にアップグレードするためのメモ。

# apt-get dist-upgrade -d

このコマンドはダウンロードオンリーモードといって、パッケージのダウンロードだけにとどめて実際のアップグレード作業を行わないため、X上のコンソールから実行してよいそうだ。その際に、実際にアップグレードを行う場合のアップグレードされるパッケージ・(依存関係に新たに入って)新規インストールされるパッケージ・(依存関係から外れて、もしくは関係が壊れていて)削除されるパッケージについての通知をしてくれる。

そのため、依存関係の破壊に早めに気づくことができる。つまり、必要なパッケージが削除されることが通知されれば、それは依存関係が壊れているということだ(単に外れただけで壊れたわけではない場合との区別は難しいが…)。そうなったら、必要なパッケージがちゃんとアップされるまでd-uを行わなければ良い。



しかし、その依存関係がしばらく壊れたままになっているとそうもいかなくなる。アップグレードというのはバグやセキュリティホールの修正といった必要があるからこそ行うのであって、あるパッケージのアップグレードができないからといって他のアップグレードもできないとなると、システム全体が不安定・脆弱な状態に曝されることに。

というわけで、特定のパッケージのアップグレードを保留させる方法を。例えば、hogehogeというパッケージのアップグレードを止めたい場合、次のコマンド。

# echo hogehoge hold | dpkg --set-selections

保留指定を解除したい場合は次のコマンド。

# echo hogehoge install | dpkg --set-selections

依存関係が壊れる原因となっているパッケージのアップグレードがどれなのか探すことに少々骨が折れるが、Debianサイトのパッケージ検索や、場合によっては(かなり強引な手法になるが)削除されそうになっているパッケージそのものをholdすることで、様子をみるのが良いと思う。

依存関係が壊れたのか、それとも外れただけであくまで正常な動作なのか判断は難しいけど、一応俺はアプリケーション本体や自分が意図的にインストールしたライブラリが削除される場合は依存関係が壊れたとみてholdで様子見、知らないライブラリが削除される場合と代わりらしいものが新しくインストールされようとしているときは外れただけとみて通すようにしています。



それと、siduxから配布されるGUI環境(KDEもしくはFluxbox)はコマンド

# init 3

で停止するみたいだけど、Debian純正のrunlevelは2から5まで区別しない決まりなので、それ以外のものを使っている場合init 3では停止しない。停止させるには

# init 1

でシングルユーザーモードにしてしまうのが手っ取り早いと思う。もしくはGRUBのブートメニューからsingle user modeを選ぶか、ブートオプションの最後に「single」と書き足して立ち上げるとか。



この内容を読んでピンと来た方もいらっしゃると思うので、恥かく前に言っておきます。一昨日2chのLinux板siduxスレッドでjavaやOOoの依存関係が壊れているのは俺だけ?のと書き込んだのはこの私です。muchanさんいつもお世話になってます。

関連記事

テーマ : UNIX/Linux
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

ざっぱー

Author:ざっぱー
(この画像について)

当ブログについて
メール
(このメールアドレスへの特定電子メール (迷惑メール) の送信はお断りします)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。