Snow Leopardの新コマンド「pkgutil」でパッケージを削除する

海上忍
2010-04-30 20:36:06
  • このエントリーをはてなブックマークに追加

 NEXTSTEP/OPENSTEP時代には、当面使わないアプリケーションをディスク上から削除せず書庫化したり圧縮処理(再パッケージ化)したりと、気の利いた機能を備えていた「Installer.app」。もちろん削除機能も装備され、パッケージはかんたんな作業でアンインストールすることができた。

 Mac OS Xの時代に入り、パッケージ(.pkg)は手動でなければ削除できない――アンインストール用スクリプト付きの気の利いたものもまれにあるが――状況が続いた。これはこれでやむを得ぬ事情があったのだろうということで、とやかく言っても始まらない。

 しかし、コマンドライン方面では変化が生じている。新設の「pkgutil」コマンドを利用すれば、インストールしたパッケージを“きれいサッパリ”削除できるのだ。ここでは、筆者に縁がないLexmarkのレーザープリンタ用ドライバを例に、その手順を紹介してみよう。

 まず、パッケージIDを調べる。ここではオプション「--pkgs」で全パッケージIDを出力し、それをgrepでフィルタしているが、「--pkgs=正規表現」の形で条件を指定してもいいだろう。これで、パッケージIDが「com.apple.pkg.Lexmark_LaserDrivers」と判明した。

$ pkgutil --pkgs | grep -i Lexmark
com.apple.pkg.Lexmark_LaserDrivers

 いきなり削除せず、パッケージの内容を確認すること。オプションに「--files」を指定し、引数に先ほどのパッケージIDを指定すればOK。

$ pkgutil --files com.apple.pkg.Lexmark_LaserDrivers

 削除して問題なさそうと判断すれば、今度は「--unlink」オプションを使いpkgutilコマンドを実行する(管理者権限で実行するためsudoを併用のこと)。本当に削除して構わないか、との問には「y」で答えるべし。これで指定したパッケージIDに含まれるファイルは、インストール先から削除される。その後、「--forget」オプションでパッケージIDおよびレシートファイルを削除すれば、作業完了だ。

 なお、ほかのパッケージが使用しているファイル/ディレクトリと重複する場合には、削除できない旨のエラーメッセージが表示される。Appleが定めるSnow Leopard準拠の形式に沿わないパッケージは、そもそも削除できないことがあるので、念のため。

$ sudo pkgutil --unlink com.apple.pkg.Lexmark_LaserDrivers
Do you really want to delete these files? y

$ sudo pkgutil --forget com.apple.pkg.Lexmark_LaserDrivers
  • 新着記事
  • 特集
  • ブログ