大兵是
一个想全能的运维

定制rpm安装包与本地的yum仓库

软件的安装方式有yum安装和编译安装,前者简单,但是不能按照自己的要求安装,后者可以按照自己的想法来安装,但是安装参数复杂,所以就产生了定制rpm包的方法,一次定制终身受用。

这次介绍的是fpm打包命令。fpm是需要ruby库的。

#自带的国外的源不能使用,替换国内的源。替换说明:http://gems.ruby-china.org/
#gem install fpm
#这里提示一个rpm包,只需要yum安装即可,推荐大家使用此方法。
#链接:http://pan.baidu.com/s/1bPsWdo 密码:vq3m
yum localhost fpm-1.6.3-1.x86_64.rpm #安装上面下载的rpm包

一、定制rpm包

1、环境

[root@yum ~]# cat /etc/redhat-release 
CentOS release 6.8 (Final)
[root@yum ~]# uname -r
2.6.32-642.el6.x86_64

2、fpm命令介绍

fpm -h #查看命令的帮助,下面对常用的参数进行简单的说明
-s:指定源类型
-t:指定目标类型
-n:指定名字
-v:指定版本号
-C:指定打包的相对路径
-d:指定依赖于哪些包
-f:第二次打包时目录下如果有同名安装包存在,则覆盖它
-p:输出的安装包的目录,不想放在当前目录下就需要指定
--post-install  软件包安装完成之后所要运行的脚本;同--after-install
--pre-install  软件包安装完成之前所要运行的脚本;同--before-install

3、准备

sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf #存在平时下载的安装包。
#yum安装的默认下载目录在/var/cache下
find /var/cache/ -type f -name '*rpm'|xargs rm -f #清空下面的rpm方便测试

4、这里以nginx-1.8.1进行说明

编译安装nginx-1.8.1成功后,这里就不对编译进行说明了,请大家自行编译,下面使用fpm命令对其进行打包。

fpm -s dir -t rpm -n nginx -v 1.8.1 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.8.1/
#/application/nginx-1.8.1/是nginx的安装目录
#/server/scripts/脚本的存放目录
[root@yum ~]# cat /server/scripts/nginx_rpm.sh 
#!/bin/bash
useradd nginx -M -s /sbin/nologin #nginx用户
ln -s /application/nginx-1.8.1/ /application/nginx #软链接方便访问及更换版本

5、使用nginx提供web服务,将所有的包都放入web站点下

mkdir -p /application/nginx/html/yumcache/
find /var/cache/ -name "*rpm"|xargs cp -t /application/nginx/html/yumcache/ 复制下载的包到web站点下
#然后将制作的rpm包也放入web站点下,同时将这些包下载下来保存。

6、安装

#后面哪台服务器需要安装的时候,将这些包拷贝过去,yum安装即可。
yum localinstall  *.rpm
#但是我们要方便使用,将这些包建立成yum仓库。

二、yum仓库

7、启动nginx与创建yum仓库目录

createrepo -pdo /application/nginx/html/yumcache/ /application/nginx/html/yumcache/ #初始化yum仓库
#在nginx的配置文件  
[root@yum /]# cd /application/nginx/conf/
[root@yun conf]# vim nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html/yumcache; #yum仓库目录
            autoindex on; #开启目录
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
[root@yum conf]# /application/nginx/sbin/nginx -t #检查语法
nginx: the configuration file /application/nginx-1.8.1/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.8.1/conf/nginx.conf test is successful
[root@yum conf]# /application/nginx/sbin/nginx #启动
#访问ip可以查看yum仓库内容,下面会多个一个repodata/目录,是createrepo生成的。
#这是一个简单的yum仓库就搭建完成了,但是现在只有nginx的功能,以后可以增加更多的内容,放进来目录即可。
[root@yum conf]# createrepo --update/application/nginx/html/yumcache/ #每次增加仓库内容都要执行执行这句来更新仓库。

8、客户端使用刚才新建的yum仓库

新开一台虚拟机测试。

#配置本地的yum源。
[root@yum_test ~]# cd /etc/yum.repos.d/
[root@yum_test yum.repos.d]# mkdir bak
[root@yum_test yum.repos.d]# mv *repo bak/ #移开原有的源
[root@yum_test yum.repos.d]# vim myyum.repo
[myyum] #仓库名字
name=Server
baseurl=http://10.0.0.111 #yum仓库的ip
enabled=1 #
gpgcheck=0 #检查
[root@yum_test yum.repos.d]# yum clean all # 清空本机已有yum缓存
[root@yum_test yum.repos.d]# yum list  # 列表显示yum仓库

9、安装ngxinx

[root@yum_test yum.repos.d]# yum install nginx -y #安装nginx
#定制的时候最好起名和系统自带的不同,以便区分,如nginx_bigd,以后安装安装nginx_bigd即可。

10、错误排查

Error: Package: nginx (myyum)
           Requires: libxslt-develpcre
#在提示类似错误的时候,是缺少某个依赖包,下来放到yum仓库即可。
#仓库执行update的命令;客户端执行yum clean all
#如果确认仓库有包,但是客户端没有,排查思路
#1、yum仓库createrepo --update /application/nginx/html/myyum/
#2、客户端,yum clean all;
#3、如何还不可以,服务端删除生成的repodata目录,重新createrepo -pdo /application/nginx/html/yumcache/ /application/nginx/html/yumcache/,然后执行第二步;

11、rpm的常用命令

rpm -qpi your.rpm #查看rpm包信息
rpm -qpl your.rpm #查看rpm包内容
rpm -qpR your.rpm #查看rpm包的依赖
rpm -qp --scripts your.rpm #查看rpm包要执行的脚本,存的不是文件了。
rpm -ivh your.rpm #安装rpm包

打赏

未经允许不得转载: » 定制rpm安装包与本地的yum仓库

分享到:更多 ()

评论 1

  • 昵称 (必填)
  1. #1

    真厉害

    2年前 (2017-03-08)回复