一定要让 port 在卸载时进行清理空目录。 通常, 可以通过为所有由 port 创建的目录增加对应的 @dirrm 行来实现。 在删除父目录之前, 需要首先删除它的子目录。
: lib/X11/oneko/pixmaps/cat.xpm lib/X11/oneko/sounds/cat.au : @dirrm lib/X11/oneko/pixmaps @dirrm lib/X11/oneko/sounds @dirrm lib/X11/oneko
然而, 有时 @dirrm 会由于其它 port 使用了同一个目录而发生错误。 利用 @dirrmtry 可以只删除那些空目录, 而避免给出警告。
@dirrmtry share/doc/gimp
按照上面的写法, 将不会显示任何错误信息, 而且,即使在 ${PREFIX}/share/doc/gimp 由于其它 port 在其中安装了一些别的文件的时候, 也不会导致 pkg_delete(1) 异常退出。
在 port 安装过程中创建的空目录需要特别留意。 安装 package 时并不会自动创建这些目录, 这是因为 package 只保存文件。 要确保安装 package 时会自动创建这些空目录, 需要在 pkg-plist 中加入与 @dirrm 对应的行:
@exec mkdir -p %D/share/foo/templates