Welcome 微信登录

首页 / 操作系统 / Linux / yum仓库搭建之RPM包制作

 常见的软件安装方式有以下几种1.yum安装,可自动解决依赖,但不能自定义软件安装位置2.编译安装,可指定安装路径,指定装模块,但编译参数冗长,且耗时较长,不能解决依赖问题。3.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及gccyum install ruby-devel gcc2.安装fpm
gem install fpm3.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>&12.重新生成包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 resultsSaving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete5.客户端清空yum缓存# yum clean all
Loaded plugins: fastestmirror, security
Cleaning repos: oldboy
Cleaning up Everything
Cleaning up list of fastest mirrors6.查找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-scriptIs this ok [y/N]: yRunning 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/2Updated:
  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>&1cron任务已更新。下面关于RPM包制作相关的内容你可能也喜欢:CentOS 中如何快速定制二进制的内核 RPM 包  http://www.linuxidc.com/Linux/2015-07/120197.htmRPM包创建入门  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.htmLinux 下rpm安装后的目录结构和一些配置 http://www.linuxidc.com/Linux/2013-06/85761.htmrpm与yum的综合性介绍与示例演示 http://www.linuxidc.com/Linux/2013-05/84480.htmRedHat Linux---rpm 命令详解 http://www.linuxidc.com/Linux/2013-03/81971.htm使用FPM轻松制作RPM包 http://www.linuxidc.com/linux/2014-06/103019.htm本文永久更新链接地址