Linux(CentOS7)的YUM仓库搭建及错误解决方案

准备工作

安装createrepo_c

yum install createrepo_c -y

createrepo_c工具用于生成yum库所需要的必要文件,使用方法如下:

createrepo_c /yum-path

yum-path写你的yum路径
执行后会在/yum-path下生成一个repodata文件夹
当YUM库中有新增软件时运行下面命令来更新repodata文件夹,否者软件将不会在可用列表展示

createrepo_c --update /yum-path


安装yum-utils

yum install yum-utils -y

yum-utils工具用于下载rpm包,使用方法如下:

yumdownloader --resolve --destdir=/yum-path httpd

安装httpd和依赖到/yum-path路径下
--resolve安装软件和所需依赖
--destdir指定安装路径,不写时表示下载在当前路径

yum install --downloadonly --downloaddir=/yum-path httpd也可以只下载不安装,但是当软件已经安装过时就不会再下载,该命令不用下载yum-utils




本地YUM库配置

创建YUM库,并编写.repo文件

  1. 新建一个/yum-path文件夹,文件夹名随意实例中为yum-path文件夹
mkdir /yum-path
  1. 下载软件用于测试
yumdownloader --resolve --destdir=/yum-path/ aalib
  1. createrepo_c命令创建YUM库
createrepo_c /yum-path
  1. 配置文件编写
    /etc/yum.repos.d/下新建.repo文件,编写一下内容
[localrepo]  
name=Local Repository  
baseurl=file:///yum-path/ 
enabled=1  
gpgcheck=0

[localrepo] 仓库标识符,用于在YUM配置中引用这个特定的仓库
name定义了此仓库的名称,这只是一个描述性的名字
baseurl仓库的所在位置,该实例中YUM库指向/yum-path/file://表示本地文件系统
enabled是否启用,1为开启、0为关闭
gpgcheck是否开启GPG签名检查,1为开启、0为关闭



测试是否可用

清除YUM缓存

yum clean all

建立YUM缓存

yum makecache

想查看有哪些可用软件,用下方命令

yum list available

如果查看时,软件显示不全可能是一下原因

  • 没有用createrepo_c命令更新YUM库
  • 软件已经安装;命令不会显示已经安装的软件包

安装软件时提示416错误点这里




远程YUM库配置

http远程yum库

创建YUM库

在YUM服务器建立库

  1. 安装httpd
yum install httpd -y
  1. /var/www/html/下新建一个yum文件夹,文件夹名随意实例中为yum文件夹
mkdir /var/www/html/yum
  1. 下载软件用于测试
yumdownloader --resolve --destdir=/var/www/html/yum sl
  1. createrepo_c命令创建YUM库
createrepo_c /var/www/html/yum
  1. 启动httpd服务,并设置自启
systemctl start httpd
systemctl enable httpd

配置文件编写

在另一台测试服务器编写YUM源的配置文件
/etc/yum.repos.d/下新建.repo文件,编写一下内容

[httprepo]
name=http.yum
baseurl=http://域名或IP地址/yum
enabled=1
gpgcheck=0

[localrepo] 仓库标识符,用于在YUM配置中引用这个特定的仓库
name定义了此仓库的名称,这只是一个描述性的名字
baseurl仓库所在服务器的位置,http://表示HTTP服务器,如果使用HTTPS协议则改为https://
enabled是否启用,1为开启、0为关闭
gpgcheck是否开启GPG签名检查,1为开启、0为关闭


测试是否可用

清除YUM缓存

yum clean all

建立YUM缓存

yum makecache

想查看有哪些可用软件,用下方命令

yum list available


ftp远程yum库

创建YUM库

在YUM服务器建立库

  1. 安装ftp
yum install -y vsftpd
  1. 编辑/etc/vsftpd/vsftpd.conf文件,找到anonymous_enable值改为YES
anonymous_enable=YES
  1. /var/ftp/下新建一个yum文件夹,文件夹名随意实例中为yum文件夹
mkdir /var/ftp/yum
  1. 下载软件用于测试
yumdownloader --resolve --destdir=/var/ftp/yum sl
  1. createrepo_c命令创建YUM库
createrepo_c /var/ftp/yum
  1. 启动ftp服务,并设置自启
systemctl start vsftpd;systemctl enable vsftpd

配置文件编写

在另一台测试服务器编写YUM源的配置文件
/etc/yum.repos.d/下新建.repo文件,编写一下内容

[ftprepo]
name=ftp.yum
baseurl=ftp://域名或IP地址/yum
enabled=1
gpgcheck=0

[localrepo] 仓库标识符,用于在YUM配置中引用这个特定的仓库
name定义了此仓库的名称,这只是一个描述性的名字
baseurl仓库所在服务器的位置,http://表示HTTP服务器,如果使用HTTPS协议则改为https://
enabled是否启用,1为开启、0为关闭
gpgcheck是否开启GPG签名检查,1为开启、0为关闭

测试是否可用

清除YUM缓

yum clean all

建立YUM缓存

yum makecache

想查看有哪些可用软件,用下方命令

yum list available



扩展

开启GPG签名检查

对YUM仓库服务器的操作

  1. 生成GPG密钥
gpg --gen-key

根据提示输入相关信息以生成密钥对

提示信息
Your selection? 回车 (生成的密码类型
What keysize do you want? (2048) 回车 (密钥长度默认:2048
Key is valid for? (0) 回车 (不想永久有效自行选择,n:n天后到期;nw:n周后到期;nm:n月后到期;ny:n年后到期)
Real name: 输入真实姓名(用字母,不小于5字符)
Email address: 输入邮箱 (163邮箱,或者qq邮箱等)
Comment: 备注信息
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? 修该信息,确认无误后输入O回车退出

之后会让设置GPG密钥密码输两次,很重要忘了就加密不了软件了

点击这里删除GPG密钥

  1. 导出公钥到文件
gpg --export -a "Your Name <your@email.com>" >> /var/www/html/yum/public.gpg

Your Name <your@email.com>写自己的GPG密钥的表示信息(也就是名称),不知道的执行下面命令查看,运行结果中uid 后面的就是

gpg --list-keys

  1. 导入公钥到rpm
rpm --import /var/www/html/yum/public.gpg

点击这里移除公钥


4. 对仓库中的软件包进行签名

rpm --addsign /var/www/html/yum/*.rpm

回车后输入创建GPG密钥时最后设置的密码
*.rpm 代表给所以.rpm 结尾的文件,及软件包;也可以改为软件包全名
加密时提示rpm: /usr/bin/rpmsign: No such file or directoryYou must set "%_gpg_name" in your macro file点击这里解决

  1. 更新YUM仓库元数据
createrepo_c --update /var/www/html/yum/

修改测试服务器yum源配置文件

[localrepo]
name=Local Repository
baseurl=http://域名或IP地址/yum
enabled=1
gpgcheck=1
gpgkey=http://域名或IP地址/yum/public.gpg

恭喜你完成GPG签名检查,按照之前的方法测试
安装软件时提示416错误点这里



删除密钥

删除GPG密钥

回去

  1. 查看gpg密钥列表
gpg --list-keys
#示例
/root/.gnupg/pubring.gpg
------------------------
pub   2048R/0C7B54AE 2024-06-23
uid                  qwert <1234@163.com>
sub   2048R/F1E092B3 2024-06-23

pub 是公钥删除用到0C7B54AE这部分
sub 是私钥删除用到F1E092B3这部分

  1. 删除私钥
gpg --delete-secret-keys F1E092B3
  1. 删除公钥
gpg --delete-keys 0C7B54AE

先删除私钥才可以删除公钥,删除私钥时要确认两次,公钥确认移除
删完可以再用gpg --list-keys命令确认


删除导入到rpm的公钥

回去

  1. 查看当前已导入的GPG公钥
rpm -q gpg-pubkey
#运行结果示例
gpg-pubkey-16ca1a56-4a100959
  1. 删除指定的公钥
rpm -e gpg-pubkey-16ca1a56-4a100959

删完可以再用rpm -q gpg-pubkey命令确认



各类错误解决

rpm包签名(加密)时遇到的问题

回去

rpm: /usr/bin/rpmsign: No such file or directory

意为:在进行签名时调用的是 /usr/bin/rpmsign 这个工具,但是在你的系统中没有找。
执行下面命令即可

yum install rpm-sign

You must set “%_gpg_name” in your macro file

意为:必须在你的宏文件中设置 “%_gpg_name”
文件位置/etc/rpm/macros没有的就新建一个,或者运行下面命令

echo "%_gpg_name GPG密钥的uid" > /etc/rpm/macros

作用:把%_gpg_name GPG密钥的uid追加到macros文件的末尾,没有文件则新建




改端口号

更改httpd服务的配置文件

不适用源码安装的httpd服务
打开/etc/httpd/conf/httpd.conf文件进行更改

vim /etc/httpd/conf/httpd.conf

增加监听的端口,在52行Listen 80下面添加所需端口号

Listen 8080

在最后一行编写下面配置

<Directory "/var/www/yum">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
  • Options Indexes FollowSymLinks 允许生成目录列表,改为Options FollowSymLinks就不允许
  • AllowOverride None不允许使用.htaccess文件来修改这个目录的配置
  • Require all granted允许所有用户自由访问这个目录中的内容,改为Require all denied就不允许

编写虚拟机配置文件

删除/etc/httpd/conf.d/welcome.conf文件

rm -rf /etc/httpd/conf.d/welcome.conf

/etc/httpd/conf.d/目录下新建虚拟机配置文件以.conf结尾

vim /etc/httpd/conf.d/yum.conf

文件内编写下面内容

<VirtualHost *:8080 >
    ServerName www.yum.com
    DocumentRoot /var/www/yum
    ErrorLog /var/log/httpd/example.com-error_log
    CustomLog /var/log/httpd/example.com-access_log combined
</VirtualHost>
  • DocumentRoot 项目路径
  • ServerName 服务器域名
  • ErrorLog 错误日志存放位置
  • CustomLog 日常日志存放位置

保存并退出,重启即可生效

systemctl restart httpd



操作中未解决疑问,望解答:

  • 安装httpd服务启动后无法访问(防火墙、selinux都已关闭;未动配置文件,正常启动)。换了一台服务器后就没这个问题了
  • 32
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值