[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Installing advanced library versions safely?



On Mon, May 27, 2002 at 04:33:58PM -0400, Dan Muller wrote:
| (Sorry if this appears twice; I submitted it first via news, but I never saw
| it appear. I joined the mailing list in the meantime, so here's a second
| attempt.)

The mail->news gateway is one-way.  The news server might (I don't
know) get 2 copies, but not the mailing list.

| Background: I have a Debian system running potato. I have some experience
| running Linux systems, mostly RedHat, but I'm pretty new to Debian and its
| package management.
| 
| What I'm trying to do: I am trying to set up a Subversion repository (see
| http://subversion.tigris.org) and client. Subversion is still pre-release,
| so it's essential to build it from latest sources. It requires a lot of the
| 'latest stuff' related to Apache in order to work.

Go for it!  Some of the docs on subversion make it sound really nice,
but I'm waiting for it to be stable.

| What I've done so far: A Subversion repository is accessed through a web
| server via webdav, and requires the latest Apache release. So using dselect,
| I uninstalled all Apache-related packages in potato, got the latest Apache
| sources, and built and installed Apache2 from scratch. So far so good.
| 
| What I need to do: I need to build the Subversion client.
| 
| What I'm stuck on: When running configure on the Subversion sources, I'm
| told that I need expat or libxml >= 1.8.3. Neither potato nor woody are up
| to libxml 1.8.3. (I was considering upgrading to woody before I noticed
| this -- not a decision to be taken lightly, since I live behind a modem!)

apt-cache is your friend.  In particular, you want the 'search' and
'policy' directives.  Oh, and upgrade apt and dpkg to woody's version
-- it will make checking package versions much easier.  (I'll comment
more on this later)

What you'll find is :

potato :

    expat : 1.1-1
    libxml1 : 1.8.2-1

woody :

    expat : 1.95.2-6
    libxml1 : 1.8.17-2
    libxml2 :  2.4.19-4

sid :
    expat : 1.95.2-6
    libxml1 : 1.8.17-2
    libxml2 : 2.4.20-1


Unlike rpm, dpkg won't allow 2 packages of the same name to be
installed.  Since libxml incompatibly changed between version 1 and
version 2, the maintainer has choosen to provide one package for each
so that libxml1 and libxml2 apps can both exist on the same system.

| (And finally...) My questions: What's the best way to go about getting and
| installing libxml 1.8.3 or greater,

If you want to try (no guarantees) then use the 'apt-get source'
functionality.

First, run this with your sources.list pointing at potato.  It will
ensure that you have all the build tools and any other build
dependencies for building (potato's version of) libxml1.

    # apt-get build-deps libxml1

Then point apt at woody, and run this :
    # apt-get update
    # apt-get install apt dpkg perl apt-utils  fakeroot  # explaination below
    # apt-get source libxml1

Then you'll have the source of libxml in the current directory.  As an
ordinary user run
    $ cd libxml1-<version>
    $ fakeroot ./debian/rules

and then as root
    # dpkg -i ../libxml1_<...>.deb


All debian packages are available in source form as well as binary
form.  The structure is to have a 'debian' directory in every source
package, and a 'rules' file which is a Makefile for building the
package.  The fakeroot program creates a fake root environment.  It is
used to fool the devel tools into thinking they have root permission,
and thus they will create the files with the correct ownership before
putting them in the package.

As for woody's apt, it is much improved over potato's apt.  One of the
features that was added is "preferences".  Woody's apt allows you to
include multiple releases in your sources.list (eg both stable and
testing) and then give them a priority in the preferences file.

A suitable preferences file for you would be :

Package: *
Pin: release a=stable
Pin-Priority: 500


Package: *
Pin: release a=testing
Pin-Priority: 95

Package: *
Pin: release a=unstable
Pin-Priority: 90


The total ordering here is
    stable (500)
    currently installed package (100)
    testing (95)
    unstable (90)

This means that your apt cache will know about the versions of
packages in all the releases mentioned in your sources.list file, but
an 'apt-get upgrade' or an 'apt-get install' will choose the version
from "stable" first, and will never automatically choose one from
testing or unstable.  You can explicitly request a package from one of
those releases like this :
    # apt-get install libxml2/testing

Note that you will need to upgrade your perl version for the new apt
and dpkg to work correctly.  I don't know the details of why, though. 

HTH,
-D

-- 

Pride only breeds quarrels,
but wisdom is found in those who take advice.
        Proverbs 13:10
 
GnuPG key : http://dman.ddts.net/~dman/public_key.gpg

Attachment: pgpMkhYmx3TPW.pgp
Description: PGP signature


Reply to: