linux(Centos7)创建rpm仓库

linux创建rpm仓库

环境说明:

centos 7.7

简要说明:

第一步:首先配置本地可以安装的rpm仓库

第二步:然后安装apache将仓库export出去,

第三步:让局域网上其他计算机其他计算机可以使用自己创建的rpm仓库,也可以称为yum源。

第四步:如果能让internet上其他计算机可以访问该yum源,需要公网IP,如果方便用户记忆需要配置dns解析。(本文由于资源受限,不讲解此步骤)

配置本地RPM仓库

安装工具createrepo

检查是否以及createrepo,这是配置本地rpm仓库唯一需要安装的工具,其作用是创建rpm仓库的元数据,创建元数据的目的是让包管理器客户端比如yum能方便的获得rpm仓库的索引,以及rpm包之间的依赖关系, 而不必扫描整个仓库获得rpm包信息,及分析依赖。

检查是否以及安装

$rpm -q createrepo
package createrepo is not installed

如果没有,执行以下命令安装 createrepo 工具

$sudo yum install -y createrepo

 检查是否安装成功

$rpm -q createrepo
createrepo-0.9.9-28.el7.noarch

$createrepo --version
createrepo 0.9.9

查看帮助

$createrepo --help
Usage: genpkgmetadata.py [options]

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -q, --quiet           output nothing except for serious errors
  -v, --verbose         output more debugging info.
  --profile             output timing/profile info.
..............
..............

创建RPM仓库

$sudo mkdir -pv /rpm/centos/{6,7}/os/x86_64mkdir: created directory ‘/rpm’
mkdir: created directory ‘/rpm/centos’
mkdir: created directory ‘/rpm/centos/6’
mkdir: created directory ‘/rpm/centos/6/os’
mkdir: created directory ‘/rpm/centos/6/os/x86_64’
mkdir: created directory ‘/rpm/centos/7’
mkdir: created directory ‘/rpm/centos/7/os’
mkdir: created directory ‘/rpm/centos/7/os/x86_64’

拷贝RPM包到RPM仓库

cp /root/vsftpd-2.2.2-24.el6.x86_64.rpm /rpm/centos/6/os/x86_64
cp /root/tomcat-7.0.76-2.el7.noarch.rpm /rpm/centos/7/os/x86_64

创建元数据

$sudo createrepo /rpm/centos/6/os/x86_64/
$sudo createrepo /rpm/centos/7/os/x86_64/

注:通过执行以上命令, createrepo将会在以上目录下分别根据目录下的rpm生成元数据并保存在repodata下;

如果rpm包有更新,需要运行 以下命令更新元数据

$sudo createrepo --update /rpm/centos/6/os/x86_64/
$sudo createrepo --update /rpm/centos/7/os/x86_64/

 

 

完成以上配置,一个本地yum源已经配置成功,下面对本地yum源进行测试

测试本地yum源

添加本地yum源

$sudo vi /etc/yum.repos.d/CentOS-Local.repo
# 文件内容如下
# CentOS-7-localRepo.repo [local_base] name=CentOS-$releasever-localRepo - Base baseurl=file:///rpm/centos/$releasever/os/$basearch gpgcheck=0

说明:

第一个【】中括号里表示仓库的名字,通常这个名字可以自己决定,以方便记忆和理解为原则,但是一般不建议里面带空格,

name:表示仓库的简要说明,

baseurl= 表示仓库的路径,也就是repodata所在的目录的父目录,

gpgcheck=0表示不检查包的gpg验证,若gpgcheck=1表示要验证。

添加以上内容我们客户端就可以根据以上定义的baseurl去服务器仓库里找相应的包。

清除yum缓存,查看仓库列表

#清除yum缓存
$ sudo yum clean all
#查看yum源列表
$yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
* base: mirrors.cqu.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.cqu.edu.cn
base | 3.6 kB 00:00:00

extras | 2.9 kB 00:00:00

my_base | 2.9 kB 00:00:00

updates | 2.9 kB 00:00:00

(1/5): my_base/7/x86_64/primary_db | 3.1 kB 00:00:00

安装软rpm

 

$yum install vsftpd
Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:2.2.2-24.el6 will be installed
--> Finished Dependency Resolution

 

搭建局域网rpm仓库

安装apache web服务器

#检查是否以及安装httpd
$rpm -q httpd package httpd is not installed
#如果没有安装, 则执行以下命令安装
$sudo yum install httpd -y

说明:httpd默认工作路径在/var/www/html/ 下,也就是放html网页代码的地方。

配置apache web 服务器

#创建软连接指向,之前安装的yum repo:/rpm/centos
$sudo ln -s  /rpm/centos /var/www/html/centos

由于我的80端口以及被另一个进程占用,所以我需要修改 apache的配置让其监听在另一个端口上

$sudo vi /etc/httpd/conf/httpd.conf
Listen 8085

启动apach web 服务

$systemctl start httpd

$systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2021-02-05 20:12:27 CST; 1min 53s ago
     Docs: man:httpd(8)
           man:apachectl(8)

打开浏览器访问 http://192.168.x.x:8085/centos/ 这里的 ip 替换成自己的服务器ip

linux(Centos7)创建rpm仓库

 

 

修改或添加yum源测试

$sudo vi /etc/yum.repos.d/CentOS-Local.repo
# 文件内容如下
# CentOS-7-localRepo.repo [local_base] name=CentOS-$releasever-localRepo - Base baseurl=http://192.168.x.x:8085/centos/$releasever/os/$basearch gpgcheck=0

修改之前创建的CentOS-Local.repo 中的baseurl为http://192.168.x.x:8085/centos/$releasever/os/$basearch 

清空缓存 yum clean all 

这样就可以使用局域网yum源了,可以在局域网内的任意一台centos, fedora 或redhat上使用此 yum源了

 

参考文档

https://www.cnblogs.com/qiuhom-1874/archive/2019/09/08/11487456.html

上一篇:自建 yum 仓库-无冲突版本


下一篇:Linux - 软件包管理