我使用以下程序在RedHat 6上安装了单声道5.4:
http://www.mono-project.com/download/#download-lin-centos
我使用fpm创建了一个非常简单的rpm with prein scriptlet:
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
工作正常。但是,如果我尝试通过mono执行相同操作,则由于prein scriptlet中的崩溃而导致安装失败。
test.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以及之前版本的mono(特别是4.0.2)也可以正常工作。任何人都知道为什么会这样,以及如何解决这个问题?
答案 0 :(得分:0)
好吧 - 最终我不知道问题是什么,但是当我从源码建立5.4时它就消失了。即使是EPEL的4.2.4也出现了这个问题。