杭州網(wǎng)站建設(shè)咨詢藍(lán)韻網(wǎng)絡(luò)長尾關(guān)鍵詞挖掘站長工具
文章目錄
- 1.安裝rpmbuild
- 2.rpm包制作
- 打包rpm包
- 3.rpm包安裝
- 4.rpm包卸載
1.安裝rpmbuild
yum install rpmbuild
yum install rpmdevtools
創(chuàng)建rpm包管理路徑,生成rpm相關(guān)目錄
RPM打包的時候需要編譯源碼,還需要把編譯好的配置文件,二進(jìn)制命令文件之類的東西按照安裝好的樣子放到合適的位置,還要根據(jù)需要對RPM的包進(jìn)行測試,這些都需要先有一個“工作空間”。rpmbuild命令使用一套標(biāo)準(zhǔn)化的“工作空間”:
[root@ ~]# rpmdev-setuptree
[root@ ~]# ls
rpmbuild
[root@iZbp1gjp1hwnsngz9ayrlnZ ~]# cd rpmbuild/
[root@iZbp1gjp1hwnsngz9ayrlnZ rpmbuild]# ls
BUILD RPMS SOURCES SPECS SRPMS
rpmdev-setuptree這個命令就是安裝rpmdevtools帶來的。
手動創(chuàng)建
如果沒有安裝rpmdevtools的話,其實用mkdir命令創(chuàng)建這些文件夾也是可以的。
#使用下面的目錄手動目錄
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
2.rpm包制作
下載源碼
這里直接下載官方例子的源碼,是個壓縮包
wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
mv hello-2.10.tar.gz /root/rpmbuild/SOURCES/
編輯SPEC文件
vim soft.spec
模板如下
Name: hello
Version: 2.1
Release: 1%{?dist}
Summary: The "Hello World" program from GNU
Summary(zh_CN): GNU "Hello World" 程序
License: GPLv3+
URL: http://ftp.gnu.org/gnu/hello
Source0: http://ftp.gnu.org/gnu/hello/%{name}-%{version}.tar.gz%description
The "Hello World" program, done with all bells and whistles of a proper FOSS
project, including configuration, build, internationalization, help files, etc.%description -l zh_CN
"Hello World" 程序, 包含 FOSS 項目所需的所有部分, 包括配置, 構(gòu)建, 國際化, 幫助文件等.%prep
%setup -q%build
%configure
make %{?_smp_mflags}%install
make install DESTDIR=%{buildroot}%files
%doc%changelog
* Sun Dec 4 2016 Your Name <youremail@xxx.xxx> - 2.10-1
- Update to 2.10
* Sat Dec 3 2016 Your Name <youremail@xxx.xxx> - 2.9-1
- Update to 2.9
本示例最終的完整SPEC
Name: hello
Version: 2.10
Release: 1%{?dist}
Summary: The "Hello World" program from GNU
Summary(zh_CN): GNU "Hello World" 程序
License: GPLv3+
URL: http://ftp.gnu.org/gnu/hello
Source0: http://ftp.gnu.org/gnu/hello/%{name}-%{version}.tar.gzBuildRequires: gettext
Requires(post): info
Requires(preun): info%description
The "Hello World" program, done with all bells and whistles of a proper FOSS
project, including configuration, build, internationalization, help files, etc.%description -l zh_CN
"Hello World" 程序, 包含 FOSS 項目所需的所有部分, 包括配置, 構(gòu)建, 國際化, 幫助文件等.%prep
%setup -q%build
%configure
make %{?_smp_mflags}%install
make install DESTDIR=%{buildroot}
%find_lang %{name}
rm -f %{buildroot}/%{_infodir}/dir%post
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :%preun
if [ $1 = 0 ] ; then
/sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || :
fi%files -f %{name}.lang
%doc AUTHORS ChangeLog NEWS README THANKS TODO
%license COPYING
%{_mandir}/man1/hello.1.*
%{_infodir}/hello.info.*
%{_bindir}/hello%changelog
* Sun Dec 4 2016 Your Name <youremail@xxx.xxx> - 2.10-1
- Update to 2.10
* Sat Dec 3 2016 Your Name <youremail@xxx.xxx> - 2.9-1
- Update to 2.9
打包rpm包
rpmbuild -ba soft.spec
看一下打包好的rpm包
tree /root/rpmbuild/*RPMS
/root/rpmbuild/RPMS
└── x86_64├── hello-2.10-1.el7.x86_64.rpm└── hello-debuginfo-2.10-1.el7.x86_64.rpm
/root/rpmbuild/SRPMS
└── hello-2.10-1.el7.src.rpm
3.rpm包安裝
rpm -ivh xxx.rpm --nodeps --force
– nodeps 👉 有些時候我們的包會有別的依賴如果依賴沒有安裝就會導(dǎo)致我們這個包安裝失敗。所以可以使用這個參數(shù)
– force 👉有的時候我們的操作系統(tǒng)已經(jīng)安裝了這個軟件并且版本高于我們要安裝的,使用這個參數(shù)可以強(qiáng)行安裝我們指定的這個
加上后面兩句,可以覆蓋當(dāng)前版本,老換新也可以。
rpm -ivh /root/rpmbuild/RPMS/x86_64/hello-2.10-1.el7.x86_64.rpm
運行
[root@iZbp1gjp1hwnsngz9ayrlnZ rpmbuild]# rpm -ivh /root/rpmbuild/RPMS/x86_64/hello-2.10-1.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...1:hello-2.10-1.el7 ################################# [100%]
[root@iZbp1gjp1hwnsngz9ayrlnZ rpmbuild]# hello
Hello, world!
4.rpm包卸載
查看程序?qū)?yīng)的rpm包名
rpm -q 'xxx'
rpm -qf 'xxx/bin/xxxx.xx'
rpm -qf mediaHttpServer
卸載rpm包安裝的程序
rpm -e 'xxxxxx'
rpm -e nvr-2.0-8913_zfs.el7.aarch64
注: 也可使用--erase代替-e,效果相同
刪除的不是rpm包,是卸載rpm包安裝的程序,包名不帶.rpm后綴
參考:https://blog.csdn.net/YangzaiLeHeHe/article/details/109188096
https://blog.csdn.net/arv002/article/details/123546081?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-9-123546081-blog-109188096.pc_relevant_3mothn_strategy_recovery&spm=1001.2101.3001.4242.6&utm_relevant_index=12