定制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 -y install nginx