Centos下用tar源碼包製做rpm包

公司有需求要求加密redis,原本是有個配置文件選項requirepass 能夠設置密碼,可是公司以爲能夠經過修改配置文件使密碼失效,因而乎直接修改源碼(強制設置requirepass爲固定密碼),作成rpm包就很是安全了html

1.下載redis源碼包nginx

http://redis.googlecode.com/files/redis-2.6.14.tar.gzweb

2.修改源碼編譯redis

tar zxvf redis-2.6.14.tar.gzvim

cd redis-2.6.14安全

vim src/config.cide

把331行給刪除,移到else語句結束後,無論爲不爲空都設置requirepasspost

server.requirepass = zstrdup("123456");  #加到426行ui

保存退出,而後接下來編譯google

make

\cp src/redis-server /usr/local/bin/
\cp src/redis-cli /usr/local/bin/

3.製做rpm包

mv redis-2.6.14.tar.gz /usr/src/redhat/SOURCES

cd /usr/src/redhat/SPECS/

vim redis.spec   #% de會亂碼因此下面用空格隔開,注意刪除空格% description,% defattr(-,root,root)

Summary:the first rpm package
Name:redis
Version:2.6.14
Release:2
Vendor:zhangrenfang@gmail.com
License:Share
Group:Applications/Text
Source:redis-2.6.14.tar.gz
% description
my test redis crypto
%prep
tar -zxvf /usr/src/redhat/SOURCES/redis-2.6.14.tar.gz
%build
cd /usr/src/redhat/BUILD/redis-2.6.14
make
%clean
rm -rf /usr/src/redhat/BUILD/redis-2.6.14
%files
% defattr(-,root,root)
/usr/local/bin/redis-cli
/usr/local/bin/redis-server

[root@localhost SPECS]# rpmbuild -ba redis.spec

若運行沒有錯誤,則產生,/usr/src/redhat/SRPMS/redis-2.6.14-2.src.rpm和/usr/src/redhat/RPMS/x86_64/redis-2.6.14-2.x86_64.rpm

rpm -qpi redis-2.6.14-2.x86_64.rpm能夠查看到包的信息

Centos下用tar源碼包製做rpm包

relocations:若是非空,表示包能夠安裝到新的目錄。在安裝包的時候,使用--relocate=/usr/loca/=/home/cyx/ 這樣來修改包的安裝位置。

不過可能不能使用,由於包是二進制的,可能程序編譯的時候使用了絕對路徑。

rpm包製做由rpmbuild來生成。rpmbuild用到了幾個目錄:

BUILD  RPMS  SOURCES  SPECS  SRPMS

BUILD:build過程執行的目錄

RPMS:最後生成的RPM包的位置

SOURCES:源文件位置

SPECS:spec文件的位置,rpmbuild使用spec文件的描述信息來build包

SRPMS:源代碼rpm包的位置

 

spec文件是指導rpmbuild生成包的關鍵文件。放在SPECS目錄下面:

----------------------------------example------------------------------------------------------------------

 

[root@v092019 SPECS]# cat nginx-0.8.54.spec 

Name:nginx                                                                                                                包名

Summary:nginx-server!                                                                                              摘要

Version:0.8.54                                                                                                            版本

Release:1                                                                                                                   發行

Group:taobao.com                                                                                                      組織

License:GPL                                                                                                               許可

URL:http://www.nginx.com/                                                                                          官網

BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root                                   build的目錄,會在這裏build出二進制

Source:%{name}-%{version}.tar.gz                                                                             源碼文件的名稱,放在SOURCES目錄下 

Prefix:%{_prefix}                                                                                                          前綴,有這個值,包生成時候就有relocations。

Packager:nginx                                                                                                           包名稱

% description                                                                                                               下面是對包的描述

nginx-httpd-server        

%prep                                                                                                                          下面是準備工做

%setup -q                                                                                                                     這裏使用了內建命令,解開源碼包到BUILD目錄

%build                                                                                                                          開始創建包,對應於configure和make,在BUILD目錄

CFLAGS="-g"  ./configure  

make -j `cat /proc/cpuinfo | grep processor | wc -l`

%install                                                                                                                         安裝包到Buildroot

make DESTDIR=$RPM_BUILD_ROOT install 

%files                                                                                                                            最後,把文件打包進rpm包,這裏指定要打包進去的文件,權限和屬主,這裏的目錄是相對於Buildroot的目錄,可是要以'/'開頭。

% defattr(755,daemon,daemon)

/usr/local/%{name}

%pre                                                                                                                             在用rpm命令安裝包前執行這裏的動做

echo nginx,preinstall

%post                                                                                                                             在用rpm命令安裝完後執行這裏的動做

echo nginx,afterinstall,done

%preun                                                                                                                           在卸載前執行這裏的動做

echo nginx,uninstall

%postun                                                                                                                          在卸載後執行這裏的動做

echo nginx,uninstall,done

---------------------------------------------end-----------------------------------------------------------------


這樣咱們就能夠定製本身的rpm包了

參考連接:http://zhumeng8337797.blog.163.com/blog/static/100768914201110185456104/

相關文章
相關標籤/搜索