手动制作rpm包
制作RPM包的過程,簡單的說,就是為制作過程提供一個“工作車間”,即一個目錄,里面需要包含以下幾個子目錄:
????????? BUILD??????? ————編譯相關源碼包時的工作目錄;
????????? RPMS???????? ————生成的二進制格式的RPM包存放的位置;
????????? SOURCES ————程序的源碼文件及其其他輔助文件的存放位置;
????????? SPCES??????? ————spec文件的存放位置;
????????? SRPMS????? ————生成的SRC格式的RPM包存放位置;
如果用戶目錄主目錄下沒有類似目錄結構,可以通過一個工具軟件來自動配置和生成。
#yum install rpmdevtools –y
 #rpmdev-setuptree
 rpmdev-setuptree命令默認在當前用戶主目錄下創建一個RPM構建目錄結構。
?
當“工作車間”準備停當之后,將用到的源碼及輔助文件放置于相應的SOURCES目錄中,并在SPECS目錄中創建一個spec文件,就可以使用rpmbuild命令開始制作過程了。由于root用戶的權限沒有任何限制,RPM制作過程的不當命令有可能會給系統帶去破壞,所以,一定不能使用root用戶執行制作過程。切記!
RPM生成要素:
1、?? 生成rpm所用的文件列表或者源代碼;
2、?? 根據文件列表或者源代碼生成rpm包的規范,也就是spec文件;
3、?? 根據spec文件加工源碼/文件的工具rpmbuild;
操作步驟:
一般我們都把源碼打包成tar.gz格式然后存放于SOURCES路徑下,而在SPECS路徑下編寫spec文檔,通過命令打包后,默認會把打包后的rpm包放在RPMS下,而源碼包會被放置在SRPMS下。
?
先看看rpmbuild命令的用法:
1、? 從spec文檔建立有以下選項:
-bp????????????? #只執行spec的%pre段(解源代碼包并打補丁,只是準備階段)
-bc??? ????????? #執行spec的%pre和%build段(準備并編譯)
-bi?????????????? #執行spec的%pre, %build與%install(準備,編譯并安裝)
-bl?????????????? #檢查spec中的%file段(查看文件是否齊全)
-ba????????????? #建立源碼與二進制包(常用)
?
-bb????????????? #只建立二進制包
-bs????????????? #只建立源碼包
2、重點介紹spec文件:
?????????
Summary: rpm hello world.??????
Name: hello
Version: 0.1
Source: $RPM_SOURCE_DIR/hello-0.1-1.tar.gz????????? #源代碼的tar包名字,嚴格一致;
Release: 1????????????????????
Vendor: lx
License: Share
Group: Application/test
BuildRequires: gcc, make #環境要求
Requires:? libdnet.1 libpcap.so.1 libsfbpf.so.0 #依賴庫要求
?
?
%description
print hello
?
%prep?????? #編譯前的準備部分,一般為刪除之前的中間文件(BUILD目錄),解壓縮源碼文件
rm -rf $RPM_BUILD_DIR/hello-0.1-1
zcat $RPM_SOURCE_DIR/hello-0.1-1.tar.gz | tar xvf -
?
%build?? #完成make編譯部分,如果源碼中提供了Makefile文件,就是一條make命令
cd $RPM_BUILD_DIR/hello
./configure? --prefix = /usr/local/
make
?
%install???? #完成安裝部分,如果源碼中提供了Makefile文件,就是一條make install命令
cd $RPM_BUILD_DIR/hello
make install
?
%files???????? #列出軟件被安裝后,目標機器上由該文件新建的文件,包括可執行文件、配置文件、man文件等
%doc
%defattr(-,root,root)
?/usr/lib/*
?/usr/include/*
?/usr/sbin/*
?
Rpm包制作注意點:
????????? 1、%file段? 文件的添加;
????????? 2、安裝時,對依賴庫的需求;
?
轉載于:https://www.cnblogs.com/chris-cp/p/4102694.html
總結
                            
                        - 上一篇: 剪映如何录制视频
 - 下一篇: 山东移动app如何查询名下有几个号码(山