Mac OS X のパッケージシステム 現状と要望... 明日はどっちだ? しろやまたかゆき<[email protected]> Mac OS X のパッケージシステムの現状 「アプリは可能な限りドラッグ&ドロップのみでインストールすべし」 Appleの推奨事項 NeXT由来の.pkg(.mpkg)形式 NeXTのパッケージ('88) GUIベースのインストーラ .pkgのサフィックスを持つ ディレクトリ(ファイルパッケージ) 実体は installer_tar + compress のアーカイブ foo.pkg/ -+ + + + + + + + + + + | | + foo.info : foo.bom : foo.sizes : foo.tiff : foo.tar.Z : foo_preinstall : foo_postinstall : foo_predelete : foo_postdelete : English.lproj/ --+ + 情報ファイル(デフォルト) ファイル情報(パーミッションなど) ファイルサイズ アイコン 実際のアーカイブ インストール事前処理スクリプト インストール事後処理スクリプト アンインストール事前処理スクリプト アンインストール事後処理スクリプト foo.info : 情報ファイル(英語) Japanese.lproj/ -+ + foo.info : 情報ファイル(日本語) NeXTのパッケージ('88) インストール/アンインストール Receipt /NextLibrary/Receiptsに格納される納品証 圧縮/展開 一時的にReceiptの中にファイルを格納 OSのアップグレード時に使用 全ての動作の前後にスクリプトの実行が可能 FTPインストールも可能だった(らしい) 使用例は皆無 バイナリパッケージ志向 依存関係は設定できない やろうと思えば 事前、事後に実行されるスクリプトを駆使して ソースからのコンパイルや依存関係処理の追加は可能。 パッケージ作成ツールはコマンドラインのみ (フリーでGUIラッパーがあった) Mac OS X Server1.xのパッケージ('00) ほぼ NeXTのパッケージをを踏襲 ツールの更新(4.3BSD->4.4BSDに伴い) compress -> gzip installer_tar -> pax/gnutar mpkgを追加 複数のパッケージをセットで扱う ことができる やっぱり依存関係は設定できず Mac OS X 10.xのパッケージ (2001~) NeXTのパッケージをベースにはしている 操作系の変更(1画面からウィザード形式へ) インストールのみ、圧縮/展開/アンインストールができない インストール先をドライブ単位でしか指定できない SoftwareUpdate その他のインストーラの存在 InstallVise(MacOS由来)など なぜこうなったか?(推測) 基本的にアンインストールを許さないものしか入れないから MacOS Xアップデート iアプリケーション(iTunes, iMovie, iPhoto) デバイスドライバ 「インストールはドラッグアンドドロップで済ますべき」 の原則 つまり、インストーラには頼るなと 依存関係処理の難しさ 「rpmでも --force でインストールしません?」 Darwinでのパッケージシステムの現状 NeXT由来のパッケージシステムはサポートされてない 単にコマンドラインインストーラの不在 どのみち依存関係処理ができない どのみちソースからコンパイルしてくれない どのみちアンインストールできない OpenPackages 当初、Darwinでは dpkgを使おうとしていた しかし、GPLとの兼ね合いで作業を停止 http://darwin.anu.edu.au/display.cgi?view=/darwinmail/development/200009/d_users4447 そして、OpenPackagesへ移行 ...いつだよ(汗) Darwinでのパッケージシステムの現状 本家が混迷しているため、パッケージシステムが乱立 EasyPackage(停止) オンラインインストール バイナリパッケージ主体 サーバ決めうちの Perlスクリプト(+GUIアプリ) 突然サービスを停止 PineApple : rpmベース fink 海外 dpkgベース /sw以下 にインストール* 依存関係を処理 GNU-Darwin : FreeBSD由来のPackageシステム http://sacral.c.u-tokyo.ac.jp/~hasimoto/Pineapple/index.html DarwinベースのDistributionを目指す? Zoularis 要望 ...あくまで、個人的な 楽にインストールしたい いや、./configure ; make ; make installでも十分楽なのですが... やっぱり、依存関係処理は欲しい バイナリだけじゃなくソースからも Mac OS XでもDarwin単体でも運用可能に 既存のバイナリをできるだけ置き換えたくない Software Update との兼ね合いから /opt でも /swでも /usr/pkg でもいいから... /usr/local は残しておいて欲しい 継続して欲しい コマンドライン GUI (Aqua & X ) はしごを外されるのは困る オープンソースであってほしい 最悪、自前でも継続可能に
© Copyright 2025 ExpyDoc