日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rpm包制作介绍

發布時間:2024/10/12 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rpm包制作介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

RPM(Rpm Package Management)在ReadHat等發行版下被用作軟件包管理程序,其將某個軟件相關的文件置入一個.rpm包中,用rpm命令,我們可以方便地完成Linux下軟件安裝、文件查看等操作。在《rpm包管理》一文中我們學習了rpm安裝、查看軟件包的相關方法,下面介紹如何制作rpm包。

?

1.兩種rpm包

用rpm打包,將會產生兩種rpm包,一是源碼包(xxx.src.rpm),一是binary包(xxx.rpm)。源碼包可用于開源軟件發布源碼,一般包含xxx.spec文件和xxx.tar.gz文件;binary包用于直接軟件安裝,包含已完成編譯的可執行文件以及相關配置文件等:

# rpm -qlp ../SRPMS/hello-0.1-1.src.rpm hello-0.1-1.spec hello-0.1-1.tar.gz# rpm -qlp ../RPMS/x86_64/hello-0.1-1.x86_64.rpm /bin/hello /usr/share/doc/packages/hello /usr/share/doc/packages/hello/README

?

2.打包目錄

從.tar.gz等格式的源碼文件,到.rpm文件,需要經過編譯過程,為此rpm提供了專門的目錄進行打包:

  • SOURCES目錄:存放.tar.gz源碼文件
  • SPECS目錄:存放.spec文件
  • SRPMS目錄:存放生成的xxx.src.rpm文件
  • BUILD目錄:存放解壓后的源碼文件或其他中間的臨時文件
  • RPMS目錄:存放生成的xxx.rpm文件

對于suse,以上目錄在/usr/src/packages路徑下,對于RedHat,以上目錄在/usr/src/redhat路徑下。

?

3.spec文件

rpm包制作過程中最主要一步就是編寫spec文件,spec文件用于提供軟件相關描述以及如何編譯、安裝等信息,以下是一個spec文件示例:

Summary: rpm hello world. Name: hello Version: 0.1 Source: $RPM_SOURCE_DIR/hello-0.1-1.tar.gz Release: 1 Vendor: lx License: Share Group: Application/test%description print hello%prep rm -rf $RPM_BUILD_DIR/hello-0.1-1 zcat $RPM_SOURCE_DIR/hello-0.1-1.tar.gz | tar xvf -%build cd $RPM_BUILD_DIR/hello make%install cd $RPM_BUILD_DIR/hello make install%files %doc $RPM_BUILD_DIR/hello/README /bin/hello

以上開頭一段用于描述軟件包相關信息,除了Summary/Name/Version/Source/Release/Vonder/License/Group外還有其他可選域,以上所列除Source外其他為必選域,建議在spec中提供Source信息,生成.src.rpm時軟件包由Source提供的路徑獲取,否則.src.rpm中不包含.tar.gz源碼包。

?

后面%xx為spec文件的宏定義,在/usr/lib/rpm/macros文件找到相關定義,最重要的是以下幾個部分:

  • %prep:編譯前的準備部分,一般為刪除之前的中間文件(BUILD目錄),解壓縮源碼文件
  • %build:完成make編譯部分,如果源碼中提供了Makefile文件,就是一條make命令
  • %install:完成安裝部分,如果源碼中提供了Makefile文件,就是一條make install命令
  • %files:列出軟件被安裝后,目標機器上由該文件新建的文件,包括可執行文件、配置文件、man文件等

?

4.生成目標文件

.tar.gz文件放到SOURCES目錄下,.spec文件編輯完成并放到SPECS目錄下,這些完成后我們就可以打包生成.src.rpm文件和.rpm文件了:

# rpmbuild -ba hello-0.1-1.spec

以上rpmbuild命令用到 -ba 選項,表示既生成.src.rpm文件,又生成.rpm文件。以上命令執行后,我們來看各打包目錄下生成的文件:

/usr/src/packages # ll *
BUILD:
drwxr-xr-x 2 root root 4096 04-13 20:49 hello

RPMS:
drwxrwxrwt 2 root root 4096 04-13 20:49 x86_64

SOURCES:
-rw-r--r-- 1 root root 346 04-13 00:42 hello-0.1-1.tar.gz

SPECS:
-rw-r--r-- 1 root root 411 04-13 22:46 hello-0.1-1.spec

SRPMS:
-rw-r--r-- 1 root root 2076 04-13 20:49 hello-0.1-1.src.rpm

RPMS的x86_64目錄下:

/usr/src/packages # ll RPMS/x86_64/ -rw-r--r-- 1 root root 5102 04-13 20:49 hello-0.1-1.x86_64.rpm

?

5.rpm解包

rpm2cpio xxx.rpm | cpio -div

?

Reference:?Maximum RPM

? ? ? ? ? ? ? ? RPM HOWTO

轉載于:https://www.cnblogs.com/bangerlee/archive/2013/04/13/3019484.html

總結

以上是生活随笔為你收集整理的rpm包制作介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。