Centos定制rpm包、搭建yum仓库的教程

1 保留yum安装软件时下载下来的rpm包

只需修改yum配置文件即可。下载下来的rpm包会自动保存在/var/cache/yum/目录下

[root@swag ~]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
[root@swag ~]# yum install sl -y
[root@swag ~]# tree /var/cache/yum/x86_64/6/epel/
/var/cache/yum/x86_64/6/epel/
├── 83f14a3d88054141092be5da12eb18cb1baabd7d52e1ae38bfc98d3d5005490c-primary.sqlite
├── cachecookie
├── packages
│  └── sl-5.02-1.el6.x86_64.rpm
└── repomd.xml

1 directory, 4 files

2 编译安装Nginx

# Download tar.gz package
cd /home/oldboy/tools
wget -q http://nginx.org/download/nginx-1.6.3.tar.gz
# Yum install Dependent package
yum install openssl openssl-devel -y
yum install pcre pcre-devel -y
rpm -qa pcre pcre-devel
# Useradd www
useradd www -s /sbin/nologin -M
# Compile and install
tar -xf nginx-1.6.3.tar.gz
cd nginx-1.6.3
./configure --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --prefix=/application/nginx-1.6.3/
make && make install
# Create a soft link
ln -s /application/nginx-1.6.3/ /application/nginx
# Start nginx
/application/nginx/sbin/nginx
# Check port 80
lsof -i :80

3 安装fpm工具

首先安装依赖包

yum -y install zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel

下载ruby,fpm是ruby写的,因此系统环境需要ruby。不推荐yum安装ruby,在测试的时候会出现一些问题。

[root@swag tools]# wget https://ruby.taobao.org/mirrors/ruby/ruby-2.3.0.tar.gz
[root@swag tools]# tar -xf ruby-2.3.0.tar.gz
[root@swag tools]# cd ruby-2.3.0
[root@swag ruby-2.3.0]# ./configure
[root@swag ruby-2.3.0]# make && make install
[root@swag ruby-2.3.0]# ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
[root@swag ~]# whereis gem
gem: /usr/local/bin/gem
[root@swag ~]# /usr/local/bin/gem install fpm
[root@swag ~]# fpm -v
1.9.3
# 添加阿里云的Rubygems仓库,默认的源为外国源,访问下载速度比较慢,在添加之前先移除原生的Ruby仓库
[root@swag ~]# gem sources
*** CURRENT SOURCES ***
https://rubygems.org/
[root@swag ~]# gem sources --remove https://rubygems.org/
https://rubygems.org/ removed from sources
# 添加阿里仓库
[root@swag ~]# gem sources -a http://mirrors.aliyun.com/rubygems/
http://mirrors.aliyun.com/rubygems/ added to sources
[root@swag ~]# gem sources
*** CURRENT SOURCES ***

http://mirrors.aliyun.com/rubygems/

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

fpm支持的源类型包
dir:将目录打包成所需要的类型,可以用于源码编译安装的软件包
rpm:对rpm进行转换
gem:对rubygem包进行转换
python:将Python模块打包成相应的类型

fpm支持的目标类型包
rpm:转换为rpm包
deb:转换为deb包
solaris:转换为solaris包
puppet:转换为puppet包

4 将Nginx打包

[root@swag tools]# wget https://ruby.taobao.org/mirrors/ruby/ruby-2.3.0.tar.gz
[root@swag tools]# tar -xf ruby-2.3.0.tar.gz
[root@swag tools]# cd ruby-2.3.0
[root@swag ruby-2.3.0]# ./configure
[root@swag ruby-2.3.0]# make && make install
[root@swag ruby-2.3.0]# ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
[root@swag ~]# whereis gem
gem: /usr/local/bin/gem
[root@swag ~]# /usr/local/bin/gem install fpm
[root@swag ~]# fpm -v
1.9.3
# 添加阿里云的Rubygems仓库,默认的源为外国源,访问下载速度比较慢,在添加之前先移除原生的Ruby仓库
[root@swag ~]# gem sources
*** CURRENT SOURCES ***
https://rubygems.org/
[root@swag ~]# gem sources --remove https://rubygems.org/
https://rubygems.org/ removed from sources
# 添加阿里仓库
[root@swag ~]# gem sources -a http://mirrors.aliyun.com/rubygems/
http://mirrors.aliyun.com/rubygems/ added to sources
[root@swag ~]# gem sources
*** CURRENT SOURCES ***

[root@swag tools]# wget https://ruby.taobao.org/mirrors/ruby/ruby-2.3.0.tar.gz
[root@swag tools]# tar -xf ruby-2.3.0.tar.gz
[root@swag tools]# cd ruby-2.3.0
[root@swag ruby-2.3.0]# ./configure
[root@swag ruby-2.3.0]# make && make install
[root@swag ruby-2.3.0]# ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
[root@swag ~]# whereis gem
gem: /usr/local/bin/gem
[root@swag ~]# /usr/local/bin/gem install fpm
[root@swag ~]# fpm -v
1.9.3
# 添加阿里云的Rubygems仓库,默认的源为外国源,访问下载速度比较慢,在添加之前先移除原生的Ruby仓库
[root@swag ~]# gem sources
*** CURRENT SOURCES ***
https://rubygems.org/
[root@swag ~]# gem sources --remove https://rubygems.org/
https://rubygems.org/ removed from sources
# 添加阿里仓库
[root@swag ~]# gem sources -a http://mirrors.aliyun.com/rubygems/
http://mirrors.aliyun.com/rubygems/ added to sources
[root@swag ~]# gem sources
*** CURRENT SOURCES ***

5 其它机器测试

# scp把rpm包传送过去
[root@swag ~]# scp nginx-1.6.3-1.x86_64.rpm root@10.0.0.5:/home/oldboy/tools

# 测试
[root@swag3 tools]# yum localinstall nginx-1.6.3-1.x86_64.rpm -y

6 yum仓库搭建

安装createrepo

[root@swag2 ~]# yum install createrepo -y

创建yum仓库目录并初始化repodata索引文件

[root@swag2 ~]# mkdir -p /application/yum/centos6.9/x86_64/
[root@swag2 ~]# cd /application/yum/centos6.9/x86_64/  # 拷贝定制的rpm包到此目录下
[root@swag2 x86_64]# createrepo -pdo /application/yum/centos6.9/x86_64/ /application/yum/centos6.9/x86_64/

提供yum服务

# 这里用python来提供web服务,也可用apache或nginx来提供web服务
[root@swag2 x86_64]# python -m SimpleHTTPServer 80 &>/dev/null &  # python的httpd模块
[root@swag2 x86_64]# lsof -i :80
COMMAND  PID USER  FD  TYPE DEVICE SIZE/OFF NODE NAME
python 24680 root  3u IPv4 32493   0t0 TCP *:http (LISTEN)

如果有新的rpm包放入必须更新

[root@swag2 x86_64]# createrepo --update /application/yum/centos6.9/x86_64/

客户端修改yum源

cat >>/etc/yum.repo.d/<<EOF
[only]
name=Server
baseurl=http://10.0.0.7
# baseurl指定yum仓库IP,如果不是80端口需要加端口
enabled=1
gpgcheck=0
EOF
# 客户端以安装nginx为例
# 清除本地缓存
[root@swag4 ~]# yum clean all
# 显示本地yum源列表
[root@swag4 ~]# yum --enablerepo=only --disablerepo=base,extras,updates,epel list
# 这里需要注意--enablerepo为local.repo文件中定义的only
# 安装nginx为例#
yum --enablerepo=local --disablerepo=base,extras,updates,epel install nginx -y

yum的一些用法

# 只下载包不安装包
1、yumdownloader pcre-devel openssl-devel
2、yum --downloadonly pcre-devel openssl-devel

# yum本地安装rpm包
yum localinstall pcre-devel openssl-devel
# yum开启某些个源,关闭某些源安装软件包
yum --enablerepo=local --disablerepo=base,extras,updates,epel install pcre-devel openssl-devel
# yum安装不做GPG-check
yum install --nogpgcheck pcre-devel openssl-devel
# 查看yum历史记录
yum history
# 列出启用的软件库
yum repolist
yum repolist all # 列出所有的软件库,包括禁用的也列出

错误排查

# 若在客户端安装nginx的时候报以下错误是因为缺少依赖包的缘故,把其下载下来并更新yum仓库即可。
yum仓库:createrepo --update /application/yum/centos6.9/x86_64/
客户端:yum clean all

Error: Package: nginx-1.6.3-1.x86_64 (only)
           Requires: pcre-devel
Error: Package: nginx-1.6.3-1.x86_64 (only)
           Requires: openssl-devel

# 需要注意配置文件书写是否有误

7 镜像同步公网yum源

上面只是将自己制作的rpm包,放入yum源。但还有一种需求,平时安装软件都是从公网下载的,占用带宽,因此可以直接使用公网yum源的repodata。

上游yum源必须要支持rsync协议,否则不能使用rsync进行同步。http://mirrors.ustc.edu.cn/status/

# CentOS官方标准源:rsync://mirrors.ustc.edu.cn/centos/
# epel源:rsync://mirrors.ustc.edu.cn/epel/
# 同步命令:
# 使用rsync同步yum源,为了节省带宽、磁盘和下载时间,这里只同步了CentOS6的rpm包,这样所有的rpm包只占用了21G,全部同步需要300G左右。
# 同步base源,小技巧,我们安装系统的光盘镜像含有部分rpm包,大概3G,这些就不用重新下载。
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /data/yum_data/centos/6/os/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /data/yum_data/centos/6/extras/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /data/yum_data/centos/6/updates/x86_64/
# epel源
/usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /data/yum_data/epel/6/x86_64/
# 使用内网yum源方法
# 可以自建一个内网dns,如果没有,可使用hosts解析。
echo '192.168.0.200 mirrors.aliyun.com' >>/etc/hosts
# 结果展示
[root@swag5 data]# du -sh yum_data
21G   yum_data
[root@swag5 data]# tree -L 3 yum_data/
yum_data/
├── centos
│  ├── 6
│  │  ├── extras
│  │  ├── os
│  │  └── updates
│  └── RPM-GPG-KEY-CentOS-6
├── epel
│  └── 6
│    └── x86_64

总结

以上所述是小编给大家介绍的Centos定制rpm包、搭建yum仓库的教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • CentOS 7下YUM 本地仓库的搭建详细步骤

    CentOS 7下YUM 本地仓库的搭建详细步骤 使用CentOS7.iso 搭建本地仓库 (1) 将CentOS7.iso文件拷贝到用户主目录中 即:~ cp CentOS7.iso ~ (2) 创建iso文件将要挂在的目录 mkdir -p /mnt/cdrom (3) 挂在iso文件到刚刚创建的目录中 mount -o loop CentOS7.iso /mnt/cdrom (4) 创建repo文件 Local.repo,然后在其中加入下面内容 vim /etc/yum.repos.d/L

  • CentOS 7下使用rpm包安装mysql 5.7.18

    最近一直使用MySQL,mysql-Linux下安装写了使用其他方式安装mysql,这次主要采用rpm格式来安装,试了一下感觉这种安装模式比较简单. 卸载MariaDB centos7默认安装MariaDB而不是mysql,可能MariaDB数据库和mysql会冲突,故先卸载MariaDB. 1.查看已安装MariaDB相关的包              rpm -qa | grep mariadb         2.查看已安装的MariaDB相关yum包,包需根据rpm命令的结果判断    

  • Centos 7下使用RPM包安装MySQL 5.7.9教程

    记录的MySQL 5.7.9安装教程,分享给大家 环境介绍: 操作系统:Centos 7.1 mysql数据库版本:mysql5.7.9 mysql官方网站:http://www.mysql.com 1.安装新版mysql之前,我们需要将系统自带的mariadb-lib卸载 [root@5201351 ~]# rpm -qa|grep mariadb mariadb-libs-5.5.41-2.el7_0.x86_64 [root@5201351 ~]# rpm -e mariadb-libs-

  • centos6.5中rpm包安装mysql5.7初始化出错的解决方法

    1.rz上传到服务器,解压缩 rz [root@mini2 upload]# tar -xvf mysql-5.7.19-1.el6.i686.rpm-bundle.tar 2.安装rpm包 rpm -ivh mysql-community-common-5.7.19-1.el6.i686.rpm rpm -ivh mysql-community-libs-5.7.19-1.el6.i686.rpm rpm -ivh mysql-community-libs-compat-5.7.19-1.el

  • CentOS7使用rpm包安装mysql 5.7.18

    说明 本文写于2017-05-20,使用MySQL-5.7.18.操作系统为64位CentOS Linux release 7.2.1511 (Core),以桌面形式安装. 卸载MariaDB CentOS7默认安装MariaDB而不是MySQL,而且yum服务器上也移除了MySQL相关的软件包.因为MariaDB和MySQL可能会冲突,故先卸载MariaDB. 1.查看已安装的MariaDB相关rpm包. rpm -qa | grep mariadb 2.查看已安装的MariaDB相关yum包

  • Centos定制rpm包、搭建yum仓库的教程

    1 保留yum安装软件时下载下来的rpm包 只需修改yum配置文件即可.下载下来的rpm包会自动保存在/var/cache/yum/目录下 [root@swag ~]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf [root@swag ~]# yum install sl -y [root@swag ~]# tree /var/cache/yum/x86_64/6/epel/ /var/cache/yum/x86_64/6/epel/ ├

  • VMware15.5版本通过挂载系统光盘搭建yum仓库的图文教程

    一. 1.打开CentOS 7虚拟机. 2.登录虚拟机,选择未列出 用户名:root 密码:输入自己设置的密码 点击登录. 3.右键单击打开终端. 4.输入两次 cd ..命令 回到根目录下. 5.创建一个为chenzishuo的目录,在终端输入 mkdir /chenzishuo 6.配置本地的yum,将光盘挂载到陈子硕下,在终端输入 mount /dev/cdrom /chenzishuo 7.进入yum.repos.d文件下,在终端输入cd /etc/yum.repos.d 输入完成后再输

  • YUM解决RPM包安装依赖关系及yum工具介绍本地源配置方法详解

    1.背景概述 在实际生产环境下,对于在linux系统上安装rpm包,主要面临两个实际的问题 1)安装rpm包过程中,不断涌现的依赖关系问题,导致需要按照提示或者查询资料,手工安装更多的包 2)由于内外网的隔离,无法连接外网的yum源 鉴于上述因此,本文将详细介绍,yum工具以及配置本地yum源的方法 2.yum工具简介 •yum工具作为rpm包的软件管理器,可以进行rpm包的安装.升级以及删除等日常管理工作,而且对于rpm包之间的依赖关系可以自动分析,大大简化了rpm包的维护成本. •yum工具

  • 使用RPM包安装MySQL 5.7.18的教程

    系统: CentOS 7 RPM包: mysql-community-client-5.7.18-1.el7.x86_64.rpm mysql-community-server-5.7.18-1.el7.x86_64.rpm mysql-community-common-5.7.18-1.el7.x86_64.rpm mysql-community-libs-5.7.18-1.el7.x86_64.rpm 安装顺序: mysql-community-server 依赖 mysql-communi

  • Centos 6.5环境实现本地局域网搭建YUM的方法【基于HTTP】

    本文实例讲述了Centos 6.5环境实现本地局域网搭建YUM的方法.分享给大家供大家参考,具体如下: 一.yum 简介: yum,是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器.起初是由yellow dog 这一发行版的开发者Terra Soft 研发,用python 写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke 开发团队进行改进,遂有此名.yum 的宗旨是

  • Linux 中 RPM包 安装 查询 卸载命令小结及yum命令详解

    之前一直在用ubuntu,安装卸载软件基本上是使用apt-get 这个非常的简单,而且过程中遇到的软件依赖会自动帮我们处理,类似于傻瓜式安装.另外在 Linux 操作系统下,几乎所有的软件都可以通过RPM 进行安装.卸载及管理等操作.RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件.Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装.RPM 有五种操作模式,分别为:安装.卸载.升级.查

  • linux通过挂载系统光盘搭建本地yum仓库的方法

    1.挂载光盘 [root@localhost ~]# mount /dev/cdrom /media/cdrom/ mount: /dev/sr0 写保护,将以只读方式挂载 /dev下的cdrom目录是事先创建好的 2.修改yum配置文件(文件位置:/etc/yum.repos.d) [root@localhost /]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# mkdir bak #创建一个文件夹来存放多余的配置文件 [root@l

  • CentOS 6.5中利用yum搭建LNMP环境的步骤详解

    前言 LNMP是Linux.Nginx.MySQL和PHP的缩写,这个组合是最常见的WEB服务器的运行环境之一.本文将带领大家在CentOS 6操作系统上搭建一套LNMP环境. 本教程适用于CentOS 6.5版本. 一.安装php7 1.更新yum源(默认yum源中php版本为5.3.3) # rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm 2.安装php7及常用的拓展模块 # yum -y install php70w php70

  • CentOS 6.5 环境实现本地局域网搭建YUM的方法【基于FTP】

    本文实例讲述了CentOS 6.5 环境实现本地局域网搭建YUM的方法.分享给大家供大家参考,具体如下: 前面介绍了Centos 6.5环境本地局域网基于HTTP搭建YUM的方法,这里再来说明一下基于FTP的YUM搭建方法. 服务端配置 创建挂载目录 mkdir /media/CentOS_6.5_Final 赋予挂载目录权限 chmod -R 777 /media/CentOS_6.5_Final 挂载iso mount -o loop -t CentOS-6.5-x86_64-bin-DVD

随机推荐