当前位置: 首页>>技术教程>>正文


创建一个Redhat软件包存储库

, ,

介绍

如果您的Redhat服务器未连接到RHN官方存储库,则需要配置自己的专用存储库,以后可以使用它来安装软件包。创建Redhat存储库的过程非常简单。在本文中,我们将向您展示如何创建本地文件Redhat存储库以及远程HTTP存储库。

使用Redhat官方DVD作为存储库

默认安装后,并且没有将服务器注册到RHN官方存储库中,因此您没有机会从redhat存储库安装新软件包,因为存储库列表将显示0个条目:

# yum repolist
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repolist: 0

此时,最简单的操作是将Redhat安装DVD附加为本地存储库。为此,请首先确保已安装RHEL DVD:

# mount | grep iso9660
/dev/sr0 on /media/RHEL_6.4 x86_64 Disc 1 type iso9660 (ro,nosuid,nodev,uhelper=udisks,uid=500,gid=500,iocharset=utf8,mode=0400,dmode=0500)

目前我们最感兴趣的目录是“/media/RHEL_6.4 x86_64 Disc 1 /repodata”,因为该目录包含有关在此特定DVD光盘上找到的所有软件包的信息。

接下来,我们需要定义指向“/media/RHEL_6.4 x86_64 Disc 1 /通过在/etc/yum.repos.d/中创建一个存储库条目。使用以下命令创建一个新文件:/etc/yum.repos.d/RHEL_6.4_Disc.repovi编辑器并插入以下文本:

[RHEL_6.4_Disc]
name=RHEL_6.4_x86_64_Disc
baseurl="file:///media/RHEL_6.4 x86_64 Disc 1/"
gpgcheck=0

创建文件后,您的本地Redhat DVD存储库应该可以使用了:

# yum repolist
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repo id repo name status
RHEL_6.4_Disc RHEL_6.4_x86_64_Disc 3,648
repolist: 3,648



创建本地文件Redhat存储库

通常,拥有Redhat DVD存储库足以使您入门,但是,唯一的缺点是您无法以任何方式更改存储库,因此无法在其中插入新的/更新的软件包。解决此问题,我们可以创建一个位于文件系统某处的本地文件存储库。为了协助我们制定这项计划,我们将使用createrepo效用。

默认情况下,可能未在系统上安装createrepo:

# yum list installed | grep createrepo
#

没有输出表明此软件包当前在您的系统中不存在。如果您已按照上一节中的有关如何将RHEL官方DVD附加为系统存储库的说明进行安装createrepo包只需执行:

# yum install createrepo

上面的命令将安装createrepo实用程序以及所有先决条件。如果尚未定义存储库,则可以手动安装createrepo:

首先使用已安装的RedHat DVD安装先决条件:

# rpm -hiv /media/RHEL_6.4\ x86_64\ Disc\ 1/Packages/deltarpm-*
# rpm -hiv /media/RHEL_6.4\ x86_64\ Disc\ 1/Packages/python-deltarpm-*

然后安装实际的createrepo软件包:

# rpm -hiv /media/RHEL_6.4\ x86_64\ Disc\ 1/Packages/createrepo-*

如果一切顺利,您应该可以看到系统中安装了createrepo软件包:

# yum list installed | grep createrepo
createrepo.noarch                        0.9.9-17.el6                          installed

在这一阶段,我们准备创建自己的Redhat本地文件存储库。创建一个名为/rhel_repo:

# mkdir /rhel_repo

接下来,将所有软件包从已安装的RHEL DVD复制到新目录:

# cp /media/RHEL_6.4\ x86_64\ Disc\ 1/Packages/* /rhel_repo/

复制完成后,使用单个参数(即新的本地存储库目录名称)执行createrepo命令:

# createrepo /rhel_repo/
Spawning worker 0 with 3648 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

您还可以在任何debian-like Linux系统(例如Debian,Ubuntu或mint)上创建Redhat存储库。除了安装createrepo实用程序外,该过程相同:#apt-get install createrepo



最后一步,我们将创建一个新的yum存储库条目:

# vi /etc/yum.repos.d/rhel_repo.repo
[rhel_repo]
name=RHEL_6.4_x86_64_Local
baseurl="file:///rhel_repo/"
gpgcheck=0

您现在可以访问新的存储库:

# yum repolist
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
rhel_repo | 2.9 kB 00:00 ...
rhel_repo/primary_db | 367 kB 00:00 ...
repo id repo name status
RHEL_6.4_Disc RHEL_6.4_x86_64_Disc 3,648
rhel_repo RHEL_6.4_x86_64_Local 3,648

创建一个远程HTTP Redhat存储库

如果有多个Redhat服务器,则可能需要创建一个Redhat存储库,该存储库可供网络上的所有其他服务器访问。为此,您将需要apache Web服务器。 Apache Web服务器的详细安装和配置超出了本指南的范围,因此,我们假设您的httpd守护程序(Apache webserver)已配置。为了使您的新存储库可以通过http访问,请使用上一节中创建的/rhel_repo /目录配置您的apache为文件根目录或直接将整个目录复制到:/var /www /html /(默认文档根目录)。

然后通过创建新的回购配置文件在客户端系统上创建新的yum存储库条目:

vi /etc/yum.repos.d/rhel_http_repo.repo

具有以下内容,其中我的主机是您的Redhat存储库服务器的IP地址或主机名:

[rhel_repo_http]
name=RHEL_6.4_x86_64_HTTP
baseurl="http://myhost/rhel_repo/"
gpgcheck=0

通过以下方法确认新存储库的正确性:

# yum repolist
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repo id repo name status
rhel_repo_http RHEL_6.4_x86_64_HTTP 3,648
repolist: 3,648

结论

创建自己的软件包存储库可为您提供更多关于如何在Redhat系统上管理软件包的选项,即使没有付费RHN订阅也是如此。使用远程HTTP Redhat存储库时,您可能还希望将GPGCHECK配置为存储库的一部分,以确保在安装之前没有任何软件包被篡改。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10412.html,未经允许,请勿转载。