簡體   English   中英

為RPM創建規格文件

[英]Creating a spec file for RPM

我的一般任務是將軟件中的所有庫以及可執行軟件放在rpm文件中。 我的另一種方法是使用bash腳本,該腳本將所有庫放入CentOS的指定文件夾中。 此外,還需要安裝外部軟件包(例如,來自yum軟件包庫的庫)的依賴關系(例如yum apt-get install freeglut)。 現在,我只想使用一個可以為我做所有事情的rpm文件,復制正確文件夾中的庫,也添加yum文件,這樣我就可以啟動可執行文件而不會出現任何問題。

我讀到有關在CentOS中創建rpm文件的信息,而我的第一個嘗試是創建規范文件。 https://stackoverflow.com/a/1165200/7105824找到了一個最小的示例:

Summary: A very simple toy bin rpm package
Name: toybinprog
Version: 1.0
Release: 1

License: GPL+
Group: Development/Tools
SOURCE0 : %{name}-%{version}.tar.gz
URL: http://toybinprog.company.com/

BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root

%description
%{summary}

%prep
%setup -q

%build
# Empty section.

%install
rm -rf %{buildroot}
mkdir -p  %{buildroot}

# in builddir
cp -a * %{buildroot}


%clean
rm -rf %{buildroot}


%files
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
%{_bindir}/*

%changelog
* Thu Apr 24 2009  Elia Pinto <devzero2000@rpm5.org> 1.0-1
- First Build

在宏%files中,我可以將所有文件放入其中。 除了將所有100個庫都額外放置之外,是否還可以在其中放置包含庫內容的文件夾? 下一個問題是我不明白,宏%SOURCE0在做什么。我必須在這里輸入的tar文件是什么? 也許有人可以以一種易於理解的方式讓我清楚我該為我的問題做什么。

感謝大家!

我在這里喜歡這些准則:

https://rpm-packaging-guide.github.io/

Source0指的是rpmbuild在嘗試准備軟件包構建時將查找的第一個源文件。 %SOURCE指令是對您的源的映射。 您可以在其他部分中調用%SOURCE0來引用它。

%prep准備構建設置並創建RPM_BUILD_ROOT目錄。 %setup -q解壓縮當前目錄中的壓縮包。 在您的示例中,它的名稱toybinprog-1.0.tar.gz

%build部分中,您的源tarball已被提取,因此您輸入的任何命令(例如make都將在提取的目錄內執行。

%install部分告訴rpmbuild該軟件包在目標系統上的構建(您要安裝)過程中擁有或生成的文件的安裝位置。 在大多數情況下,您想在目標系統上安裝二進制文件,庫,並將頭文件和靜態庫保存在單獨的%{name}-devel子軟件包中。

%files指令類似,目錄也有類似的宏,名稱為%dir 用法類似。 一些准則在這里:

http://ftp.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html

%dir宏不考慮內部文件,而是%file指令的“ sub”宏。 一個例子,

  %files
  %license LICENSE
  %dir /usr/lib/%{name}/
  %{_bindir}/%{name}
  /usr/lib/%{name}/%{name}.py*

上方,以%{name}表示的軟件包將擁有兩件東西

  1. /usr/lib/%{name}/ %{name.py*}文件
  2. 目錄/usr/lib/%{name}

如果您的軟件包%{name}是要寫入指定的%dir的主軟件包,則%{name}應該擁有它。 通常,如果一個包的目錄是由多個包編寫的,則不會指定該包的目錄所有權,並且在安裝包的過程中, %dir已由系統中的其他某個包創建。

可以使用rpm命令查詢文件/目錄的所有權,例如/var/log目錄由Fedora盒子上的軟件包filesystem擁有,

 ~]# rpm -qf /var/log
 filesystem-3.2-40.fc26.i686

暫無
暫無

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

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