DebianおよびUbuntuシステムのパッケージ管理用スクリプト

 Distrowatchの公表するダウンロード数上位10ディストリビューションのうち5つがDebianのパッケージングシステムを採用している。このシステムは各種ユーティリティを豊富な揃えたインフラストラクチャへと発展を遂げ、そこには基本的なコマンドであるapt-getとdpkgだけでなくapt-cache、apt-spy、apt-listbugsといったあまり知られていないコマンドも含まれる。ほかにも、既存ユーティリティのマッシュアップやオリジナルのものなど、さまざまなスクリプトがopenDesktop.orgのようなサイトで手軽に入手できる。こうしたスクリプトを使えば、Debianベースのパッケージングシステムの利用手順を効率化できたり、ソフトウェアのインストール環境についての適切な判断に役立つ情報が得られたりする。

 このようなスクリプトは、多数のグラフィカルなapt-getフロントエンドやパッケージリポジトリ検索のGUIツール群と同列に扱われている。しかし、効率的なパッケージ管理は依然としてコマンドラインで行われているため、今日のコマンドラインツールの多くにはない重要性を持っている。単純なものもあれば、特定のディストリビューション(たいていはUbuntu)でしか使えないものもあり、ニーズに合わせて変更が必要になる場合もあるだろう。しかし、システムの中身についてはアップデート通知のアプレットに頼ることなく実際的な判断が下せると考えているなら、どのスクリプトも思いのほか役に立つ可能性がある。ここでは、特に優れた3つのスクリプトを紹介する。

Apt-utility

 Apt-utilityは、システムをたえず最新の状態にしておきたいがそのためのコマンドをいちいち入力するのが面倒な人のために作られた簡単なbashスクリプトだ。

 ただし、このスクリプトで実行されるapt-getコマンド列にはちょっとした混乱が見られる。最初に「apt-get update」を使って、パッケージリポジトリを最新の状態にするところは問題ない。だが、そのあとで「apt-get upgrade」と「apt-get dist-upgrade」を続けざまに実行している部分は冗長といえる。dist-upgradeの動作には、新しいバージョンのパッケージにおける依存関係の処理だけでなく、upgradeが行うすべての処理も含まれるからだ。また「apt-get clean」のあとに「apt-get autoclean」を実行しているが、「/var/cache/apt/archives」ディレクトリの中身は先にcleanによって削除されるため、autocleanにはやるべきことが何もない。このスクリプトは、最後に「apt-get autoremove」を使って、もはやシステム上に存在しないパッケージとの依存関係によってインストールされていたパッケージを削除している。

 こうした問題は、少し考えてスクリプトに手を加えれば修正できる。単純に「apt-get upgrade」と「apt-get autoclean」を削除すればよいのだが、rootアカウントへのアクセスにsudoコマンドを使わない場合は各行の先頭にあるsudoも削除できる(DebianはUbuntuと違ってsudoを使わないのがデフォルト)。

 また、このスクリプト(あるいは手を加えたバージョン)を実行する前に、有効なリポジトリを「/etc/apt/sources.list」で確認しておくとよいだろう。なおApt-utilityは、Debianの安定版またはテスト版のリポジトリで使う分には安全だが、不安定版や実験版のリポジトリで自動アップデートを有効にすると、依存関係が破壊されたり、極端な場合にはシステム上の重大な問題につながったりするおそれがある。

Ubucleaner

 Ubucleanerは、本来Ubuntuで使うための多機能スクリプトだが、ほとんどの部分はDebianベースのほかのディストリビューションでも動作する。apt-cacheの消去、削除済みパッケージの設定ファイルの削除、現行のもの以外のすべてのカーネルの削除を行い、システム上の全ユーザのごみ箱を空にしてくれる。ただし、カーネルの削除機能はUbuntuのカーネルにしか効かない。

 これらすべてのタスクは、システムから余計なファイルを削除するという点で共通しており、必要に応じてスクリプトを編集したり不要なセクションをコメントアウトしたりできる。特に、問題解決のために現行のカーネルを無効にする際にはバックアップのカーネルが役に立つ場合があることを考えると、カーネル削除の機能を無効にすると共に「Removing old kernels」(古いカーネルを削除中)のメッセージも削除しておくとよいだろう。そうすれば、このスクリプトをよくわからずに実行して「カーネルを削除」の表示に思わず冷や汗をかくこともなくなるはずだ。

 なお、このスクリプトは、apt-getやdpkgではなく、テキストベースのAptitudeアプリケーションの利用を前提としている。Aptitudeを利用していない場合は、「aptitude clean」の部分を「apt-get clean」に、「aptitude purge」の部分を「dpkg --purge」に置き換える必要もある。

daptup

 Ubucleaner同様、daptupもAptitudeの利用を想定したものになっている。とはいえ、純粋に情報提供を目的としたスクリプトなので、実行はUbucleanerよりずっと安全で、Debian系ディストリビューション用の新規パッケージ、アップグレード可能なパッケージ、ウォッチ対象(watched)パッケージ、アップグレードが入手可能な古い(outdated)パッケージの各リストを作成してくれる。これらのリストは、ソフトウェアのアップグレード検討に役立つ。

 各リストの内容は「/etc/daptup.conf」ファイルを編集することで変えられる。この設定ファイルでは、何日経過したものを古いパッケージと見なすかといった基準や、ウォッチ対象とするインストール済みおよび未インストールパッケージを指定できる。たとえば、OpenOffice.orgの最新版がリポジトリにあるかどうかを常にチェックしたい場合や、Gnashのバージョンが1.0になるまでインストールの実施を待ちたい場合に使える。daptupの設定ファイルはコメントが豊富で使用例も記されているので、難なくdaptupに望みどおりの動作を行わせることができるはずだ。

 自動アップグレードを行わない場合、また使っているリポジトリに多数のパッケージが最近追加されたことがわかっている場合は、daptupをlessまたはmoreコマンドにパイプするとよい(「daptup | less」など)。それ以外の場合でも、リストが長くなりすぎて、最後の項目が画面に表示される頃には最初のほうが消えてしまうようならパイプが役に立つ。あるいは、「/etc/daptup.conf」ファイルでリストの一部をコメントアウトする、ターミナルの設定で表示バッファの行数を増やす、という手もある。

まとめ

 インターネットを検索すると、Debianベースのパッケージ管理で使えるスクリプトがほかにもたくさん見つかる。たとえば、削除しても差し支えなさそうな未使用プログラムをシステムから探し出してくれるUnusedPkgがあるが、このスクリプトのダウンロードファイルはもはや提供されていないようだ。また、dpkgのステータスファイルの分析や比較を行いたい上級ユーザには、dpkg-diffというawkスクリプトが便利だろう。

 こうしたスクリプトはいずれもシステムに関する詳しい情報を取得するのに役立ち、そのほとんどはスクリプトの書き方をあまり知らない人でも容易に変更できる。たえず新しいアプリケーションが掲載されるopenDesktop.orgのようなサイトをチェックしておけば、利用中のソフトウェアをより適切に扱えるユーティリティが簡単に見つかるだろう。

Bruce Byfieldは、Linux.comに定期的に寄稿しているコンピュータ分野のジャーナリスト。

Linux.com 原文(2008年10月29日)