• 【转】linux之自建yum仓库


    原链接:http://www.live-in.org/archives/1410.html

    平时使用yum方式安装更新软件,可以自建一个yum源,同步官方更新源,这样如果本地有机器要升级的话就可以直接使用本地的更新源了。这里系统为CentOS 6.2。

    一、服务端
    1、安装需要的环境
    自建yum本地更新源可以使用http服务或ftp服务,由于ftp服务器要考虑防火墙配置,主动、被动连接模式,这里使用http服务。

    安装apache:

    yum install httpd

    配置apache过程略过。

    2、安装createrepo软件包

    yum install createrepo

    3、建立存放软件包目录

    mkdir -p /home/yum/centos/6/
    chown -R apache:apache /home/yum/

    4、apache创建虚拟目录

    vim /etc/httpd/conf/httpd.conf

    在最后加入:

    NameVirtualHost *:80
    < VirtualHost *:80>
    DocumentRoot /home/yum
    ServerName XXX.XXX.XXX #填写绑定的域名
    <Directory "/home/yum">
    Options Indexes FollowSymlinks
    < /Directory>
    < /VirtualHost>

    5、将rpm软件包放入/home/yum/centos/6/目录

    6、执行createrepo

    createrepo /home/yum/centos/6

    在/home/yum/centos/6目录下会自动生成repodata目录,repodata目录里是一个数据库,其中的文件主要是XML格式,描述了一个rpm包的详细信息,如依赖关系,包含文件,校验码信息。

    二、客户端
    1、创建yum客户端repo文件

    vim /etc/yum.repos.d/test.repo

    以.repo为后缀,这里名字为test。

    添加:

    [test]
    name=yum test
    baseurl=http://XXX.XXX.XXX/centos/6
    enabled=1
    gpgcheck=1
    gpgkey=http://XXX.XXX.XXX/centos/RPM-GPG-KEY-TESTREPO

    说明:
    [test]:是repo id。
    name:仓库的描述。
    baseurl:仓库的位置。
    enabled:是否启用这个仓库,1为起用,0为禁用。
    gpgcheck:是否检查gpg签名,1为检查,0为不检查。
    (XXX.XXX.XXX是绑定的域名)

    PS:如果是内部使用,gpgcheck可以设置为0(同时gpgkey也不用设置),如果更新源放在公网上的话还是需要检查gpg签名,保证客户端得到来源的可靠性。

    2、查看yum更新源列表

    yum repolist

    是否有名为yum test的源出现。

    三、(可选)服务端使用gpg key对rpm软件包进行签名
    1、创建gpg key
    gpg key也是基于非对称加密算法,产生公钥和私钥。

    执行:

    cd ~
    gpg --gen-key

    创建过程:

    选择加密算法、加密强度、是否设置有效期

    设置名称和邮箱


    输入保护密码

    在/root/.gnupg目录下生成公钥和私钥文件。据观察pubring.gpg是公钥,secring.gpg是私钥。

    2、查看公钥

    gpg --list-key

    显示如下:

    /root/.gnupg/pubring.gpg------------------------pub   2048R/EF9632F2 2012-07-21uid                  test repo <testrepo@example.com>sub   2048R/C17A35BC 2012-07-21


    3、在家目录建立.rpmmacros文件

    cd ~
    vim .rpmmacros

    添加:

    %_signature gpg
    %_gpg_name test repo <testrepo@example.com>

    %_gpg_name后面要填写gpg --list-key命令显示的uid,指定这一组key进行签名。

    4、对rpm软件包签名
    以mtree-2.7-1.el6.rf.i686.rpm软件包为例。

    cd /home/yum/centos/6
    rpm --resign mtree-2.7-1.el6.rf.i686.rpm

    随后需要输入保护密码。

    5、导出公钥到文本文件

    cd ~
    gpg --export -a "test repo <testrepo@example.com>" >RPM-GPG-KEY-TESTREPO

    6、验证是否签名成功
    查看rpm数据库中的公钥:

    rpm -q gpg-pubkey

    gpg-pubkey-c105b9de-4e0fd3a3

    导入公钥:

    rpm --import RPM-GPG-KEY-TESTREPO


    rpm -q gpg-pubkey

    gpg-pubkey-c105b9de-4e0fd3a3
    gpg-pubkey-ef9632f2-500a6e55

    已经添加了一组公钥。

    检验rpm软件包:

    cd /home/yum/centos/6
    rpm -K mtree-2.7-1.el6.rf.i686.rpm

    mtree-2.7-1.el6.rf.i686.rpm: rsa sha1 (md5) pgp md5 OK

    7、将公钥放到web服务器上

    cp ~/RPM-GPG-KEY-TESTREPO /home/yum/centos/

    8、服务端更新仓库信息

    createrepo --update /home/yum/centos/6

    主要是更新repodata目录中的数据。

    四、(可选)客户端导入公钥

    rpm --import http://XXX.XXX.XXX/centos/RPM-GPG-KEY-TESTREPO

    (XXX.XXX.XXX是绑定的域名)

    测试安装:

    yum install mtree

     



    [星空刺] |-->一颗星辰一闪即逝,支撑它的唯有方向和目的
  • 相关阅读:
    《锋利的jQuery》补充笔记
    sass学习笔记
    《HTML5与CSS3基础教程》学习笔记 ——补充
    ajax常见问题(部分)
    html新特性(部分)
    less 笔记
    《JavaScript高级程序设计》补充笔记2
    《JavaScript高级程序设计》补充笔记1
    《CSS3秘笈》备忘录
    显示实现接口的好处c#比java好的地方
  • 原文地址:https://www.cnblogs.com/aaa103439/p/94130e27e3c3c8b506505cd1fff46051.html
Copyright © 2020-2023  润新知