Guides, HowTos and Tips for Technology Geeks - The Geek Stuff

サーバシステムを管理する場合、アプリケーションをインストールする前にどういったファイルがどこにインストールされるのかを調べたいケースがある。インストールすることでシステムの一貫性がなくなったり、意図とは違う動作をされることを防ぐためだ。GUIで提供されているパッケージマネージャが使えればよいが、サーバシステムにはGUIがインストールされていないケースもある。またsshで遠隔ログインして操作する場合など、基本的にコマンドで作業する必要がある。

LinuxやUNIXといってもパッケージ管理システムは異なることが多く、たとえばRed Hat Enterpriseサーバで使えたコマンドは、Debianサーバでは使えない、ということはままある。そうした場合に役立つまとめがHow to View and Extract Files from rpm, deb, depot and msi Packagesに掲載されている。rpm、deb、depot、msiのパッケージファイルのそれぞれの簡単な説明と、内容を表示するコマンドと展開するコマンドが紹介されている。紹介されている内容をまとめると次のとおり。

パッケージ 説明
rpm Red Hatパッケージマネージャ。Red Hat系のLinuxディストリビューションで採用されている。rpmコマンドで操作できるほか、cpioのアーカイバに近いためrpm2cpioで変換してcpioコマンドで展開可能。
deb Debianソフトウェアパッケージフォーマット。Debian系のLinuxディストリビューションで採用されている。dpkgコマンドで操作できるほか、基本的にarアーカイバであるためarコマンドで展開可能。arアーカイバの中にtar.gzファイルが入っているため、arコマンドで展開する場合にはtarコマンドも合わせて利用する。
depot HP-UX Software Distributor Catalog Depotファイル。基本的にtarファイルであるためtarコマンドで操作可能。操作はswlistコマンドやswcopyコマンドからも実施できる。
msi Microsoftインストーラ。lessmsi.exeコマンドやMsiexec.exeコマンドから操作可能。
パッケージ パッケージの内容を一覧するコマンド
rpm rpm -qlp target.rpm
deb dpkg -c target.deb
depot tar -tf target.depot
depot swlist -l file -s target.depot
msi lessmsi.exe
パッケージ パッケージを展開するコマンド
rpm rpm2cpio target.rpm | cpio -idmv
deb dpkg -x target.deb /pathto/output/
deb ar -vx target.deb && tar -xvzf data.tar.gz
depot swcopy -x uncompress_files=true -x enforce_dependencies=false -s target.depot \* @ /pathto/output/
depot tar -xvf target.depot
msi msiexec /a target.msi /qb TARGETDIR="C:\pathto\output"