美文网首页
个人-搭建本地yum仓库及自制rpm包

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

作者: MineG | 来源:发表于2019-05-05 14:23 被阅读0次

    搭建本地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-devell
    

    创建安装包所存放的目录

    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=www --group=www --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
    

    添加 www 用户

    useradd  www -s /sbin/nologin  -M
    

    启动 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 www -M -s /sbin/nologin
    ln -s /application/nginx-1.10.2/ /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/centos6/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包

          本文链接:https://www.haomeiwen.com/subject/kwacoqtx.html