[英]How to run a bash script that installs rpms from a current rpm spec file?
我有一個內部軟件安裝程序,其大小> 4.9GB,它安裝了一堆rpm /庫,並在最后設置了一些配置。 我需要使用rpmbuild(這個rpm創建的新手)來創建RPM,以便安裝RPM,並繼續安裝/執行此安裝程序(它的bash文件)。
我的rpm規范當前正在執行此操作(您可以查看以下代碼):
%安裝
%后
將這些文件解壓縮到特定文件夾中。
運行那些zip文件中的bash腳本安裝程序(它將靜默運行,因為它具有-s標志)。
成功完成bash和rpm安裝。
我已經建立了rpm,因此當我嘗試執行以下操作時:
yum install .rpm,
它確實完成了zip部分,但在bash安裝部分卻永遠不做任何事情,可能是因為該rpm鎖定的事情,但是我不確定。
順便說一句,林先生根本不確定這是否是一個好方法,我的意思是結合了rpm和安裝內容
因此,因為install.sh部分給了我這個問題,所以我嘗試了以下不同的更改:
須藤/root/sotfware/install.sh -silent /root/software/silent_configfile.conf
/root/sotfware/install.sh -silent /root/software/silent_configfile.conf
./root/sotfware/install.sh -silent /root/software/silent_configfile.conf
你們這些我做錯了什么?,最好的方法是什么? 或您對此有何建議?
這是規格文件:
Name: software-19
Version: 1.0
Release: 1
Summary: software 2019
License: N/A
URL: https://
AutoReqProv: no
AutoReq: no
%description
Some description
%install
mkdir -p %{buildroot}/root/software2019
cp /root/software/software-1.zip %{buildroot}/root/software2019/software-1.zip
cp /root/software/software-2.zip %{buildroot}/root/software2019/software-2.zip
%post
unzip /root/software/software-1.zip -d /root/software2019/
unzip /root/software/software-2.zip -d /root/software2019/rpm/
sudo /root/software/install.sh -s /root/software2019/silent_configfile.conf
rm -rf /root/software/
%clean
rm -rf %{buildroot}
%files
/root/software/*
%changelog
* Tue Jan 20 2019 1.0
- Initial release
希望我很清楚,在此先感謝!
您這里有多個問題
您正在以root
身份構建RPM,這很危險,如果編寫不正確,可能會擦除計算機。 由於您才剛剛入門,因此可能性更大。
源文件不應具有絕對路徑。
您不應該使用sudo
因為RPM安裝始終以root
身份運行。
silent_configfile.conf
中不包含silent_configfile.conf
,因此目標計算機可能沒有該文件。
%post
會刪除您告訴RPM您將要安裝的文件,這可能會導致錯誤。
rpm -V
驗證。 您通過在%post
進行第三方安裝來濫用RPM系統。
rpm -q --whatprovides /root/software19/myfile
。 rpm -V
因為它無法驗證您安裝的文件。 %preun
和相關文件來“做正確的事”。 為了正確執行操作並且在未來幾年內不會引起管理員的頭痛,您需要在RPM創建過程中再次運行這些安裝程序(同樣, 不是 root
!),目標是%{buildroot}
,然后將生成的文件結構作為RPM。 如果這不能解決,那么RPM可能對您不起作用,您需要查看其他分發選項,例如自定義腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.