Installing Subversion – Fixing Missing Dependency: perl(URI)

Without a doubt, the Missing Dependency: perl(URI) error is the most annoying error to run into when doing a quick, so-called painless yum install of subversion. We use subversion here to handle all our source code and when rolling that code out to new servers. So it’s pretty important that all our Linux servers (all running CentOS) are equipped with subversion. But time and time again, I was running into this problem and finally, through many Google searches, and compiling tips from a variety of sites, found a method that works for us here. Hopefully it works for you too.

First, let me show you the exact problem. When you do a yum install subversion, you get something like this:

# yum install subversion

Setting up Install Process
Setting up repositories
update 100% |=========================| 951 B 00:00
base 100% |=========================| 1.1 kB 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
Excluding Packages in global exclude list
Finished
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Package subversion.i386 0:1.1.4-2.ent set to be updated
--> Running transaction check
--> Processing Dependency: libneon.so.24 for package: subversion
--> Processing Dependency: libswigpy.so.0 for package: subversion
--> Processing Dependency: perl(URI) >= 1.17 for package: subversion
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Package neon.i386 0:0.24.7-4 set to be updated
---> Package swig.i386 0:1.3.21-6 set to be updated
--> Running transaction check
--> Processing Dependency: perl(URI) >= 1.17 for package: subversion
--> Processing Dependency: libqthreads.so.12 for package: swig
--> Processing Dependency: libguile.so.12 for package: swig
--> Processing Dependency: libguile-ltdl.so.1 for package: swig
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Package guile.i386 5:1.6.4-14 set to be updated
--> Running transaction check
--> Processing Dependency: perl(URI) >= 1.17 for package: subversion
--> Processing Dependency: umb-scheme >= 3.2-21 for package: guile
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Package umb-scheme.i386 0:3.2-36.EL4 set to be updated
--> Running transaction check
--> Processing Dependency: perl(URI) >= 1.17 for package: subversion
--> Finished Dependency Resolution
Error: Missing Dependency: perl(URI) >= 1.17 is needed by package subversion

And instead of yum being smart enough to find that dependency, it just ends. That’s it. There ain’t no more. And no search, upgrade or gentle persuasion will change it’s mind. So, first we get the annoying dependency that it refuses to get:

# wget http://rpmfind.net/linux/fedora/releases/7/Everything/x86_64/os/Fedora/perl-URI-1.35-3.noarch.rpm
--10:20:17--  http://rpmfind.net/linux/fedora/releases/7/Everything/x86_64/os/Fedora/perl-URI-1.35-3.noarch.rpm
Resolving rpmfind.net... 194.199.20.114, 195.220.108.108
Connecting to rpmfind.net|194.199.20.114|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 118607 (116K) [application/x-rpm]
Saving to: `perl-URI-1.35-3.noarch.rpm'

100%[= ... ============================>] 118,607      214K/s   in 0.5s   

10:20:18 (214 KB/s) - `perl-URI-1.35-3.noarch.rpm' saved [118607/118607]

That version works for CentOS 5, which is what we use. If you have another version, just find the RPM from rpmfind.net. Once that’s downloaded, you just rpm install it:

# rpm -i perl-URI-1.35-3.noarch.rpm
/etc/selinux/targeted/contexts/files/file_contexts: Multiple same specifications for /usr/local/lost+found/.*.
/etc/selinux/targeted/contexts/files/file_contexts: Multiple same specifications for /usr/local/.journal.
/etc/selinux/targeted/contexts/files/file_contexts: Multiple same specifications for /usr/local/lost+found.
warning: perl-URI-1.35-3.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2

The warning doesn’t affect anything that I can tell, so it’s installed and we are now ready to install subversion through yum again!

# yum install subversion
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * base: mirror.trouble-free.net
 * updates: www.gtlib.gatech.edu
 * addons: mirror.trouble-free.net
 * extras: mirror.trouble-free.net
Excluding Packages in global exclude list
Finished
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package subversion.i386 0:1.4.2-2.el5 set to be updated
--> Processing Dependency: libneon.so.25 for package: subversion
--> Processing Dependency: libapr-1.so.0 for package: subversion
--> Processing Dependency: libaprutil-1.so.0 for package: subversion
--> Running transaction check
---> Package apr-util.i386 0:1.2.7-7.el5 set to be updated
--> Processing Dependency: libpq.so.4 for package: apr-util
---> Package neon.i386 0:0.25.5-5.1 set to be updated
---> Package apr.i386 0:1.2.7-11 set to be updated
--> Running transaction check
---> Package postgresql-libs.i386 0:8.1.11-1.el5_1.1 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size 
=============================================================================
Installing:
 subversion              i386       1.4.2-2.el5      base              2.3 M
Installing for dependencies:
 apr                     i386       1.2.7-11         base              122 k
 apr-util                i386       1.2.7-7.el5      base               76 k
 neon                    i386       0.25.5-5.1       base               95 k
 postgresql-libs         i386       8.1.11-1.el5_1.1  base              196 k

Transaction Summary
=============================================================================
Install      5 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         

Total download size: 2.8 M
Is this ok [y/N]: y
Downloading Packages:
(1/5): apr-1.2.7-11.i386. 100% |=========================| 122 kB    00:00     
(2/5): neon-0.25.5-5.1.i3 100% |=========================|  95 kB    00:00     
(3/5): apr-util-1.2.7-7.e 100% |=========================|  76 kB    00:00     
(4/5): subversion-1.4.2-2 100% |=========================| 2.3 MB    00:01     
(5/5): postgresql-libs-8. 100% |=========================| 196 kB    00:00     
...
  Installing: apr                          ######################### [1/5] 
  Installing: neon                         ######################### [2/5] 
  Installing: postgresql-libs              ######################### [3/5] 
  Installing: apr-util                     ######################### [4/5] 
  Installing: subversion                   ######################### [5/5] 

Installed: subversion.i386 0:1.4.2-2.el5
...
Complete!

And we are done! subversion is installed in spite of yum’s inability to find the appropriate rpms!

14 thoughts on “Installing Subversion – Fixing Missing Dependency: perl(URI)
  1. Thanks, Alex! Seems like RPMFind moved my file! I used the HTTP site because of some firewall issues with our network, so I guess I will have to refind it, but thank you for posting a valid FTP link.

  2. I ran

    wget ftp://fr2.rpmfind.net/linux/dag/redhat/el2.1/en/i386/dag/RPMS/perl-URI-1.17-1.el2.rf.noarch.rpm

    it returns

    21:40:20 (864.72 KB/s) – `perl-URI-1.17-1.el2.rf.noarch.rpm’ saved [94140]

    then I ran

    yum install subversion

    but it still returns

    –> Missing Dependency: perl(URI) >= 1.17 is needed by package subversion-1.4.2-4.el5.i386 (base)
    subversion-1.5.6-0.2.el5.rf.x86_64 from dag has depsolving problems
    –> Missing Dependency: perl(URI) >= 1.17 is needed by package subversion-1.5.6-0.2.el5.rf.x86_64 (dag)
    Error: Missing Dependency: perl(URI) >= 1.17 is needed by package subversion-1.5.6-0.2.el5.rf.x86_64 (dag)
    Error: Missing Dependency: perl(URI) >= 1.17 is needed by package subversion-1.4.2-4.el5.i386 (base)

    Any idea what I might be doing wrong

    Thnx
    Bart

  3. Sorry, forgot to mention. I also ran

    rpm perl-URI-1.17-1.el2.rf.noarch.rpm

    before trying to install subversion

    but it just returns info

    RPM version 4.4.2.3
    Copyright (C) 1998-2002 – Red Hat, Inc.
    This program may be freely redistributed under the terms of the GNU GPL

    Usage: rpm [-aKfgpWHqV] [-aKfgpWHqVcdils] [-aKfgpWHqVcdilsaKfgpWHqV] [-aKfgpWHqVcdilsaKfgpWHqV] [-aKfgpWHqVcdilsaKfgpWHqV] [-aKfgpWHqVcdilsaKfgpWHqVK] [-aKfgpWHqVcdilsaKfgpWHqVK] [-aKfgpWHqVcdilsaKfgpWHqVKi] [-aKfgpWHqVcdilsaKfgpWHqVKiv] [-aKfgpWHqVcdilsaKfgpWHqVKiv] [-aKfgpWHqVcdilsaKfgpWHqVKiv?] [-a|–all] [-f|–file] [-g|–group]
    [-p|–package] [-W|–ftswalk] [–pkgid] [–hdrid] [–fileid]
    [–specfile] [–triggeredby] [–whatrequires] [–whatprovides]
    [–nomanifest] [-c|–configfiles] [-d|–docfiles] [–dump] [-l|–list]
    [–queryformat=QUERYFORMAT] [-s|–state] [–nomd5] [–nofiles]
    [–nodeps] [–noscript] [–comfollow] [–logical] [–nochdir]
    [–nostat] [–physical] [–seedot] [–xdev] [–whiteout]
    [–addsign] [-K|–checksig] [–delsign] [–import] [–resign]
    [–nodigest] [–nosignature] [–initdb] [–rebuilddb] [–aid]
    [–allfiles] [–allmatches] [–badreloc] [-e|–erase +]
    [–excludedocs] [–excludepath=] [–fileconflicts] [–force]
    [-F|–freshen +] [-h|–hash] [–ignorearch] [–ignoreos]
    [–ignoresize] [-i|–install] [–justdb] [–nodeps] [–nomd5]
    [–nocontexts] [–noorder] [–nosuggest] [–noscripts]
    [–notriggers] [–oldpackage] [–percent] [–prefix=]
    [–relocate==] [–repackage] [–replacefiles]
    [–replacepkgs] [–test] [-U|–upgrade +] [–quiet]
    [-D|–define ‘MACRO EXPR’] [-E|–eval ‘EXPR’] [–macros=]
    [–nodigest] [–nosignature] [–rcfile=] [-r|–root ROOT]
    [–querytags] [–showrc] [–quiet] [-v|–verbose] [–version]
    [-?|–help] [–usage] [–scripts] [–setperms] [–setugids]
    [–conflicts] [–obsoletes] [–provides] [–requires] [–info]
    [–changelog] [–xml] [–triggers] [–last] [–dupes]
    [–filesbypkg] [–fileclass] [–filecolor] [–filecontext]
    [–fscontext] [–recontext] [–fileprovide] [–filerequire]
    [–redhatprovides] [–redhatrequires] [–buildpolicy=]
    [–with=] [–without=]

    • Yeah, Bart, you have to specify the -i parameter on the RPM command so it knows you want to install it, like so: rpm -i perl-URI-1.35-3.noarch.rpm

      Do that and it should work, then run the yum install.

  4. Pingback: apocryph.org » How to Install Subversion on FH CentOS 5 (it should be easy, but isn’t)

  5. I had the same exact problem. It seems yum itself specifically excludes perl* from installing. There is a file that holds this exclusion at /etc/yum.conf. I just removed the perl* part and it installed everything, including dependencies, without a hitch.

Leave a Reply