httpd2.4.27rpm包製作

來源:互聯網
上載者:User

標籤:eve   mod   esc   ice   erro   基礎   ssl   node   www.   

http2.4.27 rpm包製作
1.安裝rpm-build
yum -y install rpm-build
2.使用普通使用者建立spec規則檔案
su - lxh
vim httpd.spec

Name:httpd
Version:2.4.27
Release:1%{?dist}
Summary:compiled from 2.4.27 by lxh

Group:System Environment/Daemons
License:GPL
URL:http://www.lxh.com
Source0:httpd-2.4.27.tar.gz
Source1:httpd
Source2:httpd.init
BuildRoot:%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

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

%description
Apache web server. Compiled from 2.4.27 by lxh

%prep
%setup -q


%build
./configure --prefix=/usr/local/apache \
--bindir=/usr/sbin \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-expat=builtin \
--with-pcre=builtin \
--enable-ssl \
--enable-modules=all
make %{?_smp_mflags}


%install

%make_install


%clean
rm -rf %{buildroot}


%files
/usr/sbin/ab
/usr/sbin/apxs
/usr/sbin/dbmmanage
/usr/sbin/htdbm
/usr/sbin/htdigest
/usr/sbin/htpasswd
/usr/sbin/httxt2dbm
/usr/sbin/logresolve
%defattr(-,root,root,-)
/usr/local/apache/bin/*
/usr/local/apache/build/*
/usr/local/apache/cgi-bin/*
%config /usr/local/apache/conf/*
/usr/local/apache/error/*
/usr/local/apache/htdocs/*
/usr/local/apache/icons/*
/usr/local/apache/include/*
%dir /usr/local/apache/logs
%doc /usr/local/apache/man/*
%doc /usr/local/apache/manual/*
/usr/local/apache/modules/*
%post
cp /usr/local/apache/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 31 2017 lxh<[email protected]> 2.4.27
--

產生工作目錄
rpmbuild httpd.spec

drwxr-xr-x 3 lxh lxh 4096 8月 1 15:24 BUILD
drwxr-xr-x 2 lxh lxh 4096 8月 1 15:26 BUILDROOT
drwxr-xr-x 3 lxh lxh 4096 8月 1 14:18 RPMS
drwxr-xr-x 2 lxh lxh 4096 8月 1 14:01 SOURCES
drwxr-xr-x 2 lxh lxh 4096 8月 1 15:22 SPECS
drwxr-xr-x 2 lxh lxh 4096 8月 1 14:18 SRPMS
##############################################
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:httpd-2.4.27.tar.gz
Source1:httpd
Source2:httpd.init

注意:

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

--
##############################################
3.源碼包製作
這裡之所以解壓並重新歸檔壓縮,是因為httpd依賴於apr,在.spec中指定這個過程比較麻煩,所以就直接做到tar包裡
cd /usr/local/src
下載apr-1.5.2.tar.gz apr-util-1.5.4.tar.gz httpd-2.4.27.tar.gz
tar -zxvf apr-1.5.2.tar.gz
tar -zxvf apr-util-1.5.4.tar.gz
tar -zxvf httpd-2.4.27.tar.gz

mv apr-1.5.2 httpd-2.4.27/srclib/apr
mv apr-util-1.5.4 httpd-2.4.27/srclib/apr-util

tar cxvf httpd-2.4.27.tar.gz httpd-2.4.27/

mv httpd-2.4.27.tar.gz /home/lxh/rpmbuild/SOURCES/
mv httpd-2.4.27/build/rpm/httpd.init /home/lxh/rpmbuild/SOURCES/
chown -R lxh:lxh /home/lxh/rpmbuild/SOURCES/

su - lxh
vim /home/lxh/rpmbuild/SOURCES/httpd
HTTPD=/usr/local/apache/bin/httpd
PIDFILE=/usr/local/apache/logs/httpd.pid
這個是為了提供給啟動指令碼httpd的配置,請根據自己實際情況來,這裡我因為要把httpd安裝在/usr/loacl/apache/中所以這麼做
cd /home/lxh/
cp httpd.spec rpmbuild/SPECS/
rpmbuild -ba rpmbuild/SPECS/httpd.spec
4.測試
su - root
cd /home/lxh/rpmbuild/RPMS/x86_64
rpm -ivh httpd-2.2.27-1.el6.x86_64.rpm
[[email protected] x86_64]# rpm -ivh httpd-2.4.27-1.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:httpd ########################################### [100%]
service httpd start 正常
完成!
5.異常處理若出現
[[email protected] x86_64]# rpm -ivh httpd-2.4.27-1.el6.x86_64.rpm
error: Failed dependencies:
libexpat.so.0()(64bit) is needed by httpd-2.4.27-1.el6.x86_64
libpcre.so.1()(64bit) is needed by httpd-2.4.27-1.el6.x86_64
需要安裝相應依賴包:
glibc-2.17-105.el7.x86_64.rpm
glibc-common-2.17-105.el7.x86_64.rpm
glibc-devel-2.17-105.el7.x86_64.rpm
glibc-headers-2.17-105.el7.x86_64.rpm
glibc-static-2.17-105.el7.x86_64.rpm
glibc-utils-2.17-105.el7.x86_64.rpm
pcre-8.32-15.el7.x86_64.rpm
pcre-devel-8.32-15.el7.x86_64.rpm

rpm -ivh glibc-* --force --nodeps
rpm -ivh pcre-* --force --nodeps

 

httpd2.4.27rpm包製作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.