https://zhuanlan.zhihu.com/p/445726458
本文共包含两部分:1 创建本地 yum 源;2 配置本地 yum 源。
mkdir /myYumRepo
此处放入一个 jdk-8u311-linux-x64.rpm 作为示例。
createrepo /myYumRepo
使用 createrepo 命令需要先安装 createrepo:yum install createrepo。
命令执行成功后,文件夹内会多出一个 repodata 文件夹,这表明 yum 源创建成功。
此时,在 /etc/yum.repo.d/ 下新建一个 myYumRepo.repo 文件(名字可以任意取,但后缀 .repo 不能改),向文件中写入以下内容,即可使用此 yum 源。(例如,安装 jdk:yum install jdk
)
[myYumRepo]
name=myYumRepo
baseurl=file:///myYumRepo
enabled=1
gpgcheck=0
如果不能安装,请清理缓存:
yum clean all
(以下为可选项)
gpg --gen-key
该命令的后续步骤较多,请参考其它资料,此处不再赘述。
如果中途卡住,请先将 /dev/random 删掉,然后再为它建立一个软链接,源地址为 /dev/urandom:
mv /dev/random /dev/random.bak
ln -s /dev/urandom /dev/random
# gpg -k # 查看公钥。
pub 1024R/531D86FC 2021-12-15 # 531D86FC 是这对密钥的标识符,公钥、私钥是相同的。
uid xxxxxx
# gpg -K # 查看私钥,此步骤非必须。
sec 1024R/531D86FC 2021-12-15 # 531D86FC 是这对密钥的标识符,公钥、私钥是相同的。
uid xxxxxx
# gpg -a --export 531D86FC > ~/RPM-GPG-KEY-myYumRepo # 导出公钥,不要导出到 yum 源所在的文件夹
# gpg -a --export-secret-keys 531D86FC > ~/RPM-GPG-KEY-myYumRepo-private # 导出私钥,此步骤非必须,且非常不建议这样做。
yum install rpm-sign
在用户目录(root 用户的根目录就是 /root,其他用户的根目录位于 /home/ 下的同名目录)下新建一个文件 .rpmmacros
:
vi ~/.rpmmacros
向其中写入以下内容:
%_signature gpg # 指定签名软件我 gpg,无需更改
%_gpg_path /root/.gnupg # 指定密钥的存储目录,无需更改
%_gpg_name 531D86FC # 指定密钥的标识符,更改为你使用 gpg -k 查询到的标识符
%_gpgbin /usr/bin/gpg # 指定 gpg 的执行文件
rpmsign --addsign /myYumRepo/jdk-8u311-linux-x64.rpm
注意,包名为 rpm-sign,命令为 rpmsign。
也可以使用 --resign 选项,与 --addsign 是完全相同的。
删除签名选项:--delsign。
将公钥“RPM-GPG-KEY-myYumRepo”分发给其它使用此 yum 源的主机。
本主机的公钥放在用户根目录下。
修改为:
[myYumRepo]
name=myYumRepo
baseurl=file:///myYumRepo
enabled=1
gpgcheck=1
gpgkey=file:///root/RPM-GPG-KEY-myYumRepo
此时如果安装 jdk,则会要求验证签名。
配置本地 yum 源有三种方法,方法一,使用 file:///,方法二,使用 http://,方法三,使用 ftp://,。
方法一搭建的 yum 源,仅本机可以使用。第一部分中的本地 yum 源就是采用这种方法。
方法二和方法三搭建的 yum 源,局域网中所有的主机均可使用。
由于方法二最简单好用,此处只介绍该方法。
(httpd 和 Apache HTTP Server 是同一个东西)
yum install httpd
systemctl restart httpd
有四种方法:更改根目录、指定别名、创建软连接、移动文件到 /var/www/html/
继续以第一部分中创建的 yum 源为例,它位于 /myYumRepo。
2.2.1 方法一(不推荐):更改根目录
删除 /etc/httpd/conf.d/welcome.conf 文件。
mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak
修改 /etc/httpd/conf/httpd.conf:
<Directory />
AllowOverride none
Require all granted
Allow from all
Options Indexes FollowSymLinks
</Directory>
建议修改前先备份:
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
/etc/httpd/conf/httpd.conf 是 httpd 的主配置文件。不建议修改该文件。
/etc/httpd/conf.d/*.conf 是额外的配置文件。当你想自定义设置项,可以新建一个 *.conf 文件(名字可以任意取,但后缀必须为 .conf),然会在其中进行设置,不建议直接修改主配置文件 httpd.conf。
重启 httpd:
systemctl restart httpd
此时,在局域网其它主机的浏览器上范围这台主机的 IP 地址,即可看到 /myYumRepo 中的文件。
使用 VirtualBox 的话,host 主机想要访问,需要设置端口转发。
若依照上述步骤操作,如果还是不能访问,可能还需要修改 /myYumRepo 的文件权限。
2.2.2 方法二:指定别名
新建一个 .conf 配置文件(此处取名为 myYumRepo.conf):
vi /etc/httpd/conf.d/myYumRepo.conf
在其中写入如下内容:
Alias /myYumRepo /myYumRepo
<Directory /myYumRepo>
AllowOverride none
Require all granted
Allow from all
Options Indexes FollowSymLinks
</Directory>
重启 httpd,此时,在局域网其它主机的浏览器上范围这台主机的 IP 地址 + /myYumRepo,即可看到 /myYumRepo 中的文件。
2.2.3 方法三:创建软连接
在 /var/www/html 下创建 /myYumRepo 的软连接:
ln -s /myYumRepo /var/www/html
重启 httpd,此时,在局域网其它主机的浏览器上范围这台主机的 IP 地址 + /myYumRepo,即可看到 /myYumRepo 中的文件。
2.2.4 方法四:移动文件到 /var/www/html/
将 /myYumRepo 文件夹移动到 /var/www/html/ 目录下
mv /myYumRepo /var/www/html
重启 httpd,此时,在局域网其它主机的浏览器上范围这台主机的 IP 地址 + /myYumRepo,即可看到 /myYumRepo 中的文件。
特别说明:如果 yum 源位于移动硬盘或光碟上,可以直接将移动硬盘或光碟挂载到 /var/www/html 下的某一目录下。
针对 2.2.1 的方法一,将所有使用本 yum 源的主机的 /etc/yum.repo.d/myYumRepo.repo 文件修改为如下内容:
[myYumRepo]
name=myYumRepo
baseurl=http://xxx.xxx.xxx.xxx/ # xxx.xxx.xxx.xxx 为 /myYumRepo 所在主机的 IP 地址
enabled=1
gpgcheck=1
gpgkey=file:///root/RPM-GPG-KEY-myYumRepo
针对其它方法,将所有使用本 yum 源的主机的 /etc/yum.repo.d/myYumRepo.repo 文件修改为如下内容:
[myYumRepo]
name=myYumRepo
baseurl=http://xxx.xxx.xxx.xxx/myYumRepo # 此行是唯一有区别的地方
enabled=1
gpgcheck=1
gpgkey=file:///root/RPM-GPG-KEY-myYumRepo
注意:公钥应分发给其它所有主机,并都存储在 root 用户的根目录下。