变态重口极致另类在线-波多久久夜色精品国产-波多野结衣在线观看一区-波多野结衣在线观看一区二区-污污的网站免费阅读-污污视频网址

當前位置: 首頁IT技術 → 制作RPM安裝包分解教程

制作RPM安裝包分解教程

更多

我們在企業中有的軟件基本都是編譯的,我們每次安裝都得編譯真的是很煩唉,那怎么辦呢?那就根據我們的需求制作RPM安裝包吧。先來說說基本布驟:

1.Planning what you want             計劃做什么rpm包。軟件的?庫的? 

2.Gathering the software to package  收集原材料,即收集源碼包 

3.Patch the software as need         如果需要打補丁,收集補丁文件。此布驟不是必須 

4.Outling any dependenies            確定依賴關系包 

------------------  上述動作可由我們手動編譯一次軟件來確定  ------------------- 

5.Building RPMs                      開始動手制作RPM包 

    5.1 Set up the directory stucture 設定好目錄結構,我們在這些目錄中制作我們的RPM包,我們需要下列目錄 

        BUILD   源代碼解壓后的存放目錄 

        RPMS    制作完成后的RPM包存放目錄,里面有與平臺相關的子目錄 

        SOURCES 收集的源材料,補丁的存放位置 

        SPECS   SPEC文件存放目錄 

        SRMPS   存放SRMPS生成的目錄 

    5.2 Place the Sources in the right directory   把源材料放到正確的位置 

    5.3 Create a spec file that tell rpmbuild command what to do 創建spec文件,這是綱領文件,rpmbuild命令根據spec文件來制作合適的rpm包 

    5.4 Build the source and binary RPMS 制作src或二進制rpm包 

6.Test RPMS 測試制作的PRM包 

7.Add signature for RPM  為RPM包簽名 

我還是用連貫的話為大家敘述一遍吧,我們首先確實我們要為什么做rpm包,通常我們是為一些軟件,比如httpd,nginx等,然后去收集這些軟件包的源代碼,如果有需要的話也收集這些補丁文件,手動編譯安裝一下這個軟件(當然如果是不需要編譯的就不用演練了),確定依賴的軟件包,并記錄下來,下面開始準備制作tengine的PRM包吧:

1.建立一個普通用戶,有普通用戶來制作rpm,用root的可能會因為代碼問題導致毀滅的后果

useradd ibuler 

su - ibuler 

2.確定我們在哪個目錄下制作RPM,通常這個目錄我們topdir,這個需要在宏配置文件中指定,這個配置文件稱為macrofiles,它們通常為 /usr/lib/rpm/macros:/usr/lib/rpm/macros.*:~/.rpmmacros,這個在rhel 5.8中可以通過rpmbuild --showrc | grep macrofiles  查看,6.3的我使用這個找不到,但使用是一樣的。你可以通過rpmbuild --showrc | grep topdir 查看你系統默認的工作車間 

rpmbuild --showrc | grep topdir 

-14: _builddir  %{_topdir}/BUILD 

-14: _buildrootdir  %{_topdir}/BUILDROOT 

-14: _rpmdir    %{_topdir}/RPMS 

-14: _sourcedir %{_topdir}/SOURCES 

-14: _specdir   %{_topdir}/SPECS 

-14: _srcrpmdir %{_topdir}/SRPMS 

-14: _topdir    %{getenv:HOME}/rpmbuild 

我們還是自定義工作目錄(或車間)吧

vi ~/.rpmmacros 

%_topdir        /home/ibuler/rpmbuild    ##目錄可以自定義 

mkdir ~/rpmbuild  

3.在topdir下建立需要的目錄

cd ~/rpmbuild  

mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} 

4.把收集的源碼放到SOURCES下

cp /tmp/tengine-1.4.2.tar.gz SOURCES  ##事先放好的

5.在SPECS下建立重要的spec文件

cd SPECS 

vi tengine.spec          ##內容見后講解,rhel6.3會自動生成模板 

6.用rpmbuild命令制作rpm包,rpmbuild命令會根據spec文件來生成rpm包 

rpmbuild  

-ba 既生成src.rpm又生成二進制rpm 

-bs 只生成src的rpm 

-bb 只生二進制的rpm 

-bp 執行到pre 

-bc 執行到 build段 

-bi 執行install段 

-bl 檢測有文件沒包含 

我們可以一步步試,先rpmbuild -bp ,再-bc 再-bi 如果沒問題,rpmbuild -ba 生成src包與二進制包吧

7.安裝測試有沒有問題,能否正常安裝運行,能否正常升級,卸載有沒有問題

root用戶測試安裝:

cd /tmp

cp /home/ibuler/rpmbuild/RPMS/x86_64/tengine-1.4.2-1.el6.x86_64.rpm /tmp  

rpm -ivh tengine-1.4.2-1.el6.x86_64.rpm  ##測試安裝 

rpm -e tengine                           ##測試卸載,如果版本號比原來的高,升級測試 

8.如果沒問題為rpm包簽名吧,防止有人惡意更改    ##這個先不寫了,有點晚了,以后補上

到此整個流程完畢。下面來說說其中最最重要的spec的格式,先說最簡單的,最容易實現的

vi tengine.spec 

### 0.define section               #自定義宏段,這個不是必須的 

### %define nginx_user nginx       #這是我們自定義了一個宏,名字為nginx_user值為nginx,%{nginx_user}引用 

### 1.The introduction section      #介紹區域段 

Name:           tengine            #名字為tar包的名字 

Version:        1.4.2              #版本號,一定要與tar包的一致哦 

Release:        1%{?dist}          #釋出號,也就是第幾次制作rpm 

Summary:        tengine from TaoBao  #軟件包簡介,最好不要超過50字符 

Group:          System Environment/Daemons  #組名,可以通過less /usr/share/doc/rpm-4.8.0/GROUPS 選擇合適組 

License:        GPLv2                       #許可,GPL還是BSD等  

URL:            http://laoguang.blog.51cto.com   #可以寫一個網址 

Packager:       Laoguang <ibuler@qq.com> 

Vendor:         TaoBao.com 

Source0:        %{name}-%{version}.tar.gz   

#定義用到的source,也就是你收集的,可以用宏來表示,也可以直接寫名字,上面定義的內容都可以像上面那樣引用 

#patch0:            a.patch                 #如果需要補丁,依次寫 

BuildRoot:      %_topdir/BUILDROOT         

#這個是軟件make install 的測試安裝目錄,也就是測試中的根,我們不用默認的,我們自定義,

#我們可以來觀察生成了哪此文件,方便寫file區域 

BuildRequires:  gcc,make                           #制作過程中用到的軟件包 

Requires:       pcre,pcre-devel,openssl,chkconfig  #軟件運行需要的軟件包,也可以指定最低版本如 bash >= 1.1.1 

%description                                       #軟件包描述,盡情的寫吧 

It is a Nginx from Taobao.                         #描述內容 

###  2.The Prep section 準備階段,主要目的解壓source并cd進去 

%prep                                              #這個宏開始 

%setup -q                                          #這個宏的作用靜默模式解壓并cd 

# patch0 -p1                                       #如果需要在這打補丁,依次寫 

###  3.The Build Section 編譯制作階段,主要目的就是編譯 

%build 

./configure \                                      #./configure 也可以用%configure來替換 

  --prefix=/usr \                                  #下面的我想大家都很熟悉 

  --sbin-path=/usr/sbin/nginx \ 

  --conf-path=/etc/nginx/nginx.conf \ 

  --error-log-path=/var/log/nginx/error.log \ 

  --http-log-path=/var/log/nginx/access.log \ 

  --pid-path=/var/run/nginx/nginx.pid  \ 

  --lock-path=/var/lock/nginx.lock \ 

  --user=nginx \ 

  --group=nginx \ 

  --with-http_ssl_module \ 

  --with-http_flv_module \ 

  --with-http_stub_status_module \ 

  --with-http_gzip_static_module \ 

  --http-client-body-temp-path=/var/tmp/nginx/client/ \ 

  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \ 

  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ 

  --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ 

  --http-scgi-temp-path=/var/tmp/nginx/scgi \ 

  --with-pcre 

make %{?_smp_mflags}          #make后面的意思是:如果就多處理器的話make時并行編譯 

###  4.Install section  安裝階段 

%install                                

rm -rf %{buildroot}                #先刪除原來的安裝的,如果你不是第一次安裝的話 

make install DESTDIR=%{buildroot} 

#DESTDIR指定安裝的目錄,而不是真實的安裝目錄,%{buildroot}你應該知道是指的什么了 

###  4.1 scripts section #沒必要可以不寫 

%pre        #rpm安裝前制行的腳本 

if [ $1 == 1 ];then    #$1==1 代表的是第一次安裝,2代表是升級,0代表是卸載 

        /usr/sbin/useradd -r nginx 2> /dev/null 

fi 

%post       #安裝后執行的腳本 

%preun      #卸載前執行的腳本 

if [ $1 == 0 ];then 

        /usr/sbin/userdel -r nginx 2> /dev/null 

fi 

%postun     #卸載后執行的腳本 

###  5.clean section 清理段,刪除buildroot 

%clean 

rm -rf %{buildroot} 

###  6.file section 要包含的文件 

%files  

%defattr (-,root,root,0755)   #設定默認權限,如果下面沒有指定權限,則繼承默認 

/etc/           #下面的內容要根據你在%{rootbuild}下生成的來寫,下面的辦法最簡單,后面說仔細用法      

/usr/ 

/var/ 

###  7.chagelog section  改變日志段 

%changelog 

*  Fri Dec 29 2012 laoguang <ibuler@qq.com> - 1.0.14-1 

- Initial version 

到此一個tengie的rmp制作好了,抽空繼續,現在困了。睡覺去了。

熱門評論
最新評論
第 1 樓 北京開心網 網友 客人 發表于: 2013/11/27 0:08:36
hhjhjv

支持( 0 ) 蓋樓(回復)

昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數: 0/500 (您的評論需要經過審核才能顯示)
主站蜘蛛池模板: 天天久久 | 成人a视频片在线观看免费 成人a视频高清在线观看 | 日韩精品免费观看 | 手机看片高清国产日韩片 | 欧美三级中文字幕hd | 亚洲一区二区三区欧美 | 欧美在线视频一区在线观看 | 国产精品入口麻豆高清在线 | 一级做a爱过程免费视频韩国 | 亚洲日本va中文字幕久久 | 日日碰狠狠添天天爽对白 | 在线观看国产免费高清不卡 | 99在线视频免费 | 欧美精品一二三区 | 日本羞羞无遮挡免费动漫 | 香蕉久久av一区二区三区 | 欧美成人免费草草影院视频 | 图片专区亚洲色图 | 色噜噜狠狠狠狠色综合久不 | 最近的2019免费中文字幕 | 欧美乱理伦另类视频 | 欧美成人免费午夜全 | 国产91激情对白露脸全程 | 日韩欧美一区二区久久黑人 | 国产乱插 | 日本 欧美 在线 | 韩国午夜tv免费影院 | 成人啪精品视频免费网站 | 色综合综合 | 久久精品免观看国产成人 | 精品999| 最近最新的日本免费 | 欧美午夜视频在线观看 | 在线欧美69v免费观看视频 | 先锋资源av | 国产成人夜间影院在线观看 | 成年人黄视频大全 | 亚洲国产一成人久久精品 | 免费黄色片网站 | 黄色一级视频免费观看 | 一 级 黄 色蝶 片 |