FreeBSD Porter 手册
上一页 | 第7章 　高级 `pkg-plist` 用法 | 下一页

# 7.2 空目录

## 7.2.1 清理空目录

一定要让 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) 异常退出。

## 7.2.2 如何建立空目录

在 port 安装过程中创建的空目录需要特别留意。 安装 package 时并不会自动创建这些目录， 这是因为 package 只保存文件。 要确保安装 package 时会自动创建这些空目录， 需要在 `pkg-plist` 中加入与 `@dirrm` 对应的行：

    @exec mkdir -p %D/share/foo/templates

上一页 | 起始页 | 下一页
高级 `pkg-plist` 用法 | 上一级 | 配置文件

若您有关于 FreeBSD ports 系统的问题， 请发送电子邮件至 <ports@FreeBSD.org>。
关于此文档的任何问题， 请致函 <doc@FreeBSD.org>。