Skip Navigation

Installing a Newer libxml2 on Mac OS X 10.5

By Robert Crews

Mac OS X 10.5 ("Leopard") includes libxml2 2.6.16 and libxslt 1.1.12. Some programs require newer versions, such as PostgreSQL, which requires libxml2 2.6.23 or later. This procedure describes how to add a newer version of these libraries to your system without disturbing the preinstalled versions already present. This allows you to use the newer versions as needed while allowing other software to continue using the older versions as intended. I wrote these instructions as I added libxml2 2.6.30 and libxslt 1.1.22 to my system.

You will need /usr/local/bin, /usr/local/include, and /usr/local/lib created and added to your environment before adding a newer libxml2 to your system. Here is one way to do it:

#!/bin/bash
sudo mkdir -p /usr/local/bin
sudo mkdir -p /usr/local/include
sudo mkdir -p /usr/local/lib
sudo mkdir -p /usr/local/man/man1
sudo mkdir -p /usr/local/man/man3
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bash_profile
echo 'export MANPATH=/usr/local/man:$MANPATH' >> ~/.bash_profile
source ~/.bash_profile

To install a newer libxml2 on Mac OS X 10.5:

  1. Download the compressed disk image for Mac OS X 10.5 from http://www.explain.com.au/oss/libxml2xslt.html (which is linked to from the Downloads link from the libxml2 home page).
  2. Mount the disk image and drag libxml.framework, libxslt.framework, and libexslt.framework to /Library/Frameworks.
  3. Drag xmllint, xsltproc, and xmlcatalog to /usr/local/bin. Depending on the privileges you set on /usr/local/bin, you might need to authenticate to complete the drag.
  4. Create links in /usr/local to the config scripts, the dynamic libraries, and the headers in the frameworks you just added. The script I used is below. You should check the details against the exact files in the frameworks you copied to /Library/Frameworks.
    #!/bin/bash
    sudo mkdir -p /usr/local/bin
    cd /usr/local/bin
    ln -s /Library/Frameworks/libxml.framework/Resources/Scripts/xml2-config
    ln -s /Library/Frameworks/libxslt.framework/Resources/Scripts/xslt-config
    
    sudo mkdir -p /usr/local/include
    cd /usr/local/include
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/DOCBparser.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/HTMLparser.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/HTMLtree.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/SAX.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/SAX2.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/c14n.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/catalog.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/chvalid.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/debugXML.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/dict.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/encoding.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/entities.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/globals.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/hash.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/list.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/nanoftp.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/nanohttp.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/parser.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/parserInternals.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/pattern.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/relaxng.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/schemasInternals.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/schematron.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/threads.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/tree.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/trio.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/triodef.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/trionan.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/triop.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/triostr.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/uri.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/valid.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xinclude.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xlink.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlIO.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlautomata.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlerror.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlexports.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlmemory.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlmodule.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlreader.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlregexp.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlsave.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlschemas.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlschemastypes.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlstring.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlunicode.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlversion.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xmlwriter.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xpath.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xpathInternals.h
    sudo ln -s /Library/Frameworks/libxml.framework/Headers/xpointer.h
    
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/attributes.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/documents.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/extensions.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/extra.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/functions.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/imports.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/keys.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/libxslt.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/namespaces.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/numbersInternals.h
    #sudo ln -s /Library/Frameworks/libxslt.framework/Headers/pattern.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/preproc.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/security.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/templates.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/transform.h
    #sudo ln -s /Library/Frameworks/libxslt.framework/Headers/trio.h
    #sudo ln -s /Library/Frameworks/libxslt.framework/Headers/triodef.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/variables.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/win32config.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/xslt.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/xsltInternals.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/xsltconfig.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/xsltexports.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/xsltutils.h
    sudo ln -s /Library/Frameworks/libxslt.framework/Headers/xsltwin32config.h
    
    sudo ln -s /Library/Frameworks/libexslt.framework/Headers/exslt.h
    sudo ln -s /Library/Frameworks/libexslt.framework/Headers/exsltconfig.h
    sudo ln -s /Library/Frameworks/libexslt.framework/Headers/exsltexports.h
    sudo ln -s /Library/Frameworks/libexslt.framework/Headers/libexslt.h
    
    mkdir -p /usr/local/lib
    cd /usr/local/lib
    sudo ln -s /Library/Frameworks/libxml.framework/libxml libxml2.dylib
    sudo ln -s /Library/Frameworks/libxslt.framework/libxslt libxslt.dylib
    sudo ln -s /Library/Frameworks/libexslt.framework/libxslt libexslt.dylib