天天看點

yum倉庫搭建之RPM包制作

常見的軟體安裝方式有以下幾種

yum安裝,可自動解決依賴,但不能自定義軟體安裝位置

編譯安裝,可指定安裝路徑,指定裝子產品,但編譯參數冗長,且耗時較長,不能解決依賴問題。

rpm安裝,安裝速度較速,但不能自動解決依賴,尤其是遇到需要的依賴包較多時,特别費時。

本文主要介紹利用fpm工具制作個性化的rpm包,後期可放到yum倉庫中,直接用yum安裝。

【fpm介紹】

項目位址:https://github.com/jordansissel/fpm

作者把這個fpm稱作Effing Package Management,翻譯過來就是該死的包管理器,粗暴一點就是去他媽的包管理器。ubuntu及centos的包管理及安裝方式完全不同,要想同時掌握這兩種平台下的軟體包安裝方法是很困難的,為了不再遭受這痛苦,fpm便應運而生了。fpm是由jordansissel于2011年開發的一套打包工具,可快速度地将你安裝好的程式目錄或包打包為rpm及deb等結尾軟體包。與傳統的打包工具(rpmbuild、dh_make)相比,制作起來更加簡單、友善、快捷。

【fpm安裝】

1.安裝ruby及gcc

1

<code>yum </code><code>install</code> <code>ruby-devel gcc</code>

2.安裝fpm

<code>gem </code><code>install</code> <code>fpm</code>

3.fpm打包

文法格式

<code>fpm -s &lt;</code><code>source</code> <code>type</code><code>&gt; -t &lt;target </code><code>type</code><code>&gt; [options]</code>

其中源類型主要有:dir、gem、rpm、python等,目标類型主要有rpm,deb,puppet,solaris等。

-s指定輸入的包類型

-t指定輸出包的類型

-n, --name指定輸出的包名

-v, --version指定版本号,預設為1.0

-d, --depends指定依賴包,可重複多次出現,通常以"-d 'name' or -d 'name &gt; version'"的形式展現。

-f, --force強制輸出,會覆寫掉舊包

-p, --package OUTPUT 指定輸出目錄

【打包執行個體】

定制cron初始化rpm包

2

3

4

5

6

<code>$fpm -s </code><code>dir</code> <code>-t rpm -a noarch -p </code><code>/root/</code> <code>-n </code><code>cron</code><code>-init-script -</code><code>v</code> <code>1.0 </code><code>/var/spool/cron/</code>

<code>no value </code><code>for</code> <code>epoch is </code><code>set</code><code>, defaulting to nil {:level=&gt;:warn}</code>

<code>Created package {:path=&gt;</code><code>"/root/cron-init-script-1.0-1.noarch.rpm"</code><code>}</code>

<code>$ll </code><code>/root/cron-init-script-1</code><code>.0-1.noarch.rpm </code>

<code>-rw-r--r-- 1 root root 1693 Nov  2 22:24 </code><code>/root/cron-init-script-1</code><code>.0-1.noarch.rpm</code>

在用戶端yum安裝cron-init-script

<a href="http://s3.51cto.com/wyfs02/M00/75/5D/wKiom1Y3dnfx97VcAAIJqYhmhwU164.jpg" target="_blank"></a>

【更新RPM包】

編輯cron任務

$crontab -l

*/5 * * * * /usr/sbin/ntpdate pool.ntp.org &gt;/dev/null 2&gt;&amp;1

*/10 * * * * /usr/sbin/ntpdate 1.pool.ntp.org &gt;/dev/null 2&gt;&amp;1

重新生成包

<a href="http://s3.51cto.com/wyfs02/M01/75/5D/wKiom1Y3e0azHrQbAAIknCVviaU858.jpg" target="_blank"></a>

傳到yum倉庫

$cp cron-init-script-1.1-1.noarch.rpm /application/yum/centos6.6/x86_64/

更新yum倉庫索引

$createrepo --update /application/yum/centos6.6/x86_64/

Spawning worker 0 with 1 pkgs

Workers Finished

Gathering worker results

Saving Primary metadata

Saving file lists metadata

Saving other metadata

Generating sqlite DBs

Sqlite DBs complete

用戶端清空yum緩存

# yum clean all

Loaded plugins: fastestmirror, security

Cleaning repos: oldboy

Cleaning up Everything

Cleaning up list of fastest mirrors

查找cron包

# yum list |grep cron-init

cron-init-script.noarch 1.0-1           @oldboy         #前面的@表示已經安裝過,保留下來的資訊 

cron-init-script.noarch 1.1-1           oldboy  

更新cron包

# crontab -l

# yum update cron-init-script

Is this ok [y/N]: y

Running Transaction

  Updating   : cron-init-script-1.1-1.noarch                                             1/2 

  Cleanup    : cron-init-script-1.0-1.noarch                                             2/2 

  Verifying  : cron-init-script-1.1-1.noarch                                             1/2 

  Verifying  : cron-init-script-1.0-1.noarch                                             2/2 

Updated:

  cron-init-script.noarch 0:1.1-1                                                            

Complete!

cron任務已更新。

本文轉自 xoyabc 51CTO部落格,原文連結:http://blog.51cto.com/xoyabc/1708647,如需轉載請自行聯系原作者

繼續閱讀