ほとんどのパッケージマネージャは、これ以外の動作 -- たとえば新しいファイルをパッケージに加えたり、すでに存在している ファイルからパッケージを作ったりすること -- をサポートしていません。 ある開発者がプログラムをコンパイルし、インストールしたとして、 そのプログラムをパッケージマネージャに登録したいと思った場合、 何が起こるでしょうか? その開発者はインストールされたファイルをひとつの tarball にまとめて それらのファイルを削除し、それからパッケージマネージャにその tarball を インストールさせる必要があります。そのプログラムに別のなにかを加える場合、 開発者はまた同じことをくり返す必要があるでしょう。
これに対して、 /package はファイルシステム自体をデータベースとして使います:
パッケージ用のディレクトリは次のように識別されます: /package 内の non-sticky な (sticky ビットが立っていない) サブディレクトリか、 /package 内の sticky な (sticky ビットが立っている) サブディレクトリ以下の non-sticky なサブディレクトリか、 /package 内の sticky なサブディレクトリ以下の sticky なサブディレクトリ以下の non-sticky なサブディレクトリ …などなど。 たとえば /package/admin は sticky なサブディレクトリであり、 /package/admin/daemontools-0.76 はそうではありません。 したがって、/package/admin/daemontools-0.76 はパッケージ用のディレクトリです。 スクリプトを単純にするため、/package 自身もまた sticky になっています。
慣例として、パッケージの tarball は /package 内で展開します。 これらにはすべての必要なサブディレクトリが含まれているので、 システム管理者が前もってディレクトリを作っておく必要はありません。 たとえば admin/daemontools-0.76 tarball は admin/daemontools-0.76 の階層とともに sticky な admin ディレクトリも 持っています。 tarball は tar -xpf で展開する必要があることに注意してください。 tar -xf では sticky ビットが反映されません。