准备工作
安装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文件
- 新建一个
/yum-path
文件夹,文件夹名随意实例中为yum-path文件夹
mkdir /yum-path
- 下载软件用于测试
yumdownloader --resolve --destdir=/yum-path/ aalib
- 用
createrepo_c
命令创建YUM库
createrepo_c /yum-path
- 配置文件编写
在/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服务器建立库
- 安装httpd
yum install httpd -y
- 在
/var/www/html/
下新建一个yum
文件夹,文件夹名随意实例中为yum文件夹
mkdir /var/www/html/yum
- 下载软件用于测试
yumdownloader --resolve --destdir=/var/www/html/yum sl
- 用
createrepo_c
命令创建YUM库
createrepo_c /var/www/html/yum
- 启动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服务器建立库
- 安装ftp
yum install -y vsftpd
- 编辑
/etc/vsftpd/vsftpd.conf
文件,找到anonymous_enable
值改为YES
anonymous_enable=YES
- 在
/var/ftp/
下新建一个yum
文件夹,文件夹名随意实例中为yum文件夹
mkdir /var/ftp/yum
- 下载软件用于测试
yumdownloader --resolve --destdir=/var/ftp/yum sl
- 用
createrepo_c
命令创建YUM库
createrepo_c /var/ftp/yum
- 启动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仓库服务器的操作
- 生成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密钥
- 导出公钥到文件
gpg --export -a "Your Name <your@email.com>" >> /var/www/html/yum/public.gpg
Your Name <your@email.com>
写自己的GPG密钥的表示信息(也就是名称),不知道的执行下面命令查看,运行结果中uid
后面的就是
gpg --list-keys
- 导入公钥到rpm
rpm --import /var/www/html/yum/public.gpg
点击这里移除公钥
rpm --addsign /var/www/html/yum/*.rpm
回车后输入创建GPG密钥时最后设置的密码
*.rpm
代表给所以.rpm
结尾的文件,及软件包;也可以改为软件包全名
加密时提示rpm: /usr/bin/rpmsign: No such file or directory
或You must set "%_gpg_name" in your macro file
点击这里解决
- 更新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密钥
- 查看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
这部分
- 删除私钥
gpg --delete-secret-keys F1E092B3
- 删除公钥
gpg --delete-keys 0C7B54AE
先删除私钥才可以删除公钥,删除私钥时要确认两次,公钥确认移除
删完可以再用gpg --list-keys
命令确认
删除导入到rpm的公钥
- 查看当前已导入的GPG公钥
rpm -q gpg-pubkey
#运行结果示例
gpg-pubkey-16ca1a56-4a100959
- 删除指定的公钥
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都已关闭;未动配置文件,正常启动)。换了一台服务器后就没这个问题了