搭建简易YUM仓库

Submitted by Dot on Wed, 08/21/2013 - 21:47

正是由于仓库的存在,我们才能利用yum轻松地管理软件。 Fedora官方的fedora和update,以及rpmfusion-free都是常用的仓库,但前提是必须联网才能使用。 那么在未联网的情况下该如何获得常用软件并自动解决依赖关系呢?答案就是——自建yum仓库。 yum仓库配置文件集中在/etc/yum.repos.d/里,一个*.repo文件记录一个仓库,比如下面的fedora.repo就是一个典型的配置。

[[email protected] ~]$ cat /etc/yum.repos.d/fedora.repo 
[fedora]
name=Fedora $releasever - $basearch
failovermethod=priority
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch
enabled=1
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

知道了格式,我们就可以照葫芦画瓢了。

一、rpm源

既然是仓库,必须要存有货物啊,yum仓库的库存就是rpm包——很多很多的rpm包。这么多rpm哪里来么?就是安装光盘。Fedora其实就是通过yum方式安装的,所以安装光盘其实就是个yum仓库。 众多的rpm按首字母分组后汇总在光盘根目录下的Packages/里

[[email protected] Dotcra]# mount Fedora-19-x86_64-DVD.iso /media/cdrom/
[[email protected] Dotcra]# exit
exit
[[email protected] ~]$ ls /media/cdrom/
EFI  images  isolinux  LiveOS  Packages  repodata  TRANS.TBL
[[email protected] ~]$ ls /media/cdrom/Packages/
a  c  e  g  i  k  m  o  q  s  TRANS.TBL  v  x  z
b  d  f  h  j  l  n  p  r  t  u          w  y

所以,第一步就是把整个Packages/目录复制到硬盘上,

[[email protected] ~]$ mkdir my-repo.d
[[email protected] ~]$ cp -rv /media/cdrom/Packages/ my-repo.d/

二、创建数据库

从上面ls的结果可以看到光盘根目录下有一个叫repodata/的文件夹,每个仓库必须有一个配套的repodata/文件夹,里面存放了一些文件,就是仓库的数据库。这个repodata/可以通过一个叫做createrepo的工具创建,安装光盘中已包含

[[email protected] ~]$ ls /media/cdrom/Packages/c/createrepo-0.9.9-21.fc19.noarch.rpm 
/media/cdrom/Packages/c/createrepo-0.9.9-21.fc19.noarch.rpm

这么说来,似乎在yum可以使用之前,还需要手动安装createrepo并用其创建repodata/系列文件。

[[email protected] ~]$ rpm -ivh /media/cdrom/Packages/c/createrepo-0.9.9-21.fc19.noarch.rpm

安装createrepo时可能还要手动解决下依赖关系。 创建repodata/

[[email protected] Dotcra]# createrepo -v my-repo.d/

三、创建repo配置文件

[[email protected] Dotcra]# vim /etc/yum.repos.d/mine.repo
[repo-id]
name=reponame
baseurl=file:///home/Dotcra/my-repo.d/
gpgcheck=0

至此,自己的yum的仓库就算搭建成功了。

四、偷偷懒

其实呢,第二步创建数据库可以精简一下——由于光盘根目录下已经有个现成的repodata/了,所以我们完全不用再去createrepo,只需要与Packages/一并复制到硬盘上的同一目录下即可。 你甚至不用把它们复制到硬盘上,只需要把光盘挂载,然后把baseurl改成挂载路径就行了。

[[email protected] Dotcra]# mount Fedora-19-x86_64-DVD.iso /media/cdrom/
[[email protected] Dotcra]# vim /etc/yum.repos.d/mine.repo
[repo-id]
name=reponame
baseurl=file:///media/cdrom/
gpgcheck=0

Add new comment

Plain text

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.