簡體   English   中英

如何運行bash腳本從當前rpm規范文件安裝rpm?

[英]How to run a bash script that installs rpms from a current rpm spec file?

我有一個內部軟件安裝程序,其大小> 4.9GB,它安裝了一堆rpm /庫,並在最后設置了一些配置。 我需要使用rpmbuild(這個rpm創建的新手)來創建RPM,以便安裝RPM,並繼續安裝/執行此安裝程序(它的bash文件)。

我的rpm規范當前正在執行此操作(您可以查看以下代碼):

%安裝

  • 將2個zip文件復制到一個特定的文件夾中。 這是來自實際軟件文件夾的2個zip文件,我只是將其內容分為2部分,然后壓縮它們以避免最大大小限制(如果Im沒錯,則為4gbs)。

%后

  • 將這些文件解壓縮到特定文件夾中。

  • 運行那些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

希望我很清楚,在此先感謝!

您這里有多個問題

  1. 您正在以root身份構建RPM,這很危險,如果編寫不正確,可能會擦除計算機。 由於您才剛剛入門,因此可能性更大。

  2. 源文件不應具有絕對路徑。

  3. 您不應該使用sudo因為RPM安裝始終以root身份運行。

  4. silent_configfile.conf中不包含silent_configfile.conf ,因此目標計算機可能沒有該文件。

  5. %post會刪除您告訴RPM您將要安裝的文件,這可能會導致錯誤。

    1. 這也會破壞rpm -V驗證。
  6. 您通過在%post進行第三方安裝來濫用RPM系統。

    1. 這會破壞rpm -q --whatprovides /root/software19/myfile
    2. 這會破壞rpm -V因為它無法驗證您安裝的文件。
    3. 這破壞了任何卸載/升級的概念,因為您沒有提供%preun和相關文件來“做正確的事”。

為了正確執行操作並且在未來幾年內不會引起管理員的頭痛,您需要在RPM創建過程中再次運行這些安裝程序(同樣, 不是 root !),目標是%{buildroot} ,然后將生成的文件結構作為RPM。 如果這不能解決,那么RPM可能對您不起作用,您需要查看其他分發選項,例如自定義腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM