我使用此处的过程在 RedHat 6 上安装了单声道 5.4:
http://www.mono-project.com/download/#download-lin-centos
我使用 fpm 创建了一个非常简单的 rpm 和一个预脚本:
https://github.com/jordansissel/fpm
prein.sh
#!/bin/sh
echo boo
something.sh
#!/bin/sh
echo do something
make_rpm.sh
fpm -s dir -t rpm -v 1.0 -n test --before-install prein.sh ./something.sh=/usr/bin/something.sh
如果我通过以下方式安装生成的 rpm:
sudo rpm -i test-1.0-1.x86_64.rpm
它工作正常。但是,如果我尝试通过单声道执行相同的操作,则由于prein脚本中的崩溃,安装将失败。
测试.cs
using System;
using System.Diagnostics;
namespace Test
{
class Test
{
static void Main(string [] args)
{
Process p = new Process();
p.StartInfo.FileName = "/bin/rpm";
p.StartInfo.Arguments = "-i test-1.0-1.x86_64.rpm";
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
p.WaitForExit();
}
}
}
编译时会这样做:
csc test.cs
并使用以下命令运行:
sudo mono test.exe
我得到:
error: %pre(test-1.0-1.x86_64) scriptlet failed, exit status 127
error: install: %pre scriptlet failed (2), skipping test-1.0-1
同样的过程在 CentOS 6 上也有相同的行为。但是,它在Redhat 7上按预期工作。这在RedHat/CentOS6上也运行良好,以前版本的单声道(特别是4.0.2)。任何人都知道为什么会发生这种情况以及如何解决?
好吧 - 最终我不知道问题是什么,但是当我从源代码构建 5.4 时,它消失了。甚至来自EPEL的4.2.4也出现了这个问题。