我有一个正在维护的软件包。当我发出“fakeroot debian/rules binary”时,出现此错误:
dh_install --sourcedir=debian/tmp
cp: cannot stat `debian/tmp/usr/share/prg/1.svg': No such file or directory
dh_install: cp -a debian/tmp/usr/share/prg/1.svg debian/prg//usr/share/prg/ returned exit code 1
make: * [install-arch] Error 2
我无法纠正这个错误。我可以发出“cd debian/tmp/usr/share/prg”,然后发出“ls”,然后 1.svg 确实存在。
在我的 makefile 中:
dist_pkgdata_DATA = 1.svg
在我的 prg.install 文件中:
usr/share/prg/1.svg
etc/config.ini
config.ini 文件安装没有问题。
任何建议都将不胜感激。谢谢
答案1
错误是由 引发的dh_install
,正如您的debian/rules
文件所调用的。最有可能的是目的地缺少的是源文件,而不是源文件。在这种情况下,是否debian/prg//usr/share/prg
存在?我敢打赌不存在。按照惯例,软件包的文件要么以debian/tmp
(1:1 源:二进制软件包的典型形式) 构建,要么以debian/binary-package-name
(1:n 源:二进制软件包的更佳形式) 构建,因此尝试从一种约定复制到另一种约定会导致错误。
检查你的debian/*install
文件。另请参阅dh_install(1)
手册页。特别是,
debian/软件包安装
列出要安装到每个包中的文件以及应安装到的目录。格式是一组行,每行列出要安装的一个或多个文件,行末说明应安装到的目录。要安装的文件(或目录)的名称应相对于当前目录给出,而安装目录是相对于包构建目录给出的。您可以在要安装的文件名称中使用通配符(在 v3 模式及以上)。
如果你真的想debian/prg/usr/share/prg
存在,你必须指示dh_installdirs
创建目录。debian/package.dirs
为你的包创建,列出要创建的目录的名称,相对于构建目录,例如
usr/share/man/man6
usr/lib
usr/share/prg