搭建本地yum仓库及自制rpm包

  • 实验目的

为方便本地 yum 的管理,建本地 yum 仓库,实现局域网内部快速安装常用软件

  • 实验环境

VMware:12版本
系统版本:CentOS Linux release 7.6.1810
网络ip段:内网:172.16.1.0/24,外网:10.0.0.0/24

  • 实验步骤
  • 1、搭建要实现本地 yum 管理的软件,测试该软件搭建成功与否;
  • 2、定制 rpm 包及其相关依赖;
  • 3、搭建本地 yum
  • 4、配置客户端 yum ,实现局域网取包安装。
  • 实验过程

1、安装nginx,测试安装是否成功

先保留平常下载下来的 rpm

sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf

这样当我们yum安装软件的时候,文件就是被保存到/var/cache/yum/

安装依赖包

yum install -y pcre-devel openssl-devel

检查安装成功与否

rpm -qa pcre-devel openssl-devel

创建安装包所存放的目录

mkdir -p /server/tools

进入安装包所存放的目录

cd /server/tools

下载 /nginx-1.16.0 压缩包

wget http://nginx.org/download/nginx-1.16.0.tar.gz

解压 nginx-1.16.0.tar.gz

tar xf nginx-1.16.0.tar.gz

进入 nginx-1.16.0 目录

cd nginx-1.16.0/

创建软件存放目录

mkdir -p /application

配置 nginx

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

编译安装

make && make install

做软连接

ln -s /application/nginx-1.16.0/ /application/nginx

添加 nginx 用户

useradd  -u 1010 -s /sbin/nologin  -M nginx

启动 nginx 进行测试

/application/nginx/sbin/nginx

检查是否启动成功

netstat -lntup|grep nginx
or
lsof -i:80

关闭 nginx 为定制 rpm 包做准备:

pkill nginx

2、定制rpm包

安装 ruby 模块

yum -y install ruby rubygems ruby-devel

检查安装成功与否

rpm -qa ruby rubygems ruby-devel

查看当前源:

gem source list
*** CURRENT SOURCES ***

https://rubygems.org/

添加国内源

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

移除国外源

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

再次查看当前源:

gem source list
*** CURRENT SOURCES ***

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

安装 FPM 工具

gem install fpm 

FPM 常用参数如下表所示

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

安装可能遇到的问题

  • 1、遇到以下语法报错:
Need executable 'rpmbuild' to convert dir to rpm {:level=>:error}

解决方法:

yum install -y rpm-build 
  • 2、如果里面有gcc make的错误

解决方法:

yum install -y gcc 

创建 nginxrpm 包要执行的脚本

cat >/server/scripts/nginx_rpm.sh <<EOF
#!/bin/bash 
useradd -u 1010 -M -s /sbin/nologin nginx
ln -s /application/nginx-1.16.0/ /application/nginx
EOF

通过 fpm 命令打包 rpm

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

打包 rpm 遇到问题:

No such file (for after_install): "/server/scripts/nginx_rpm.sh  " {:level=>:error}

解决方法:对不起,请你手动敲一遍吧,它生气了,不让你复制粘贴

查看 rpm 包信息

rpm -qpi nginx-1.16.0-1.x86_64.rpm

查看 rpm 包内容

rpm -qpl nginx-1.16.0-1.x86_64.rpm

查看 rpm 的包依赖

rpm -qpR nginx-1.16.0-1.x86_64.rpm

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

rpm -qp --scripts nginx-1.16.0-1.x86_64.rpm

3、搭建本地yum源

创建仓库目录

mkdir /application/yum/centos7/x86_64 -p

将生成的 nginx  rpm 包放到该目录

mv nginx-1.16.0-1.x86_64.rpm /application/yum/centos7/x86_64/

安装 createrepo

yum -y install createrepo

初始化 repodata 索引文件

createrepo -pdo /application/yum/centos7/x86_64/ /application/yum/centos7/x86_64/

修改 nginx 配置文件,让它默认访问浏览器找到 /application/yum/centos7/x86_64/ 目录

cat  >/application/nginx/conf/nginx.conf<<EOF
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   /application/yum/centos7/x86_64/;
            autoindex on;         ##开启目录
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
EOF

检查 nginx 配置文件

/application/nginx/sbin/nginx -t

启动 nginx

/application/nginx/sbin/nginx

将我们之前下载的所有的 rpm 包都复制到本地 yum 仓库里

find /var/cache/yum/x86_64/7 -type f -name "*.rpm"|xargs -i cp {} /application/yum/centos7/x86_64

提示:每加入一个 rpm 包就要执行一下如下命令,用来更新索引

createrepo --update /application/yum/centos7/x86_64/

4、配置客户端 yum ,实现局域网取包安装

配置客户端

cat >  /etc/yum.repos.d/local.repo  << eof
[local]
name=Server
baseurl=http://10.0.0.61
enable=1
gpgcheck=0
eof

yum 操作、清除缓存、重新建立缓存

yum clean all

指定指定使用 local 源,此命令重启 linux 系统失效, 这条命令中的 local 名称一定要对应 local.repo 中的 [local]!

yum --enablerepo=local --disablerepo=base,extras,updates,epel list

 安装 nginx ,进行测试

yum install -y nginx

其他综合-搭建本地yum仓库及自制rpm包的更多相关文章

  1. 如何手工搭建本地Yum仓库

    如何手工搭建本地Yum仓库(重点推荐)  https://www.linuxidc.com/Linux/2016-09/135480.htm CentOS7.2 创建本地YUM源和局域网YUM源: h ...

  2. 搭建yum仓库与定制rpm包

    笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 当我们自动化部署集群的时候,想要快速的安装所有服务,搭建yum仓库与定制rpm包是我们首先要做的 原创作品,转载请 ...

  3. 自动化部署必备技能—部署yum仓库、定制rpm包

    部署yum仓库.定制rpm包 目录 第1章 扩展 - yum缓存 1.1 yum缓存使用步骤... 1 1.1.1 导言... 1 1.1.2 修改配置文件... 1 1.1.3 使用缓存... 1 ...

  4. CentOS7搭建本地YUM仓库,并定期同步阿里云源

    CentOS7同步阿里云镜像rpm包并自建本地yum仓库 系统环境 # cat /etc/centos-release CentOS Linux release 7.6.1810 (Core) # u ...

  5. 搭建本地YUM仓库

    YUM介绍 yum(yellow dog updater modified)为多个Linux发行版的软件包管理工具,Redhat RHEL CentOS Fedora YUM主要用于自动安装,升级rp ...

  6. CentOS 7 搭建本地YUM仓库,并定期同步阿里云源

    目录导航: 1. 系统环境 2. 修改yum 源为阿里云源 3. 安装yum相关的软件 4. 根据源标识同步源到本地目录 5. 安装nginx开启目录权限保证本地机器可以直接本地yum源 6. 客户端 ...

  7. 在VMware下通过挂载系统光盘搭建本地yum仓库的方法

    一.虚拟机的安装 首先你要有一个VMware虚拟机,没有软件的朋友可以看我的前几篇博客 安装VMware虚拟机 二.进入虚拟机(在这里我们进入一个Linux虚拟机下的CentOS操作系统进行演示) 首 ...

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

    1.挂载光盘 [root@localhost ~]# mount /dev/cdrom /media/cdrom/ mount: /dev/sr0 写保护,将以只读方式挂载 /media下的cdrom ...

  9. 通过挂载系统光盘搭建本地yum仓库

    1,配置本地yum源: 把系统光盘挂载到文件夹aaa(aaa为自己创建的文件夹). [root@localhost /]# mount dev/cdrom /aaa 2,修改yum配置文件: yum的 ...

随机推荐

  1. GoogLeNet结构

    Inception v1 论文:<Going deeper with convolutions> 在较低的层(靠近输入的层)中,相关单元更侧重提取局部区域的信息.因此使用1x1的特征可以保 ...

  2. 迎国庆 itest(爱测试) 4.1.0 发布,开源BUG 跟踪管理 & 敏捷测试管理软件

    v4.1.0 下载地址 :itest下载 itest 简介:查看简介 在线体验 https://itest.work/demo/ V4.1.0 根据用户反馈,共增加了23个更新:其中有11个功能增强和 ...

  3. react中界面跳转 A界面跳B界面,返回A界面,A界面状态保持不变 redux的state方法

    在上一篇文章中说过了react中界面A跳到B,返回A,A界面状态保持不变,上篇中使用的是传统的localStorage方法,现在来使用第二种redux的state方法来实现这个功能 现在我刚接触red ...

  4. Metrics、Tracing、Logging的融合

    终极目标 OpenTelemetry的终态就是实现Metrics.Tracing.Logging的融合,作为CNCF可观察性的终极解决方案. Tracing:提供了一个请求从接收到处理完毕整个生命周期 ...

  5. 4.Java基础_Java类型转换

    import javax.swing.plaf.synth.SynthMenuBarUI; /* 类型转换 自动类型转换: 把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量 强制类型 ...

  6. web-never give up

    打开题目连接 ?id=1 ,疑是注入点 但是输入其他数字无果 打开源码,发现注释有网页链接 打开连接123.206.87.240:8006/test/1p.html 发现回到了bugku的论坛首页,应 ...

  7. 关于appium的简单理解

    搭建好appium环境后,要学会定位app页面上的元素.下面是2款元素定位工具 uiautomatorviewer   -- Android SDK自带的元素定位工具,由Google开发的 Inspe ...

  8. vue中的router和route有什么区别?

    我只知道前者一般用在跳转路由的时候,push一个url, 而后者则用来存储路由跳转过程中存储的各种数据. 话不多说,这篇博客讲的比较详细,可以参考一下. vue2.0中的$router 和 $rout ...

  9. R-时空可视化

    Robert J. Hijmans37 开发了 raster 包用于网格空间数据的读.写.操作.分析和建模,同时维护了空间数据分析的网站 https://www.rspatial.org Edzer ...

  10. <Math> 258 43

    258. Add Digits class Solution { public int addDigits(int num) { if(num == 0) return 0; if(num % 9 = ...