原链接: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

【转】linux之自建yum仓库的更多相关文章

  1. Linux 制作ftp远程yum仓库

    一.下载createrepo yum install createrepo -y 二.安装vsftp软件 yum install vsftpd -y 三.将pub制作为yum仓库 把需要的rpm包拷贝 ...

  2. Linux配置自建 YUM 软件存储库

    yum软件仓库的搭建方式有三种,分别是本地yum源,网络yum源,第三方软件仓库. 以下示例演示了搭建本地yum仓库的方法: 1. 删除 /etc/yum.repos.d/dvd.repo 这个仓库文 ...

  3. 自建yum仓库yum源

    目的:搭建自己的yum源主要是解决大批量服务器下载更新人互联网带宽占用问题及速度问题以及不能访问的问题. 服务端:  步骤如下: 一.创建一个目录,就是我们yum软件存放的目录 [root@vicwe ...

  4. 自建YUM仓库

    YUM主要用于自动安装.升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系. 要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个 ...

  5. 自建yum仓库,该仓库为默认仓库

    YUM REPO: http://content.example.com/rhel7.0/x86_64/dvd 创建自建yum REPO文件: vim /etc/yum.repos.d/redhat. ...

  6. 第五章、Linux网络服务之yum仓库

    目录 一.yum仓库简介 二.yum配置文件 1yum主配置文件 2日志文件 三.yum命令详解 1查询软件包命令 2查询软件包组命令 3yum安装升级 4 软件卸载 四.搭建yum仓库 本地仓库 h ...

  7. 自建yum仓库,分别为网络源和本地源

    配置本地源 建立本地源目录 [root@qingcheng-db lgp]#mkdir /mnt/cdrom [root@qingcheng-db lgp]#mkdir /yum 挂载Centos光盘 ...

  8. Linux centos yum仓库 自制

    内网下Yum仓库搭建配置 1.实验环境 虚拟机环境: VMware 12 版本虚拟机 网络环境: 内网 IP 段:172.16.1.0 外网 iP 段(模拟):10.0.0.0 实验基础:(能够上网, ...

  9. linux局域网搭建yum仓库(本地(file)、网络(ftp、http))

    linux局域网搭建yum仓库(本地(file).网络(ftp.http)) yum配置文件解释: [ ]:定义仓库,base为仓库的名字,可任意 name:仓库的简短文字描述 baseurl:仓库的 ...

随机推荐

  1. C语言基础学习基本数据类型-变量的输出与输入

    变量的输出 变量如何输入输出呢?实际上,在这之前你已经使用过输出语句(printf语句)了,我们可以使用printf来执行输出. printf语句的使用方法如下: printf(格式控制字符串, 数据 ...

  2. Asp.Net 控件radio 的简单使用

    js: <script type="text/javascript"> function ok() { document.getElementById("tx ...

  3. Linux下的管道命令有这些:

    Linux下的管道命令有这些: 选取命令:cat grep 排序命令:sort wc uniq 双向重定向:tee 字符转换命令: tr, col, join, paste, expand 切割命令: ...

  4. QT下资源使用和资源占用…(可以动态加载资源文件,这样不占内存)

    原文地址:关于QT下资源使用和资源占用内存过多的问题作者:技术成就梦想     最近研究了一下如何从外部动态调用图片的问题,从而研究了图片资源的使用方法.网上最常见的帖子是这个,感觉总结的还不错. h ...

  5. 关于Set Nocount ON的性能 |c#调用存储过程的返回值总是-1

    原文地址:http://www.tuicool.com/articles/qe6BZbR 也许因为它太过于简单,自己一直没能好好关注这个语句,只记得"只是"提高点性能而已.有时会在存储过程中写上几句, ...

  6. 关于overload和override

    override 覆盖,表示在子类中一个函数覆盖基类中的同名函数,或者局部的某个函数覆盖了全局的某个同名函数.被覆盖的函数通常不能直接被调用,必须借助一些显式的强制手段. overload 重载,表示 ...

  7. 【POJ2242】The Circumference of the Circle(初等几何)

    已知三点坐标,算圆面积. 使用初等几何知识,根据海伦公式s = sqrt(p(p - a)(p - b)(p - c)) 和 外接圆直径 d = a * b * c / (2s) 来直接计算. #in ...

  8. JAVA日期处理(Timestamp)

    要写一些与数据库连接时的日期处理,pstmt.setDate()的类型是java.sql.Date类型,这种符合规范的类型其实并没有把时分秒存进数据库,所以存取时就应该用setTimestamp()或 ...

  9. java_final

  10. python下载多个文件

    # -*- coding: utf-8 -*-__author__ = 'Administrator'import urllib2,urllib,os,redef Url1(url):#多个文件    ...