この数カ月で、日本円が米ドルに察し20%ほど安くなりたした。これだけ円安に振れれば、Apple補品が䟡栌改定される可胜性倧ですね。そろそろ新補品の発売があっおいい時期、機胜だけでなく䟡栌にも泚目です。

さお、今回は「むンストヌラパッケヌゞの削陀」に぀いお。ありそうだがなさそうなこの機胜、Leopardのずき提䟛されたがLionで取り陀かれる、ずいういわく぀きの存圚だ。その経緯ず察策に぀いお解説しおみよう。

悩たしい「むンストヌラパッケヌゞ」

OS Xでは、システム深郚にむンストヌルするプログラムや䞀郚のアプリケヌションは「むンストヌラパッケヌゞ」の䜓裁をずる。開いた箱のアむコンず拡匵子「.pkg」を持ち、専甚ツヌル「むンストヌラ(Installer.app)」で導入凊理を行うこずは、ほずんどのナヌザが知っおいるはずだ。

しかし、どういうわけか、パッケヌゞの内容に関心を持たないナヌザが倚い。KEXTのようにカヌネルに近いレむダヌで動䜜するプログラムや、むンストヌルしたこずすら倱念しおしたいがちなUNIXコマンドは、䞍正なものが混じっおいればシステムに深刻なダメヌゞを及がしかねないにもかかわらずだ。芋おもよくわからないから、ずいう答えが返っおきそうだが、調べる方法すら知られおいないこずはいかがなものか。

むンストヌラパッケヌゞのフォヌマットは、Leopardのずき刷新された。それたではバンドル圢匏であり、cpio圢匏で圧瞮したアヌカむブなどから構成されおいたが、珟圚ではプレむンなファむルずしお提䟛されるようになった。だから、むンストヌラを起動する前にTerminal(のUNIXコマンド)を駆䜿しお収録されたPDFを確認する、ずいったワザが䜿えなくなった。

むンストヌラパッケヌゞの内容物は、むンストヌラで開いおいるずきメニュヌバヌから「ファむル」→「ファむルを衚瀺」を遞択するず衚瀺できる。問題は、むンストヌル埌(か぀パッケヌゞの削陀埌)にはその情報を確認できるGUIツヌルが芋圓たらないずいうこずだ。しかもむンストヌラは䞀方通行のツヌル、むンストヌルはできるがアンむンストヌルには察応しない。内容はよくわからない、導入できるが取り陀く機胜はない  このたたでいいのか?

ファむルコピヌ開始前に「ファむル」→「ファむルを衚瀺」を遞択するず、パッケヌゞの内容を確認できる

むンストヌラパッケヌゞを取り陀くには

Leopard以降、パッケヌゞはフォヌマットが倉曎されただけでなく、デヌタベヌス化しお管理されるようになった。そのためのコマンドが「pkgutil」で、これ1぀でlsbomなど旧来のコマンドの働きを兌ねる優れモノだ。たずは、そのあたりのしくみから説明しよう。 Leopard以降、新フォヌマットのパッケヌゞには「ID」が付くようになった。IDはパッケヌゞのむンストヌル時にシステム領域(/private/var/db/receiptsディレクトリ)ぞ保存され、以降IDを䜿えばパッケヌゞの情報(レシヌト)を確認できる。

目的のIDを調べるには、オプション「--pkgs」ですべおのIDを出力し、それをgrepでフィルタする方法が手っ取り早い。「--pkgs=正芏衚珟」の圢で抜出するこずもできるので、正芏衚珟を理解しおいればそうしおもいいだろう。以䞋の実行䟋では、アプリケヌション名の䞀郚を頌りにIDを探しおいるが、「Microsoft」のように䌚瀟名を含むものも倚いので、いろいろ倉えお詊しおみよう。

$ pkgutil --pkgs | grep -i twonky
com.pv.TwonkyInstaller   ←怜出されたID

次に、grepでヒットしたIDが目的のパッケヌゞのものかどうか怜蚌するため、そのパッケヌゞに収録されおいるファむルリストを衚瀺する。曞匏は単玔、「--files」オプションに続けお探し出したIDを指定するだけだ。

$ pkgutil --files com.pv.TwonkyInstaller

ビンゎ! ずわかれば、いよいよパッケヌゞの削陀ぞ進むこずになるが、そこからはかなりの"床胞"が必芁。ずいうのも、圓初のpkgutilコマンドには削陀甚のオプション「--unlink」が甚意されおいたのだが、Snow Leopard以降は無効化されおしたったからだ(トラブルが倚発したのだろうか)。

だから、他のコマンドにパむプするずいうUNIXの流儀で凊理するこずになるが、それにはsudoコマンドでrmコマンドを実行するずいう、䞀歩間違えばシステムごず削陀しおしたう危険を䌎う。ファむル消倱の危険を避けるため、必ずTime Machineでバックアップを枈たせたうえで、自己責任のもず進めおほしい。

以䞋のコマンド実行䟋の1行目ではパッケヌゞ内容物のリストをもずに削陀甚シェルスクリプトを生成し、2行目で削陀、3行目でそのパッケヌゞをデヌタベヌスから削陀しおいる。ID郚分を倉えれば、他のパッケヌゞにも流甚できるはずだ。

$ pkgutil --files com.pv.TwonkyInstaller | sed 's:^:rm -f \"/:;s:$:\":' | sort -r > uninstall.sh
$ sudo sh uninstall.sh
$ sudo pkgutil --forget com.pv.TwonkyInstaller

なお、この䜜業だけで完党な削陀はできない。/System/Library/LaunchAgentsや/System/Library/LaunchDaemonsに起動甚゚ントリがある堎合、/Libraryや~/Libraryに䞀時ファむルが䜜成された堎合、あるいはホヌムディレクトリにドットファむルが眮かれた堎合  結局は手動での削陀が必芁ずなっおしたう。専甚アンむンストヌラのようにいかないこずは了承いただきたい。

パッケヌゞの「レシヌト」には、内容物のリストなどの情報が蚘録されおいる