如果你是一名 Linux 发行版的用户或者系统管理员,你可能会遇到一个问题:当你需要安装某个软件时,你发现该软件已经提供了 RPM 软件包,但是你需要手动下载并安装。更糟糕的是,当你需要安装该软件的依赖时,你会发现一系列依赖关系形成了,你需要手动下载并安装它们。这将是一个浪费时间和精力的过程。为了解决这个问题,我们需要一个软件仓库来自动下载和管理软件包及其依赖。
我们可以使用 yum
命令来下载和安装 RPM 软件包。如果我们有一个本地的软件仓库,那么我们就可以像使用官方软件仓库一样方便地使用 yum
命令。本文将介绍如何使用 yum
与 Apache 搭建一个本地的软件仓库。
一、安装 Apache
sudo yum install httpd
这将安装 Apache 服务器。安装完成后,我们需要启动 Apache 并设置其启动时自动启动。
sudo systemctl start httpd
sudo systemctl enable httpd
二、准备 Yum Repository 目录
即将创建的软件仓库将在 /var/www/html/yumrepo 目录下。我们需要创建该目录及其子目录。其中,/var/www/html/ 目录是 Apache 的默认文档根目录。
sudo mkdir -p /var/www/html/yumrepo/{packages,metadata,repodata}
这将创建包含三个子目录的 yumrepository 目录,这些子目录分别用于存储 RPM 包,元数据和 repodata。
三、把 RPM 包复制到 yumrepository 目录
我们需要把需要提供给软件仓库的软件包复制到 yumrepository/packages 目录中。在这里,我们以 JDK 8 为例。
sudo cp jdk-8u202-linux-x64.rpm /var/www/html/yumrepo/packages/
四、生成 RPM 包的元数据
我们需要生成 RPM 包的元数据。在 yumrepository/metadata 目录下使用以下命令生成元数据:
sudo cd /var/www/html/yumrepo/
sudo createrepo ./
这将生成元数据并存储在 yumrepository/metadata 目录中。
五、让 Apache 服务器可以提供软件包
我们需要修改 Apache 配置文件,以便使其可以提供软件包。编辑 /etc/httpd/conf/httpd.conf 文件:
sudo vi /etc/httpd/conf/httpd.conf
找到以下行,去掉前面的注释并把“None”改为“Indexes”:
#Options Indexes FollowSymLinks
Options Indexes FollowSymLinks
在 /etc/httpd/conf.d/ 目录下创建一个新的文件 yumrepository.conf:
sudo vi /etc/httpd/conf.d/yumrepository.conf
在其中添加以下内容:
<VirtualHost *:80>
ServerName yumrepository.local
DocumentRoot /var/www/html/
Alias /yumrepo /var/www/html/yumrepo/
<Directory "/var/www/html/yumrepo">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
这会将 yumrepository.local 绑定到 /var/www/html 目录,并用别名 /yumrepo 将软件仓库提供给访问者。
最后,我们重启 Apache 服务器以使配置生效:
sudo systemctl restart httpd
六、测试我们的软件仓库
我们可以使用以下命令(在另一台虚拟机上)测试我们的软件仓库是否可用:
sudo vi /etc/yum.repos.d/yumrepository.repo
将以下内容添加到文件中:
[yumrepository]
name=Local Yum Repository
baseurl=http://yumrepository.local/yumrepo
enabled=1
gpgcheck=0
这将创建一个文件 yumrepository.repo,指向我们的软件仓库。
现在我们可以使用 yum
命令从本地软件仓库安装软件包了。使用以下命令安装 JDK 8(在另一台虚拟机上):
sudo yum install jdk-8u202-linux-x64
现在,你已经成功地搭建了一个本地的软件仓库。当你需要安装软件包时,你可以直接使用 yum
下载并安装。