rpm打包及yum仓库搭建应用

rpm打包及yum仓库搭建应用

  • 安装软件的方式

 

  • 编译安装软件,优点是可以定制化安装目录、按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长。
  • yum安装软件,优点是全自动化安装,不需要为依赖问题发愁了,缺点是自主性太差,软件的功存放位置都已经固定好了,不易变更
  • 编译源码,根据自己的需求做成定制RPM包->搭建yum仓库->yum安装。结合前两者的优点,暂未发现什么缺点。可能的缺点就是RPM包的通用性差,可一般人不会定制RPM包。
  • 二进制包安装,解压就能用(绿色软件,无需安装),简单,快,不好定制

面向 Linux 程序员和系统管理员的技术资源https://www.ibm.com/developerworks/cn/linux/

RPM 打包技术与典型 SPEC 文件分析https://www.ibm.com/developerworks/cn/linux/l-rpm/

  • yum安装是如何解决依赖问题的

在使用yum安装软件A时,yum会在下载完A的rpm包后,对该rpm包进行检查(rpm包中会给出安装该rpm包所依赖的基础库和软件)。如果检查出A的安装还要依赖软件B,那么此时yum就会自动下载并安装B。B安装完毕后,就会继续安装A。如果是内网yum源的话,我们只需要把B放在内网yum源即可。如果检查出,A的安装不需要其他软件的支持,那么yum会自动安装A。因此使用fpm打包使用-d参数添加依赖关系

  • 使用FPM制作RPM包

 

  • 安装FPM

yum -y install ruby rubygems ruby-devel    # 安装ruby,fpm是ruby写的,因此系统环境需要ruby

gem source list             #查看当前源

gem sources -a https://ruby.taobao.org/     #添加淘宝Ruby仓库,或者

gem sources -a http://mirrors.aliyun.com/rubygems/     # 添加阿里Ruby仓库

gem sources –remove http://rubygems.org/   # 移除原生的Ruby仓库

gem install fpm                             # 安装fpm工具,有可能会出现错误,可以如下操作

gem install fpm -v 1.4.0                    #指定版本

sed -i ‘s#keepcache=0#keepcache=1#g’ /etc/yum.conf    #开启yum缓存

  • 快速安装命令

yum -y install ruby rubygems ruby-devel

gem sources -a https://ruby.taobao.org/

gem sources –remove http://rubygems.org/

gem install fpm -v 1.4.0

  • FPM常用参数

-s:指定源类型

-t:指定目标类型,即想要制作为什么包

-n:指定包的名字

-v:指定包的版本号

-C:指定打包的相对路径

-d:指定依赖于哪些包

-f:第二次包时目录下如果有同名安装包存在,则覆盖它

-p:输出的安装包的目录,不想放在当前目录下就需要指定

–post-install:软件包安装完成之后所要运行的脚本;同–offer-install

–pre-install:软件包安装完成之前所要运行的脚本;同–before-install

–post-uninstall:软件包卸载完成之后所要运行的脚本;同–offer-remove

–pre-uninstall:软件包卸载完成之前所要运行的脚本;同–before-remove

  • 支持的源类型包

dir: 将目录打包成所需要的类型,可以用于源码编译安装的软件包

rpm: 对rpm进行转换

gem: 对rubygem包进行转换

python: 将Python模块打包成相应的类型

  • 支持的目标类型包

rpm: 转换为rpm包

deb: 转换为deb包

solaris: 转换为solaris包

puppet: 转换为puppet包

  • 使用fpm打包目录

 

fpm -s dir -t rpm -n mysql -v 5.5.32 /application/mysql-5.5.32    #打包实例

注意:目录不能使用软连接,有可能会出错

rpm -qpl mysql-5.5.32-1.x86_64.rpm

由于上面实例没有解决依赖等问题,仅仅是打包,所以建议别使用,改进方法打包nginx

[root@localhost ~]# cd /server/scripts/

[root@localhost scripts]# vi nginx.rpm.sh

#!/bin/bash

useradd -M -s /sbin/nologin nginx

ln -s /application/nginx-1.6.3 /application/nginx

保存脚本,打包命令如下

fpm -s dir -t rpm -n nginx -v 1.6.2 -d ‘pcre-devel,openssl-devel’ –post-install /server/scripts/nginx.rpm.sh /application/nginx-1.6.3/

scp nginx-1.6.2-1.x86_64.rpm root@192.168.80.103:~        #将打包的rpm软件包打包到远程主机

远程主机操作

cd

rpm -ivh nginx-1.6.2-1.x86_64.rpm                #使用此命令安装会有依赖问题

yum -y localinstall nginx-1.6.2-1.x86_64.rpm     #自动通过yum源安转依赖

/application/nginx/sbin/nginx  -t                #启动nginx

curl -I 192.168.80.103

  • 创建yum仓库

 

YUM主要用于自动安装、升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系。要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯称为yum源。网络上有大量的yum源,但由于受到网络环境的限制,导致软件安装耗时过长甚至失败。特别是当有大量服务器大量软件包需要安装时,缓慢的进度条令人难以忍受。因此我们在优化系统时,都会更换国内的源。相比较而言,本地YUM源服务器最大优点是局域网的快速网络连接和稳定性。有了局域网中的YUM源服务器,即便在internet连接中断的情况下,也不会影响其他YUM客户端的软件安装和升级。

mkdir /application/yum/centos6.6/x86_64 -p             #创建yum仓库目录

cd /application/yum/centos6.6/x86_64

cp ~/nginx-1.6.2-1.x86_64.rpm .                  #拷贝fpm制作的软件包

yumdownloader openssl-devel pcre-devel           #下载依赖

yum install createrepo -y                        #安装createrepo软件

初始化repodata索引文件

createrepo -pdo /application/yum/centos6.6/x86_64/ /application/yum/centos6.6/x86_64/

提供yum服务

可以用apache或nginx提供web服务,但用python的http模块更简单,适用于内网环境

python -m SimpleHTTPServer 80 &>/dev/null &     #使用Python将当前目录设置为站点提供web服务

jobs                       #查看后台进程

kill %1                    #终止后台进程

添加新的rpm包

createrepo –update /application/yum/centos6.6/x86_64/    #每修改一次就更新下

  • 客户端配置

 

cd /etc/yum.repos.d/

[root@localhost yum.repos.d]vi oldboy.repo

[oldboy]

name=Server

baseurl=http://192.168.80.103

enable=1

gpgcheck=1

指定使用local库

yum –enablerepo=oldboy –disablerepo=base,extras,updates list

yum install -y nginx            #使用本地库安装nginx

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇