如何在equivs-build中强制指定文件位置

如何在equivs-build中强制指定文件位置

我有一些文件想要.deb使用使用创建的文件来安装equivs-build。我无法理解的是文件中所需的语法.equivs

这是我的文件布局:

myapp.equivs
myapp/
  files/
    script.sh

我想说的equivs-build是安装script.sh文件在/usr/share/myapp/script.sh.我做了一些测试,但以下语法似乎都无法Files按预期工作。

测试1

Files: ./myapp/files/script.sh /usr/share/myapp/script.sh

结果:文件安装在/usr/share/myapp/script.sh/myapp/files/script.sh.

测试2

Files: ./demo/files/script.sh /usr/share/myapp/

结果:文件安装在/usr/share/myapp/myapp/files/script.sh.

测试3

Files: ./demo/files/script.sh /usr/share/myapp

结果:文件安装在/usr/share/myapp/myapp/files/script.sh.

如何指示 equivs-build 在任意位置安装文件?

答案1

我也有同样的问题。我认为 equivs 的构建只是为了创建非常简单的包。不是具有更深层次源目录结构的包。

作为解决方法,我“修复”了 equals-build perl 脚本,如下所示:

/usr/bin/equivs-build(第 70 行左右):

die "Cannot parse Files line: '$_'\n" unless m:^\s*(\S+)\s+(\S+)/?\s*$:;
#$install_files{"$2/$1"} = $1;
$install_files{"$2"} = $1;    # do not append source path to target path

现在,您可以在控制文件中使用文件名指定完整的源路径和目标路径。 IE

Files: opt/sounds/test.wav /opt/sounds/test.wav
 opt/sounds/test4.wav /opt/sounds/default.wav

通过该方法,您可以使用任意深层源目录结构。作为一个好处,如果需要,您还可以指定不同的目标文件名。

希望有帮助。

相关内容