RPM包的構建
建立資料夾helloworld,用於存放編寫的程式程式碼
mkdir ~/helloworld
編寫程式程式碼
helloworld.c
#include <stdio.h>
int main(void)
{
printf(“Hello, world !/n”);
return 0;
}
Makefile
all:
gcc -o helloworld helloworld.c
fresh:
rm -rf Makefile
clean:
rm -rf helloworld helloworld.o
install:
cp helloworld /usr/bin
uninstall:
rm -rf /usr/bin/helloworld
readme
author: sam shen
description: this is the first program for testing rpm build
複製~/helloworld資料夾到/usr/src/redhat/SOURCES
cp -R ~/helloworld /usr/src/redhat/SOURCES
壓縮原始碼
cd /usr/src/redhat/SOURCES
tar -zcvf helloworld-0.1-1.tar.gz helloworld
編寫spec檔案
cd /usr/src/redhat/SPECS
編寫helloworld-0.1-1.spec,內容如下:
Summary: the First RPM of sam
Name:helloworld
Version:0.1
Release:1
Vendor:Sam Shen (sxc_1985921@126.com)
License:Share
Group:Applications/Text
Source0:helloworld-0.1-1.tar.gz
#Patch0:helloworld-0.1-1.patch
%description
My test helloworld
%prep
export RPM_SOURCES_DIR=/usr/src/redhat/SOURCES
export RPM_BUILD_DIR=/usr/src/redhat/BUILD
tar -xvf $RPM_SOURCES_DIR/helloworld-0.1-1.tar.gz
#%patch
%build
cd $RPM_BUILD_DIR/helloworld
make
%install
cd $RPM_BUILD_DIR/helloworld
make install
%clean
rm -rf $RPM_BUILD_DIR/helloworld
%files
%defattr(-,root,root)
/usr/bin/helloworld
%doc
/usr/src/redhat/BUILD/helloworld/readme
%changelog
* Tue Sep 2 2008 Sam Shen sxc_1985921@126.com
- sam test it
打包,在/usr/src/redhat/SPEC目錄下執行如下命令:
rpmbuild -ba helloworld-0.1-1.spec
後在/usr/src/redhat/RPMS/i386目錄下產生helloworld-0.1-1.i386.rpm,在/usr/src/redhat/SRPMS目錄下產生helloworld-0.1-1.src.rpm
此時,在終端執行helloworld將輸出:Hello, world !
修改源程式,進行源程式更新
cd /usr/src/redhat/SOURCES/
mkdir helloworld2
cd helloworld2
cp ../helloworld/* ./
vim helloworld.c
在第一個prinf語句後加上printf(“This is a simple program for testing rpm build/n”);
vim readme
在末尾加上you can input helloworld in terminal , and you can see what happened
回到上級目錄
cd /usr/src/redhat/SOURCES
diff -uNr helloworld helloworld2 > helloworld-0.1-1.patch
上條命令將產生一個patch檔案helloworld-0.1-1.patch
現在回頭把Patch0和%patch前面的註釋去掉
重新生成RPM包,觀察變化
rpmbuild -bb helloworld-0.1-1.spec (只生成二進位制格式的rpm包),或
rpmbuild -bs helloworld-0.1-1.spec (只生成src格式的rpm包),或
rpmbuild -bp helloworld-0.1-1.spec (只需要生成完整的原始檔,存在BUILD目錄下,它的作用就是把tar包解開然後把所有的補丁檔案合併而生成一個完整的最新功能的原始檔),或
rpmbuild -ba helloworld-0.1-1.spec (產生以上3個過程分別生成的包)
rpmbuild -bc helloworld-0.1-1.spec Build (compile) the program but do not make the full RPM, stopping just after the %build section
rpmbuild -bi helloworld-0.1-1.spec Create a binary RPM and stop just after the %install section
rpmbuild -bl helloworld-0.1-1.spec Check the listing of files for the RPM and generate errors if the buildroot is missing any of the files to be installed
此時,在終端執行helloworld將輸出:
Hello, world !
This is a simple program for testing rpm build
檢查gpg軟體是否安裝
rpm -qf `which gpg`
顯示gnupg-1.4.7-7類似的名稱,則已經安裝
配置一個簽名
gpg –gen-key
按照提示回答問題
建立RPM巨集檔案/home/sam/.rpmmacros
%_signature gpg
%_gpg_path /home/sam/.gnupg
%_gpg_name shen xiao cheng (sam shen) <sxc_1985921@126.com>
%_gpgbin /usr/bin/gpg
為RPM包簽名
rpm --addsign helloworld-0.1-1.i386.rpm
或者在打包時加上--sign選項,如:
rpmbuild -ba --sign helloworld-0.1-1.spec
也可以從src.rpm打成platform.rpm
把src.rpm和.spec檔案放在一個資料夾下
rpm -ivh helloworld-0.1-1.src.rpm
檢視安裝到哪裡:
locate helloworld
rpm -ba helloworld-0.1-1.spec
RPM命令
查詢系統中已經安裝的軟體
rpm -q softname
檢視系統中所有已經安裝的包
rpm -qa
查詢已經安裝的軟體包都安裝都何處
rpm -ql softname
檢視一下已經安裝軟體的配置檔案
rpm -qc softname
檢視一個已經安裝軟體的文件安裝位置
rpm -qd softname
檢視一下已經安裝軟體所依賴的軟體包及檔案
rpm -qR softname
檢視一個已安裝檔案屬於哪個包
rpm -qf file
檢視一個已安裝軟體包的資訊
rpm -qi softname
檢視當前目錄下軟體的資訊
rpm -qpi name-version-release.platform.rpm
檢視當前目錄下軟體包將會在系統中安裝那些部分
rpm -qpl name-version-release.platform.rpm
檢視軟體包的文件所在的位置
rpm -qpd name-version-release.platform.rpm
檢視一個軟體包的配置檔案
rpm -qpc name-version-release.platform.rpm
檢視一個軟體包的依賴關係
rpm -qpR name-verseion-release.platform.rpm
安裝軟體
rpm -ivh name-version-release.platform.rpm
如果在安裝過程中提示此軟體已安裝過或因其他原因無法繼續安裝,但確實要執行安裝命令
rpm -ivh -replacepkgs name-version-release.platform.rpm
線上安裝
rpm -i serveraddress/name-version-release.platform.rpm
解除安裝軟體
rpm -e filename
升級軟體
rpm -uvh filename
判定某個檔案屬於哪個軟體包
rpm -qf file
匯入簽名
rpm --import RPM-GPG-KEY
更新軟體包資料庫
updatedb
查詢軟體安裝的位置
locate softname
從rpm軟體包中抽取檔案
rpm2cpio name-version-release.platform.rpm | cpio -idmv
只生成二進位制格式的rpm包
rpmbuild -bb helloworld-0.1-1.spec
只生成src格式的rpm包
rpmbuild -bs helloworld-0.1-1.spec
只需要生成完整的原始檔,存在BUILD目錄下,它的作用就是把tar包解開然後把所有的補丁檔案合併而生成一個完整的最新功能的原始檔 rpmbuild -bp helloworld-0.1-1.spec
產生以上3個過程分別生成的包
rpmbuild -ba helloworld-0.1-1.spec
rpm包管理的配置檔案
locate rpmrc
相關文章
- 如何構建 RPM 包
- 構建自己的postgresql rpm包SQL
- rpm包的查詢
- RPM 包是如何從源 RPM 製作的
- 原始碼包和rpm包的區別原始碼
- RPM 包初窺
- centos7:原始碼編譯 openssh 1.0.2u,構建可在centos7使用的 rpm包CentOS原始碼編譯
- Linux之RPM包管理_RPM包查詢Linux
- centos(linux): rpm -V 驗證rpm包安裝程式的安全CentOSLinux
- Linux rpm查詢命令以及RPM包驗證Linux
- rpm:虛擬包:空白包:欺騙包:do nothing包:滿足現有rpm包安裝依賴的要求
- 製作PHP的RPM包例項PHP
- RPM包的安裝與升級
- Linux自己製作rpm包Linux
- php-構建自己的composer包PHP
- mysql8.0.30的RPM包安裝方法MySql
- 對RPM軟體包的查詢操作
- docker 構建java 部署包DockerJava
- RPM包安裝與介紹
- yum如何解除安裝已安裝的rpm並安裝本地rpm包
- centos以RPM包方式安裝redis的方法CentOSRedis
- 在 Fedora 中安裝替代版本的 RPM 包
- rpm包的校驗和檔案讀取
- Centos 7 製作MySQL 5.7 RPM包CentOSMySql
- CentOS下使用rpm包安裝MySQLCentOSMySql
- Linux軟體管理之RPM包1Linux
- POSTGRESQL10.3 RPM包 主從搭建SQL
- 基於Linux的MySQL5.7RPM包安裝LinuxMySql
- 為 OpenWrt 構建 ipk 安裝包
- 06、使用Gradle構建的專案如何打jar包和war包GradleJAR
- SpringBoot文件之構建包的閱讀筆記Spring Boot筆記
- 介紹一個好用的 Laravel Menu 建構包Laravel
- Linux - openssh透過原始碼build rpm包Linux原始碼UI
- 徹底解除安裝rpm軟體包的指令碼指令碼
- yum/dnf/rpm 等 檢視rpm 包安裝路徑 (fedora 中 pygtk 包內容安裝到哪裡了)
- rpm包安裝升級與解除安裝
- 怎麼在 Fedora 中建立我的第一個 RPM 包?
- 雲端計算學習路線教程大綱課件:使用RPM工具管理RPM包