如何在CentOS 5上升级到Subversion 1.5?
我的开发服务器(CentOS 5)正在运行Subversion 1.4.2,我希望将其升级到1.5. 我在网上散布的各种博客和文档中都读到,这可以通过使用RPMForge完成。我遵循了CentOS Wiki上的说明,包括安装yum-priorities并按照指示设置我的优先级(对于核心回购源为1和2,对于RPMForge为20)。
但是,当我尝试运行时:
$ yum info subversion
给我的版本号仍然是1.4.2,状态为已安装。此时,我的另一个选择是从源代码进行编译,但是我想找到一个软件包管理的解决方案,以便将来进行升级。
有什么想法吗?
解决方案
如果我们安装了RPMForge的存储库,那么我们应该能够获得一个不适用于更新软件包?
我们应该在/etc/apt/sources.list.d中看到rpmforge.list,并带有如下一行:
repomd http://apt.sw.be redhat/el$(VERSION)/en/$(ARCH)/dag
我刚刚在干净的CentOS 5安装上进行了测试,并且显示" yum check-update"
subversion.i386 1.5.2-0.1.el5.rf rpmforge subversion-perl.i386 1.5.2-0.1.el5.rf rpmforge
因此,请检查来源列表,然后再次运行check-update。
编辑:糟糕,我的答案丢了一部分。重新添加到上面。
在Dag的存储库中最高可达1.4.6版。
我们可以尝试从Fedora的存储库中尝试一个,也可以耐心等待主要存储库进行升级。
从源代码制作起来很容易,下载源代码包时请阅读INSTALL文件,请记住CentOS可能已经移到了安装文件的位置。 (使用" rpm -ql subversion"查看旧文件的安装位置)。
当v1.5.0发布到存储库时,我们可以像以前一样删除构建版本并使用yum安装。
RPMForge已经以rpmforge.repo的形式存在于/etc/yum.repos.d/中,其内容为:
# Name: RPMforge RPM Repository for Red Hat Enterprise 5 - dag # URL: http://rpmforge.net/ [rpmforge] name = Red Hat Enterprise $releasever - RPMforge.net - dag #baseurl = http://apt.sw.be/redhat/el5/en/$basearch/dag mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge #mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge enabled = 1 protect = 0 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag gpgcheck = 1 priority=20
我在/etc/apt/sources.list.d/rpmforge.list中有确切的一行。
当我运行检查更新时,我得到:
Loading "priorities" plugin Loading "fastestmirror" plugin Loading mirror speeds from cached hostfile * epel: mirror.unl.edu * rpmforge: fr2.rpmfind.net * base: mirrors.portafixe.com * updates: mirrors.portafixe.com * addons: mirrors.portafixe.com * extras: mirrors.portafixe.com 2202 packages excluded due to repository priority protections bzip2.i386 1.0.3-4.el5_2 updates bzip2-devel.i386 1.0.3-4.el5_2 updates bzip2-libs.i386 1.0.3-4.el5_2 updates libxml2.i386 2.6.26-2.1.2.6 updates libxml2-devel.i386 2.6.26-2.1.2.6 updates libxml2-python.i386 2.6.26-2.1.2.6 updates perl.i386 4:5.8.8-15.el5_2.1 updates sos.noarch 1.7-9.2.el5_2.2 updates tzdata.noarch 2008e-1.el5 updates
目前,我还不太担心其他过时的软件包,但是如我们所见,没有可用的Subversion更新。
I'm not overly concerned about the other outdated packages at the moment, but as you can see there is no Subversion update available.
也没有来自rpmforge的任何软件包。这是优先级设置。尝试禁用yum-priorities(将/ etc / yum / pluginconf.d / priorities.conf
中的enabled = 1
更改为enabled = 0
),它应该可以工作。
因此,我想下一个问题是为什么优先级会把它搞砸...。不过,我不确定。
编辑:有关优先级的更多信息,请参见8jean的答案。
我们尝试做的是替换一个"核心"程序包(其中一个是
包含在CentOS存储库中)和来自"第3个
方"存储库(RPMForge),这是优先级插件
旨在防止。
RPMForge存储库包含两个其他软件包,它们在
CentOS,以及较新版本的核心软件包。不幸的是,yum
非常愚蠢,并且总是将软件包更新为最新版本
它可以在任何存储库中找到。因此,使用RPMforge运行" yum update"
启用后,系统的一半将更新为最新的(出血边缘,
可能来自RPMForge的不稳定和不太受支持的软件包)。
因此,建议使用诸如RPMForge之类的存储库的方法是使用它们
仅与yum插件(例如" priorites")一起使用,可以防止
来自"高"优先级存储库的软件包将覆盖"低"优先级存储库的软件包
优先级回购协议(" priority"参数的名称非常
误导)。这样,我们可以节省安装其他软件包(即
(不是核心)),这是大多数人想要的。
现在到原始问题...
如果要替换核心程序包,事情会有些棘手。
基本上,我们有两种选择:
- 卸载优先级插件,并默认禁用RPMForge存储库(在/etc/yum.repos.d/rpmforge.repo中设置`enabled = 0')。然后,我们可以在命令行上有选择地启用它:
yum --enablerepo=rpmforge install subversion
将从RPMForge安装最新的Subversion和依赖项。这种方法的问题在于,如果RPMForge中有对Subversion包的更新,则在禁用存储库时将看不到该更新。为了使Subversion保持最新状态,我们必须记住运行
yum --enablerepo=rpmforge update subversion
时。
- 第二种可能性是使用Priorites插件,但是手动"屏蔽"核心Subversion包(在
/etc/yum.repos.d中的
[base]和
[update]节中添加
exclude = subversion/ CentOS-Base.repo
)。现在,yum的行为就好像核心存储库中没有名为" subversion"的软件包,并愉快地从RPMForge安装最新版本。另外,在运行yum update
时,我们将始终获得最新的Subversion更新。
1.如果我们使用的是yum-priorities,请在文件/ etc / yum / pluginconf.d / priorities.conf
中禁用它
2.检查Subversion的版本
$ rpm -qa|grep subversion subversion-1.4.2-4.el5_3.1 subversion-1.4.2-4.el5_3.1
3.从rpmforge存储库中搜索子版本的最新版本
$ yum --enablerepo=rpmforge check-update subversion subversion.x86_64 1.6.6-0.1.el5.rf rpmforge
4.现在可以使用rpmforge仓库升级Subversion
$ yum shell >erase mod_dav_svn-1.4.2-4.el5_3.1 >erase subversion-1.4.2-4.el5_3.1 >install mod_dav_svn-1.6.6-0.1.el5.rf >install subversion-1.6.6-0.1.el5.rf.x86_64 >run
这就是我在centos 5.4上运行的全部功能
我们需要做的就是获取此脚本。在CentOS 5.3上对我来说非常完美
http://wandisco.com/subversion/os/downloads
不,我不在那儿工作,也没有任何从属关系。。。找到它并想让大家知道。
祝你好运。