dpkg 出现错误信息 "是一个目录"

8

我正在尝试创建一个Debian .deb软件包。软件包已经成功创建,但是当我尝试安装它时,出现以下错误:

 unable to open file '/var/lib/dpkg/tmp.ci//opt': Is a directory

包的目录结构为:

.
└── DEBIAN
    ├── control
    ├── opt
       └── myDir
           └── myfile
    ├── postinst
    └── preinst

在preinst中,我执行了如下命令:mkdir -p /opt/myDir postinst为空。

如果我尝试在另一台主机上安装软件包,则会出现以下错误:

软件包控制信息rmdir of `opt' didn't say not a dir: Directory not empty

有什么想法吗?


1
首先,在preinst中不需要创建目录。Dpkg会在必要时自动创建。其次,您不应该在/opt中安装Debian软件包。这是违反Debian政策和FHS的规定。话虽如此,我不确定您为什么会看到这个错误。 - Faheem Mitha
请发布您的整个“preinst”脚本。 - Jonathan Hall
1个回答

13
你的目录布局有问题。它应该像这样:
.
├── opt
│   └── myDir
│       └── myfile
└── DEBIAN
    ├── control
    ├── postinst
    └── preinst

构建你的软件包之后,你可以使用lintian测试其格式:

lintian my-package.deb

我和你遇到了同样的问题,而且lintian帮助我解决了它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接