Linux下建立rpm包介紹

2021-10-25 19:40:25 字數 3119 閱讀 8175

本文只是簡單的介紹乙個linux下為乙個新的專案,建立自己的rpm 安裝包, 裡面包含rpm 一些基本術語和基本概念的介紹. 作為入門級的參考使用

rpmbuild的預設建立目錄為$home/rpmbuild 目錄, 可以通過如下命令建立:

rpmdev-setuptree
這個預設工作路徑通常在 /usr/lib/rmp/macros 這個檔案中通過巨集變數 %_topdir 定義的, 如果想更改這個路徑,一般不建議直接修改這個配置檔案.而是在自己的使用者目錄下面建立乙個 .rpmmacros 隱藏檔案,然後在裡面重新定義 %_topdir 的路徑, 如下:

%_topdir /home/devinxa/rpmbuild_demo/
使用 rpmdev-setuptree 命令建立 build 環境後,會生成5個標準的子目錄 build, rpms, sources, specs 和 srpms, 另外在打包過程還會需要 buildroot 這個目錄, 這6個目錄就是rpm build的所需要的所有目錄,父級目錄為%_topdir,他們的作用如下:

最簡單的方式是從別處copy乙份功能類似的spec檔案直接修改,但是這種case經常是可遇不可求的.所有我們從建立乙個新的 spec 模板檔案說起.

rpmdev-newspec -o name-version.spec
通過上面的命令我們就可以建立乙個新的 spec 模板檔案, 這個檔案可以分為 前言 和 主體 兩個部分, 分別解釋如下:

#前言部分

version: #軟體包的版本,建議和spec檔案名字中的version一致

release: 1% #軟體的發布序號

summary: #軟體包的摘要描述

license: #軟體的授權方式

url: #原始碼的對應的路徑或者軟體所有公司的**之類

source0: #源**包的名稱(預設時rpmbuid回到sources目錄中去找), 如果有其他配置或指令碼則依次用source1、source2等等往後增加

requires: #編譯好的rpm在執行時的依賴軟體包,各個依賴也以逗號分隔

#主體部分

%description #軟體包的詳細說明,最多為80個英文本元

%prep #將%_sourcedir目錄下的源**解壓到%_builddir目錄下。如果有補丁的需要在這個階段進行打補丁的操作

%setup -q #解壓操作

%build #在%_builddir目錄下執行原始碼包的編譯,一般是執行./configure和make指令

%configure #巨集常量,會自動將 %設定成/usr

make % #自動將軟體安裝時的路徑設定成如下約定:

# 1. 可執行程式放在/usr/bin

# 2. 依賴的動態庫放在/usr/lib或者/usr/lib64

# 3. 二次開發的標頭檔案放在 /usr/include

# 3. 文件及手冊放在/usr/share/man

%install # 將需要打包到rpm軟體包裡的檔案從%_builddir下拷貝%_buildrootdir目錄下, 當使用者最終用rpm -ivh name-version.rpm安裝軟體包時,這些檔案會安裝到使用者系統中相應的目錄裡

rm -rf $rpm_build_root # $rpm_build_root 內建變數,就是 %_buildrootdir的值

%make_install

%clean #編譯後的清理工作,這裡可以執行make clean以及清空 %_buildroot 目錄等

#下來就是製作 rpm 包階段, 這個階段是自動完成的,所以在spec檔案裡面是看不到的,這個階段會將%_buildroot目錄的相關檔案製作成rpm軟體包最終放到%_rpmdir目錄裡

#rpm製作階段會引用下面的 %files 階段, %file 階段主要用來說明會將 %_buildrootdir 目錄下的哪些檔案和目錄最終打包到rpm包裡

%files #所有需要打包到rpm包的檔案和目錄都在這個地方列出, 需要注意,檔案列表必須以 "/" 開頭, 否則會報錯(自己也可以嘗試一下)

@defatrr(-,root,root,-) #%defattr(檔案許可權,使用者名稱,組名,目錄許可權),如果不牽扯到檔案、目錄許可權的改變則一般用%defattr(-,root,root,-)這條指令來為其設定預設許可權

%doc #可以指定那些在編譯過程中沒有從 %_builddir 放入到 %_buildrootdir 的檔案,如一些readme,license之類的檔案

%changelog #記錄的每次打包時的修改變更日誌,為打包 rpm 的最後乙個階段, 格式不對,或報錯失敗,格式一般如下:

# * date +"%a %b %d %y" 修改人 郵箱 本次版本x.y.z-p

# - 本次變更修改了那些內容

在 /tmp 目錄下面建立如下目錄和檔案

使用 rpmdev-setuptree 生成 rpmbuild 環境如下(我自定義了 %_topdir 目錄):

Linux下安裝RPM檔案包

2.如何安裝.src.rpm軟體包 有些軟體包是以.src.rpm結尾的,這類軟體包是包含了源 的rpm包,在安裝時 需要進行編譯。這類軟體包有兩種安裝方法,方法一 1.執行rpm i your package.src.rpm 2.cd usr src redhat specs 3.rpmbuild...

RPM包建立入門

預設的工作區為 usr src redhat 通過配置檔案rpmmacros指定 cat rpmmacros topdir root helloworld end 這個配置也可以用命令列來指定 rpmbuild define topdir root helloworld mkdir p root h...

Linux下deb包和rpm包的安裝方法

linux下deb包和rpm包的安裝方法 一 deb是 ubuntu debian 的格式,是debian發行版的軟體包,ubuntu是基於debian 發行的 所有可以用。dpkg 是debian package的簡寫,是為debian 專門開發的套件管理系統,方便軟體的安裝 更新及移除。所有源自...