Mac OS Xのパッケージファイルを操作する
Mac OS Xではアプリケーションなどをインストールするときに伝統的に.pkgで終わるパッケージが使われています。 しかし、インストールする前にどんなファイルが展開されるんだろう、とか、あのインストーラーに入ってるあのファイルだけ取り出したい、みたいなことがあると思います。
そんなパッケージにまつわる基本的な操作をまとめました。基本的にTerminal.app
での操作になります。
インストールされているパッケージの一覧
例えば、mysqlが入ってるかなーとかは、
となります。[]
がついてるのは、そういうgrep
のテクニックです。
インストールされているファイルの一覧
既にインストールされているmysqlのパッケージがインストールしたファイルの一覧は次にようにします。インストール前のpkgに対しては後述。
インストールされているファイルの削除
一応pkgutil
にオプションがあったんですが(--unlink
)、うまく消せないし、フォルダが残ることがあるし、なんかコマンドそれ自体がなくなった気もするので、自前のコマンドを作っています。このあたりから入手してください。
こういうのはroot
で実行しますが、なんか重要なファイル消えちゃうかもなので、自己責任で。
インストールされているパッケージを消す
ファイルの削除ではなく、パッケージの登録を消す場合は次のようにします。
インストール前のパッケージのファイル一覧
どんなファイルがpkgでインストールされるか知るには、パッケージによって2種類の方法があります。まず、pkgが単一のファイルの場合(Flat Package File)は次のようにします。
もし、pkgファイルがディレクトリ形式の場合は次のようにします。
BOMってなんじゃらほいってことですが、Bill of Materialsという意味だそうです。詳しくはman bom
で。
インストール前のパッケージからファイルを取り出す
これも2種類それぞれに違う方法が必要です。まず、Flat Package Fileの場合は次にようにしまう。
pkgutil
でFlat Package Fileからディレクトリに展開して、その中にあるBom
を使ってPayload
ファイルからファイルを取り出します。めんどくさい…
ディレクトリの場合は次のようにします。
また別のコマンド… なんだか様々な圧縮方法とファイル形式があって、非常に大変です。
他にもArchive.bom
がない場合とかいろんな形式がある雰囲気なので、もっと良い方法があったら@niwまで教えてもらえると嬉しいです!