2017-01-19 76 views
0

在系統調用中發出RPM安裝腳本失敗。當在腳本文件中未提及腳本時,我們沒有看到安裝問題。rpm使用系統()後,安裝腳本失敗API

* .spec.in
%後
sfile =的/ etc/ld.so.conf中
如果! grep'^/usr/lib'$ sfile>/dev/null 2> & 1;然後
printf「%s \ n」「/ usr/lib」>> $ sfile;
fi

帖子腳本看起來很簡單。

準備包安裝... 的readline-4.2-4 錯誤:從readline的-4.2-4%後小腳本的執行失敗,退出狀態255

你能幫我們嗎?

ret = system("/bin/rpm -ivU --nodeps --force --root /mnt /tmp/readline-4.2-4.ppc.rpm"); 

當我們在shell提示符下發出上面的rpm命令時,我們看不到問題。

回答

0

你有越野車的%post(以及咄!;-)

嘗試增加 「退出0」 的帖子%小腳本結束。看來正在發生的事情是,最後執行的命令(即grep)的返回碼作爲失敗的退出碼返回到rpm。

請注意,您可以非常容易地調試失敗的程序包scriptlet(儘管該技術並不明顯)。在/ var/tmp中查找rpm-tmp *文件:當腳本失敗時,RPM不會擦除擴展腳本(即腳本)。您可以(通常不是總是)調試RPM試圖使用「sh -x」運行的腳本,然後將更改傳播回* .spec文件

-1

我不確定您的scriptlet有什麼問題。但是你不應該修改/etc/ld.so.conf。您應該創建並分發文件/etc/ld.so.conf.d/%{name}.conf

+0

這不是一個答案。這是一個建議,當然不是解決真正的問題。 – alvits