在redhat 6

时间:2017-11-02 02:29:25

标签: c# linux mono redhat rpm

我使用以下程序在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)也可以正常工作。任何人都知道为什么会这样,以及如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

好吧 - 最终我不知道问题是什么,但是当我从源码建立5.4时它就消失了。即使是EPEL的4.2.4也出现了这个问题。