首頁 > 軟體

yum倉庫搭建之RPM包製作

2020-06-16 17:50:12

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

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

2.編譯安裝,可指定安裝路徑,指定裝模組,但編譯引數冗長,且耗時較長,不能解決依賴問題。

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

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

【fpm介紹】

專案地址:https://github.com/jordansissel/fpm

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

【fpm安裝】

1.安裝ruby及gcc

yum install ruby-devel gcc

2.安裝fpm
gem install fpm

3.fpm打包

語法格式

fpm -s <source type> -t <target type> [options]

其中源型別主要有:dir、gem、rpm、Python等,目標型別主要有rpm,deb,puppet,solaris等。

-s指定輸入的包型別

-t指定輸出包的型別

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

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

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

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

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

【打包範例】

客製化cron初始化rpm包
$fpm -s dir -t rpm -a noarch -p /root/ -n cron-init-script -v 1.0 /var/spool/cron/
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"/root/cron-init-script-1.0-1.noarch.rpm"}
$ll /root/cron-init-script-1.0-1.noarch.rpm
-rw-r--r-- 1 root root 1693 Nov  2 22:24 /root/cron-init-script-1.0-1.noarch.rpm

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

【升級RPM包】

1.編輯cron任務

$crontab -l
*/5 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1
*/10 * * * * /usr/sbin/ntpdate 1.pool.ntp.org >/dev/null 2>&1

2.重新生成包

3.傳到yum倉庫

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

4.更新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

5.用戶端清空yum快取

# yum clean all
Loaded plugins: fastestmirror, security
Cleaning repos: oldboy
Cleaning up Everything
Cleaning up list of fastest mirrors

6.查詢cron包

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

7.更新cron包

# crontab -l
*/5 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1

# 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!

# crontab -l
*/5 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1
*/10 * * * * /usr/sbin/ntpdate 1.pool.ntp.org >/dev/null 2>&1

cron任務已更新。

下面關於RPM包製作相關的內容你可能也喜歡

CentOS 中如何快速客製化二進位制的核心 RPM 包  http://www.linuxidc.com/Linux/2015-07/120197.htm

RPM包建立入門  http://www.linuxidc.com/Linux/2015-02/113559.htm

如何在Linux中建立RPM包?  http://www.linuxidc.com/Linux/2012-05/60278.htm

製作自己的rpm包 http://www.linuxidc.com/Linux/2013-06/86435.htm

Linux 下rpm安裝後的目錄結構和一些設定 http://www.linuxidc.com/Linux/2013-06/85761.htm

rpm與yum的綜合性介紹與範例演示 http://www.linuxidc.com/Linux/2013-05/84480.htm

RedHat Linux---rpm 命令詳解 http://www.linuxidc.com/Linux/2013-03/81971.htm

使用FPM輕鬆製作RPM包 http://www.linuxidc.com/linux/2014-06/103019.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-11/124856.htm


IT145.com E-mail:sddin#qq.com