Fedora 下采用 Yum 管理 RPM 之间的依赖, 同时可以从 Repositories 端解析到合适的 RPM 依赖包,使得我们安装软件非常的方便。 很多 Linux 下的软件发布都会考虑发布一个 Yum 的 repo 文件, 让用户更加方便的安装。 本文先介绍客户机如何使用第三方的 repo 文件, 最后介绍下如何创建自己的 yum repository。
我们以 virtualbox 为例, Oracle 为 virtualbox 发布提供了 repo 文件, 地址在:
http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
首先,我们切换到 root 用户:
[lgao@lgao ~]$ su - Password:
然后, 到 /etc/yum.repos.d/ 目录下, virtualbox.repo 文件 downlod 下来:
[root@lgao ~]# cd /etc/yum.repos.d/ [root@lgao yum.repos.d]# wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo --2012-06-26 15:03:13-- http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo Resolving download.virtualbox.org... 137.254.16.69 Connecting to download.virtualbox.org|137.254.16.69|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 238 [text/plain] Saving to: “virtualbox.repo” 100%[==============================================================>] 238 --.-K/s in 0s 2012-06-26 15:03:14 (17.7 MB/s) - “virtualbox.repo” saved [238/238]
之后, 我们可以采用 yum install VirtualBox 了:
从上面的输出我们看到, 这个 VirtualBox-4.1 的来源 Repository 是: virtualbox。 我们来细看下 virtualbox.repo 文件内容:
[root@lgao yum.repos.d]# cat virtualbox.repo [virtualbox] name=Fedora $releasever - $basearch - VirtualBox baseurl=http://download.virtualbox.org/virtualbox/rpm/fedora/$releasever/$basearch enabled=1 gpgcheck=1 gpgkey=http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc
其中:
我们已经知道了如何使用第三方的 repo, 那么怎么创建自己的 yum repository 呢。我们从上一篇博客 中知道了如何创建一个 RPM 包, 我们就用这个 RPM 来演示下如何创建自己的 yum repository。
第一步, 选定 yum repository 的 base 地址
[lgao@lgao ~]$ mkdir -p yum_repo/Packages
我们选定 ~/yum_repo 作为 base 地址, 然后在里面创建一个 Packages 文件夹(可选,且文件夹名称随意)。
第二步, copy helloworld RPM 到 Packages 目录:
[lgao@lgao ~]$ tree yum_repo/ yum_repo/ `-- Packages `-- helloworld-1.0.0-1.fc16.i386.rpm
这就是我们的目录结构。当然也可以简单的将 rpm 文件放在 ~/yum_repo 目录下。
第三步,到 ~/yum_repo 目录下, 运行 createrepo 命令创建 yum repository:
[lgao@lgao ~]$ cd yum_repo/ [lgao@lgao yum_repo]$ createrepo . Spawning worker 0 with 1 pkgs Workers Finished Gathering worker results Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete
到这里为止, 我们的 yum repository 就创建好了。 如果你的机器里没有 createrepo 命令, 那么请使用:
[lgao@lgao yum_repo]$ sudo yum install createrepo
来安装。
第四步, 创建 helloworld.repo 文件:
[helloworld] name=Hello World baseurl=file:///home/lgao/yum_repo enabled=1 gpgcheck=0
把 hello.repo 文件放在 /etc/yum.repos.d/ 下, 运行:
我们运行下 helloworld :
[root@lgao yum.repos.d]# helloworld Hello World!
接下来我们看看如何在 yum repository 里升级 helloworld。
生成 helloworld-1.0.1-1.fc16.i386.rpm, 放进 ~/yum_repo/Packages 目录下, 删除 helloworld-1.0.0-1.fc16.i386.rpm, 重新执行 createrepo 命令:
[lgao@lgao yum_repo]$ createrepo . Spawning worker 0 with 1 pkgs Workers Finished Gathering worker results Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete
然后执行:
[root@lgao yum.repos.d]# yum clean all Loaded plugins: langpacks, presto, refresh-packagekit Cleaning repos: helloworld:virtualbox Cleaning up Everything No delta-package files removed by presto
之后, 再次运行
yum install helloworld
系统会提示有新版本 helloworld,将进行 update。
之后我们再次运行 helloworld:
[root@lgao yum.repos.d]# helloworld Hello World in New Version!
我们发现 helloworld 已经更新了。
通过发布一个 repo 文件来发布一套软件让软件安装更加方便,同时也避免了最终用户安装时找不到依赖的问题。 希望越来越多的软件发布采用更加人性化的技术。