定制RPM包

根据自己需求编译软件--->定制rpm包---->搭建内网yum仓库---->yum安装

打包工具FPM打包工具

镜像修改成阿里云

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
FPM是ruby写的,环境需要ruby并且版本要大于1.8.5
yum install -y ruby rubygems ruby-devel

添加阿里云的rubygems仓库,外国的慢

gem sources -a http://mirrors.aliyun.com/rubygems/

 

移除原生的ruby仓库

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

 

安装fpm

gem install fpm -v 1.3.3

 

指定安装fpm 1.3.3版本的软件,fpm这个工具升级频率,升级后就不能用

(如果这里报错)

gem install fpm -v 1.3.3 
ERROR: Error installing fpm:
ffi requires Ruby version >= 1.9.

 

解决办法就是升级ruby(2.0以上版本也适用)

安装RVM

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB 
curl -sSL https://get.rvm.io | bash -s stable
find / -name rvm -print
/usr/local/rvm
     /usr/local/rvm/src/rvm
     /usr/local/rvm/src/rvm/bin/rvm
     /usr/local/rvm/src/rvm/lib/rvm
     /usr/local/rvm/src/rvm/scripts/rvm
     /usr/local/rvm/bin/rvm
     /usr/local/rvm/lib/rvm
     /usr/local/rvm/scripts/rvm

source /usr/local/rvm/scripts/rvm
查看rvm库中已知的ruby版本
rvm list known
安装一个ruby版本
rvm install 1.9.3
使用一个ruby版本:
rvm use 1.9.3
设置默认版本
rvm use 1.9.3 --default
查看ruby版本
ruby --version

 

 fpm参数简介(fpm --help)

-s   指定源类型

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

-n  指定包的名字

-v  指定报的版本号

-C 指定打包的相对路径

-d 指定依赖于那些包

-f 第二次打包时目录下如果有相同名安装保存在,覆盖

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

--description  描述

--post-install  软件包安装完成之后所需要运行的脚本,同--after-install

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

--post-uninstall 软件包卸载完成之后所需要运行的脚本,同--after-remove

--pre-uninstall  软件包卸载完成之前所需要运行的脚本,同--befort-remove

 

实战定制nginx的RPM包

先检查自己selinux关闭,iptables关闭

getenforce
Disabled

 /etc/init.d/iptables stop

 

准备好nginx安装包,放在/application/tools下面

mkdir /application/tools -p

上传nginx.1.6.3.tar.gz

开启yum缓冲

vim /etc/yum.conf 

keepcache=1

缓存地址/var/cache/yum/......

如果使用的是虚拟机,就做个镜像,如果使用KVM也做一个镜像吧

先安装nginx的依赖包(包多包少,看自己服务器的配置了)

yum install pcre-devel openssl-devel -y

cd /var/cache/yum/x86_64/6/base/packages

ls

openssl-1.0.1e-57.el6.x86_64.rpm

pcre-devel-7.8-7.el6.x86_64.rpm

openssl-devel-1.0.1e-57.el6.x86_64.rpm

拷贝走

find /var/cache -type f -name "*.rpm"|xargs cp -t /tmp/

将这些包打包

tar zcvf nginx_yum.tar.gz *.rpm

下载到本地或者推送到别的服务器

编译安装nginx

cd /application/tools/

useradd nginx -M -s /sbin/nologin 

tar xf nginx-1.6.3.tar.gz

cd nginx-1.6.3

 ./configure --prefix=/application/nginx-1.6.3 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module

make && make install

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

 

编写脚本

mkdir /server/scripts/ -p

cd /server/scripts/

vim nginx_rpm.sh

#!/bin/sh
useradd nginx -M -s /sbin/nologin
ln -s /application/nginx-1.6.3/ /application/nginx

 

打包

 

安装遇到问题:(一定要使用绝对路径)

 fpm -s dir  -t rpm -n nginx -v 1.6.3 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.6.3/

1
2
3
4
5
6
7
1.Need executable 'rpmbuild' to convert dir to rpm {:level=>:error}
解决方法:
yum install -y rpm-build
 
2.如果里面有gcc make的错误.
解决方法:
yum install -y gcc  

然后把包推送走,或者下载到本地

PRM包命令讲解

q query

p packge

i info

l list

#查看rpm包信息

rpm -qpi 

#查看rpm包内容

rpm -qpl 

#查看rpm包的依赖

rpm -qpb

#查看rpm包带的执行脚本,执行脚本不是以文本形式存在的

rpm -qp --scripts

#安装rpm包

rpm -ivh

rpm -ivh --aid *.rpm(--aid参数解决rpm包循环依赖的问题)

 

如果把所有包都下载到本地,或者推送到别的服务器,可以恢复镜像了(或者新的服务器)

 

上传

nginx_yum.tar.gz

nginx-1.6.3-1.x86_64.rpm

安装rpm 三种方式

yum 安装rpm

yum localinstall nginx-1.6.3-1.x86_64.rpm

这个命令会优先从网络安装rpm包的依赖包,然后在安装nginx的rpm包

rpm命令安装

rpm -vih nginx-1.6.3-1.x86_64.rpm

会报错

error:falied dependencies;/.....pcre-develis need....openssl....(没有依赖包)

解决,yum install pcre-develis  openssl-devel -y(先不用)

 

yum仓库

YUM仓库搭建过程

 

yum -y install nginx

 

posted @ 2018-03-14 17:32  大仙儿没溜儿  阅读(442)  评论(0编辑  收藏  举报