构建我们自己的deb包,我们遇到了必须手动修补一些脚本以便它们获得正确前缀的问题。
特别是
错误脚本的示例:
#!/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。
答案 0 :(得分:2)
正确的方法是不调用./configure --prefix=$TARGET_DIR
这告诉所有二进制文件/脚本/ ...安装的文件最终会在${TARGET_DIR}
中,而它们真的应该在/usr
中结束。
您可以使用DESTDIR
变量(如make install DESTDIR=${TARGET_DIR}
中所示)在安装时更改(前缀)安装目标(文件将在${TARGET_DIR}/${prefix}
中结束,但只会{ {1}}“内置”)