rpm 制作
RPM是RedHat Package Manager(RedHat軟件包管理工具)的縮寫,是一種用于互聯(lián)網(wǎng)下載包的打包及安裝工具,它包含在某些Linux分發(fā)版中。它生成具有.RPM擴展名的文件。使用rpm安裝軟件和管理軟件非常的方便。而這節(jié)我們不是介紹如何使用rpm安裝或管理軟件,而是如何把源碼制作成rpm包。
我們?nèi)粘9ぷ饕话銜褂迷创a包安裝軟件,因為源碼包相對靈活多變,操作自由,唯一的問題就是容易編譯出錯。rpm包安裝簡單方便,唯一問題就是不能自定義參數(shù)且更新的速度相對于源碼慢很多。
rpm軟件包制作
yum -y install gcc* rpm-build pcre-devel
mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
SOURCES存放源代碼,補丁,圖標等文件
BUILD解壓后的文件存放在這里
SPECS存放用于管理rpm制作進程的spec文件
RPMS存放由rpmbuild制作好的二進制包
SRPMS存放由rpmbuild制作好的源碼包
cd rpmbuild/SOURCES/
wget http://nginx.org/download/nginx-1.4.4.tar.gz
cd rpmbuild/SPECS/
例如:
vim nginx.spec
#軟件包簡要介紹
Summary: hellorpm is a test program。
#軟件包的名字
Name: hellorpm ? ? ? ?
#軟件包的主版本號 ? ? ? ? ?
Version: 2.2.6 ? ? ? ? ?
#軟件包的次版本號 ? ? ? ? ? ?
Release: 1 ?
#源代碼包,默認將在上面提到的SOURCES目錄中尋找 ? ? ? ? ? ? ? ? ? ? ? ?
Source0: %{name}-%{version}.tar.gz ?
#授權(quán)協(xié)議
License: GPL ? ?
#定義臨時構(gòu)建目錄,這個地址將作為臨時安裝目錄在后面引用
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
#軟件分類
Group: Development/Tools ?
#軟件包的內(nèi)容介紹 ? ? ? ? ? ? ?
%description ? ? ? ? ? ? ? ? ? ? ? ?
The hellorpm program is a test.
#表示預操作字段,后面的命令將在源碼代碼BUILD前執(zhí)行
%prep ? ? ? ? ? ? ? ? ? ?
#構(gòu)建BUILD環(huán)境,將解壓源碼壓縮包到BUILD目錄
%setup -q ? ? ?
#BUILD字段,將通過直接調(diào)用源碼目錄中自動構(gòu)建工具完成源碼編譯操作 ? ? ? ?
%build ? ? ?
#調(diào)用源碼目錄中的configure命令 ? ? ? ? ? ?
./configure ? ? ? ?
#在源碼目錄中執(zhí)行自動構(gòu)建命令make ? ?
make ? ? ? ? ? ?
#安裝字段 ? ? ? ?
%install ? ?
#調(diào)用源碼中安裝執(zhí)行腳本 ? ? ? ? ? ?
make DESTDIR=$RPM_BUILD_ROOT install
#文件說明字段,聲明多余或者缺少都將可能出錯
%files ? ? ? ? ? ? ?
#設置文件權(quán)限屬性 ? ? ?
%defattr(-,root,root) ? ? ?
#聲明/usr/local/bin/hellorpm將出現(xiàn)在軟件包中 ? ? ?
/usr/local/bin/hellorpm ? ? ?
#聲明并設置文件屬性 ?
%doc %attr(0444,root,root) /usr/local/man/man1/hellorpm.1 ?
#同上,聲明文檔文件
%doc README ?
例如:vim nginx.spec
Name:nginx
Version:1.4.4
Release:1%{?dist}
Summary:nginx-1.4.4 from wenji
Group:Development/Tools
License:GPL
URL:http://nginx.org
Source0:%{name}-%{version}.tar.gz
Source1: nginx
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
#BuildRequires:
#Requires:
%description
Nginx is a http server
%prep
%setup -q
%build
./configure \
? ? ? ? ? ? ? ?--user=daemon --group=daemon --prefix=%{_prefix} --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-md5=/usr/lib --with-sha1=/usr/lib ?--with-http_gzip_static_module
make %{?_smp_mflags}
%install
%{__rm} -rf $RPM_BUILD_ROOT
%{__make} DESTDIR=$RPM_BUILD_ROOT install
test -z %{buildroot}/etc/init.d/ || /bin/mkdir -p %{buildroot}/etc/init.d/
%{__install} -m 655 -p %{SOURCE1} $RPM_BUILD_ROOT/etc/init.d/nginx
%clean
%{__rm} -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%{_prefix}
/etc/init.d/nginx
%postun
#if [ $1 -eq 0 ?]
#then
rm -rfv %{_prefix}
rm -rfv /etc/init.d/nginx
#fi
%changelog
cd rpmbuild/SPECS/
rpmbuild -bb nginx.spec
###rpmbuild -ba ‘spec文件路徑’
###(rpmbuild常用參數(shù): -bb 只編譯二進制rpm包 -bs 只編譯源碼rpm包 -ba 同時編譯二進制和源碼rpm包)
轉(zhuǎn)載于:https://blog.51cto.com/actionwenji/1355211
總結(jié)
- 上一篇: Next Permutation
- 下一篇: addView的误区