亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Apache > 正文

爛泥:Linux源碼包制作RPM包之Apache

2024-08-27 18:29:18
字體:
來源:轉載
供稿:網友
爛泥:linux源碼包制作RPM包之Apache

本文由秀依林楓提供友情贊助,首發于爛泥行天下

公司服務器比較多,需要把apache源碼包制作成rpm包,然后放到公司內網yum源上進行下載安裝。apache的rpm包安裝方式比源碼安裝方式比較快,這能節約不少的時間。

有關內網yum源的搭建,可以參考《爛泥:yum的使用及配置》這篇文章。

一、安裝rpm-build

查閱相關資料得知,要把源碼包制作成rpm包需要使用rpm打包工具rpm-build。

rpm-build通過rpmbuild命令根據本地源碼包,通過spec文件中的規則就可以把源碼包制作成rpm包。

現在我們來安裝rpm-build包,如下:

yum -y install rpm-build

clip_image001

rpm-build安裝完畢后,我們來查看rpm-build的rpm包信息。如下:

cd /var/cache/yum/x86_64/6/updates/packages/

clip_image002

注意:yum安裝軟件默認是安裝完畢立即刪除的,但是我們可以通過修改yum.conf文件使其不刪除。

cat /etc/yum.conf

clip_image003

查看rpm-build的rpm包相關信息,如:軟件名稱、版本、build日期、功能描述、大小等等。如下:

rpm -qpi rpm-build-4.8.0-38.el6_6.x86_64.rpm

clip_image004

查看rpm-build的rpm包含安裝的目錄和文件,如下:

rpm -qpl rpm-build-4.8.0-38.el6_6.x86_64.rpm

clip_image005

查看rpm-build的rpm包的配置文件,如果該該rpm包沒有配置文件的話就不會顯示。

rpm -qpc rpm-build-4.8.0-38.el6_6.x86_64.rpm

clip_image006

查看rpm-build的rpm包的依賴關系,如下:

rpm -qPR rpm-build-4.8.0-38.el6_6.x86_64.rpm

clip_image007

除此之外,如果想查看這個文件屬于哪個rpm 包,我們也可以使用以下命令。如下:

rpm -qf /etc/init.d/iptables

clip_image008

有關rpm命令的詳細使用方法,我們也可以通過man rpm進行查看。如下:

man rpm

clip_image009

二、spec規則文件內容詳解

spec文件是整個rpm包制作的核心,它的作用如同源碼編譯程序時的Makefile文件一樣。

spec文件包含建立一個rpm包必要的信息,包括哪些文件是包的一部分以及它們安裝在哪個目錄等等信息。

注意:spec文件必須由普通用戶創建,并且強烈建議使用vi或者vim命令創建。

我們先來創建一個httpd.spec文件,使用vi命令,如下:

vi httpd.spec

whoami

pwd

clip_image010

通過上圖,我們可以很明顯的看出,目前httpd.spec文件中已經有spec文件的選項。我們所需要做的就是根據這些選項來填寫該spec文件,填寫完畢后保存即可。

注意:在新建一個spec文件時,系統會默認創建一個spec文件模版。只是該模版是空的,如果沒有填寫內容的話,是無法保存該文件的。

下面我們就開始講解spec文件的相關選項,spec文件內容一般分為如下幾個部分:

定義rpm包的信息、定義源碼包、定義rpm包的依賴關系、打包前的工作、編譯并安裝rpm包、安裝之后生成的文件、安裝前后需要執行的腳本、軟件變更日志

2.1定義rpm包的信息

rpm包信息,主要定義用戶查詢rpm包信息時所顯示的內容。它包含rpm包的功能描述、軟件版本、版權信息和軟件授權類型等等。

詳細信息如下:

Name定義該rpm包的名字,必須要填寫。

Version定義該rpm包的版本號,建議和源碼包的名稱保持一致。

Release定義rpm本身的版本號,使用默認值即可。

Summary定義關于該rpm包的一些介紹。

%description定義關于該rpm包的一些描述信息。

Group標識軟件包所屬類型。

License軟件授權類型,比如GPL、Commercial、Shareware。

URL定義軟件作者的主頁。

rpm包信息中最重要的是NVR,也就是name、version、release。因為最后生成的rpm包的名稱就是根據這三項來的。

rpm名稱形式,如下:name-version-release.rpm。

2.2定義源碼包

Source0用來定義制作rpm包時所需要的源碼包。如果制作rpm包時,有多個源碼包,那么使用source和數字混合,比如:

source0: tbsys-src.tar.gz

source1: tbnet-src.tar.gz

source2: tair-2.1.0-src.tar.gz

注意:

Source0必須要填寫,而且填寫的名字必須是和下載源碼包名稱要一模一樣,還要注意只有tar.gz的源碼包,才能制作rpm包。

2.3定義rpm包的依賴關系

rpm包在制作過程中會依賴基本庫,而rpm包在安裝時有時也需要其他軟件包。這些我們都可以通過以下選項進行控制。

BuildRequires定義制作rpm包時,所依賴的基本庫。該選項可有可無。

Requires定義安裝該rpm包時,所依賴的軟件包。該選項可有可無。

注意:

在這里要重點說明一點,Requires定義所依賴的軟件包,在進行yum安裝時的情況。

我們在使用yum安裝軟件A時,yum會在下載完A的rpm包后,對該rpm包進行檢查(rpm包中會給出安裝該rpm包安裝時,所依賴的基礎庫和軟件)。

如果檢查出,A的安裝還要依賴軟件B,那么此時yum就會自動下載并安裝B。B安裝完畢后,就會繼續安裝A。如果是內網yum源的話,我們只需要把B放在內網yum源即可。

如果檢查出,A的安裝不需要其他軟件的支持,那么yum會自動安裝A。

2.4編譯并安裝rpm包

這一步是非常重要,類似與源碼安裝的的./configure、make、make install。主要包括%build、%install等選項。如下:

%build定義編譯軟件包時的操作

%install定義安裝軟件包,使用默認值即可。

BuildRoot定義安裝或編譯時使用的虛擬目錄,建議使用默認值即可。如下:

%(mktemp-ud%{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

該參數非常重要,因為在生成rpm包的過程中,執行make install時就會把軟件安裝到上述的路徑中。在打包的時候,同樣依賴虛擬目錄為根目錄進行操作。

2.5安裝之后生成的文件

rpm包在進行安裝時,會創建相關的目錄及文件,我們就可以在此定義。

%files定義rpm包安裝時創建的相關目錄及文件。

在該選項中%defattr (-,root,root)一定要注意。它是指定安裝文件的屬性,分別是(mode,owner,group),-表示默認值,對文本文件是0644,可執行文件是0755。

2.6安裝前后需要執行的腳本

%prep指定rpm包安裝前執行的腳本。在對軟件進行打包前,我們還進行其他操作。比如解壓tar.gz文件。%prep主要與%setup –q命令配合使用,建議使用默認值即可。

%post指定rpm包安裝后執行的腳本。我們在安裝完畢rpm包后,執行軟件初始化的動作,就可以通過%post來達到目的。比如:apache在安裝后,將apachectl拷貝成httpd等操作。默認spec模版文件不存在此選項。

%preun指定rpm包卸載前執行的腳本,該選項主要用于軟件升級的時候會執行。默認spec模版文件不存在此選項。

%postun指定rpm包卸載后執行的腳本。默認spec模版文件不存在此選項。

2.7軟件變更日志

%changelog主要用于軟件的變更日志。該選項可有可無。

如果使用%changelog選項的話,一定要以*開頭,以- -結尾。時間格式為,如下:

* 星期 月 日 年 XXX

--

示例為:

* Tue Mar 03 2015 ilanni2.2.27

--

注意:星期和月一定要使用英文,并且是簡寫的,否則會報錯。如下:

clip_image011

三、httpd.spec文件示例

下面就以系統提供的spec文件為模版,把apache源碼包制作成rpm包。apache的spec文件如下:

Name: httpd

Version: 2.2.27

Release: 1%{?dist}

Summary: compiled from 2.2.27 by ilanni

Group: System Environment/Daemons

License: GPL

URL: http://www.ilanni.com

Source0: httpd-2.2.27.tar.gz

BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

BuildRequires: gcc, gcc-c++, openssl-devel

%description

Apache web server. Compiled from 2.2.27 by ilanni

%prep

%setup -q

%build

./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi --enable-ssl --enable-charset-lite --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot=/usr/local/httpd/htdocs

make %{?_smp_mflags}

%install

rm -rf %{buildroot}

make install DESTDIR=%{buildroot}

%clean

rm -rf %{buildroot}

%files

%defattr(-,root,root,-)

/usr/local/httpd/bin/*

/usr/local/httpd/build/*

/usr/local/httpd/cgi-bin/*

%config /usr/local/httpd/conf/*

/usr/local/httpd/error/*

/usr/local/httpd/htdocs/*

/usr/local/httpd/icons/*

/usr/local/httpd/include/*

/usr/local/httpd/lib/*

%dir /usr/local/httpd/logs

%doc /usr/local/httpd/man/*

%doc /usr/local/httpd/manual/*

/usr/local/httpd/modules/*

%post

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

sed -i '1a # chkconfig: 2345 85 15' /etc/init.d/httpd

sed -i '2a # description: apache web server' /etc/init.d/httpd

chkconfig --add httpd

%preun

/etc/init.d/httpd stop

chkconfig --del httpd

%changelog

* Tue Mar 3 2015 ilanni<ilanni@ilanni.com> 2.2.27

--

clip_image012

四、生成相關目錄

要生成rpm包的相關目錄,我們可以通過手工創建,也可以通過rpmbuild命令創建。如下:

rpmbuild httpd.spec

clip_image013

注意:在使用rpmbuild生成rpm包的相關目錄時會報錯,這個不需要去管它。

tree rpmbuild/

clip_image014

通過上圖,我們可以很明顯的看到rpmbulid命令已經生成相關的目錄。

每個目錄的作用,如下:

BUILD用于存放解壓后的文件。

BUILDROOT用安裝或編譯時使用的虛擬目錄。

RPMS用于存放由rpmbuild制作好的二進制包。

SOURCES用于存放源代碼、補丁、圖標等文件。

SPECS用于存放用于管理rpm制作進程的spec文件。

SRPMS用于存放由rpmbuild制作好的源碼包。

五、把文件拷貝到指定目錄

相關目錄創建完畢后,現在我們需要把相關apache的源碼文件以及spec文件復制指定的目錄。如下:

cp httpd-2.2.27.tar.gz rpmbuild/SOURCES/

cp httpd.spec rpmbuild/SPECS/

clip_image015

六、生成RPM

以上配置完畢后,我們現在就開始生成rpm包,使用rpmbuild命令。如下:

rpmbuild -ba rpmbuild/SPECS/httpd.spec

clip_image016

clip_image017

通過上圖,我們可以很明顯的看出rpm包已經制作成功。

新生成的rpm包存放在rpmbuild/RPMS/目錄下,而源碼rpm包則存放在rpmbuild/SRPMS/目錄下。

注意:rpmbuild –ba命令的意思是編譯后做成*.rpm包和src.rpm包。

七、測試生成RPM

rpm包制作完成后,我們來測試該rpm包。如下:

cp /home/ilanni/rpmbuild/RPMS/x86_64/httpd-2.2.27-1.el6.x86_64.rpm ./

rpm -ivh httpd-2.2.27-1.el6.x86_64.rpm

clip_image018

通過上圖,我們可以很明顯的看出,通過源碼制作的rpm已經正常安裝。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲一区二区三区| 少妇高潮久久久久久潘金莲| 性视频1819p久久| 亚洲片在线资源| 在线电影av不卡网址| 午夜精品一区二区三区av| 欧美黑人极品猛少妇色xxxxx| 亚洲小视频在线| 亚洲欧洲国产一区| 国产欧美精品va在线观看| 亚洲丁香久久久| 精品亚洲一区二区三区| 精品国产一区二区三区久久久狼| 久久久久成人精品| 热久久免费视频精品| 亚洲欧美国产精品| 在线观看精品自拍私拍| 国产成人精品久久亚洲高清不卡| 不卡av电影院| 青青在线视频一区二区三区| 日韩国产精品视频| 亚洲福利在线观看| 78m国产成人精品视频| 中文字幕亚洲二区| 亚洲3p在线观看| 欧美激情一二区| 欧美老女人性生活| 中文字幕欧美日韩| 成人亲热视频网站| 国产精品久久久久久久久久久久久| 国产精品福利在线| 精品久久久久久久久久久久久久| 精品久久久久久亚洲精品| 亚洲护士老师的毛茸茸最新章节| 国产精品久久视频| 国产精品流白浆视频| 欧美中文字幕视频| 欧美洲成人男女午夜视频| 青青久久av北条麻妃海外网| 日韩国产在线看| 欧美亚洲免费电影| 亚洲成人激情在线| 色综合久综合久久综合久鬼88| 欧美老少配视频| 欧美丰满老妇厨房牲生活| 久久久国产一区二区| 富二代精品短视频| 成人黄色免费片| 久久久影视精品| 日韩经典中文字幕在线观看| 日韩电影大片中文字幕| 久久亚洲国产成人| 国产成人精品视频在线| 亚洲人永久免费| 黑人巨大精品欧美一区二区| 91精品啪aⅴ在线观看国产| 亚洲性无码av在线| 日本在线观看天堂男亚洲| 亚洲福利视频在线| 亚洲天堂av高清| 国产精品久久久久久一区二区| 日韩在线视频线视频免费网站| 久久久精品欧美| 国模叶桐国产精品一区| 国产69精品久久久久9999| 精品国产91久久久久久老师| xvideos成人免费中文版| 狠狠色狠色综合曰曰| 日韩激情第一页| 91免费看视频.| 久久国产精品久久久| 中文字幕国产精品久久| 亚洲精品资源美女情侣酒店| 精品国产福利在线| www.欧美视频| 亚洲无限av看| 亚洲国产精品热久久| 欧美在线视频免费| 萌白酱国产一区二区| 国产精品看片资源| 欧美激情影音先锋| 久久久久久久亚洲精品| 98精品国产高清在线xxxx天堂| 日韩成人激情在线| 中文字幕亚洲无线码在线一区| 欧美在线一级视频| 亚洲欧洲免费视频| 国内精品伊人久久| 一区二区欧美激情| 亚洲国产天堂久久综合网| 亚洲福利视频在线| 亚洲精品日产aⅴ| 国产欧美日韩综合精品| 日韩成人免费视频| 欧美片一区二区三区| 欧美精品免费在线观看| 国产精品吹潮在线观看| 日韩av资源在线播放| 亚洲天堂免费观看| 成人伊人精品色xxxx视频| 国产啪精品视频| 91超碰caoporn97人人| 在线成人激情视频| 亚洲色图偷窥自拍| 欧美一乱一性一交一视频| 51视频国产精品一区二区| 欧美性视频网站| 欧美国产乱视频| 中文字幕日韩欧美在线| 亚洲综合日韩中文字幕v在线| 日韩成人xxxx| 欧美午夜视频在线观看| 久久久久久尹人网香蕉| 国产日本欧美一区| 在线观看国产欧美| 欧美视频在线观看 亚洲欧| 欧美性生交xxxxxdddd| 欧美成人剧情片在线观看| www.99久久热国产日韩欧美.com| 亚洲综合日韩在线| 欧美老肥婆性猛交视频| 亚洲精品久久久久久久久久久久| 国产精品视频白浆免费视频| 91精品国产91久久久久| 午夜免费在线观看精品视频| 亚洲国产精久久久久久久| 久久久久99精品久久久久| 亚洲国产日韩精品在线| 亚洲欧美激情在线视频| 色999日韩欧美国产| 国产成人亚洲综合91| 日韩高清免费在线| 成人免费xxxxx在线观看| 欧美日本中文字幕| 日韩在线视频免费观看| 在线播放国产一区中文字幕剧情欧美| 国产91精品在线播放| 国产999在线观看| 国产精品国产自产拍高清av水多| 国产精品日韩一区| 最新的欧美黄色| 日韩av在线网站| 欲色天天网综合久久| 久久在线观看视频| 欧美中文字幕视频在线观看| 这里只有视频精品| 欧美激情久久久久| 精品欧美激情精品一区| 在线看片第一页欧美| 亚洲欧洲一区二区三区在线观看| 国产精品久久婷婷六月丁香| 欧美激情性做爰免费视频| 大桥未久av一区二区三区| 粉嫩老牛aⅴ一区二区三区| 91精品啪aⅴ在线观看国产| 日韩一区二区av| 精品久久久91| 超碰91人人草人人干| 国产日韩欧美自拍| 久久久免费在线观看| 国产99久久精品一区二区| 久久天天躁狠狠躁夜夜爽蜜月| 韩国三级日本三级少妇99| 在线免费观看羞羞视频一区二区|