deb包安装的脚本有错误的前缀

时间:2013-02-05 17:24:02

标签: mono debian packaging deb

构建我们自己的deb包,我们遇到了必须手动修补一些脚本以便它们获得正确前缀的问题。

特别是

  • 我们正在构建mono
  • 我们正在使用官方tarball。
  • 以错误前缀结尾的脚本是:mcs,xbuild,nunit-console4等

错误脚本的示例:

#!/bin/sh
exec /root/7digital-mono/mono/bin/mono \
      --debug $MONO_OPTIONS \
      /root/7digital-mono/mono/lib/mono/2.0/nunit-console.exe "$@"

正确的最终结果应该是什么:

#!/bin/sh
exec /usr/bin/mono \
      --debug $MONO_OPTIONS \
      /usr/lib/mono/2.0/nunit-console.exe "$@"

我们在调用dpkg-buildpackage之前在build-package脚本中使用的变通方法:

sed -i s,`pwd`/mono,/usr,g $TARGET_DIR/bin/mcs
sed -i s,`pwd`/mono,/usr,g $TARGET_DIR/bin/xbuild
sed -i s,`pwd`/mono,/usr,g $TARGET_DIR/bin/nunit-console
sed -i s,`pwd`/mono,/usr,g $TARGET_DIR/bin/nunit-console2
sed -i s,`pwd`/mono,/usr,g $TARGET_DIR/bin/nunit-console4

现在,解决这个问题的正确方法是什么?完整的debian包创建脚本here

免责声明:我知道有Mono 3 here的预览套餐!但那些不适用于Squeeze。

1 个答案:

答案 0 :(得分:2)

正确的方法是调用./configure --prefix=$TARGET_DIR

这告诉所有二进制文件/脚本/ ...安装的文件最终会在${TARGET_DIR}中,而它们真的应该在/usr中结束。

您可以使用DESTDIR变量(如make install DESTDIR=${TARGET_DIR}中所示)在安装时更改(前缀)安装目标(文件将在${TARGET_DIR}/${prefix}中结束,但只会{ {1}}“内置”)