libxml - XML C library for Gnome (though used by more than just Gnome) ChangeLog

HOWTO


# libxml
# ======
# There are several versions of libxml in this HOWTO.
# If you're installing it for something big like all of GNOME,
# it matters which major version you use.
# If you're installing it to be used by an Apache module or
# something specific like that, just make sure that the latest
# libxml2 is supported by it before you pick which one to use
# by going to the next branch down until you have a match.
#
# As this is written, 2.12.6 is the latest, but the latest covered below
# is 2.9.14 which was released in 2022

# Slackware 14.0: libxml2 2.8.0
# Slackware 14.1: libxml2 2.9.1
# Slackware 14.2: libxml2 2.9.4
# Slackware 15.0: libxml2 2.9.12
#
# And be sure to (drink your ovaltine) check 'patches' for updates
#
# MUCH, MUCH older versions of Slackware had a 'libxml' package for
# version 1.8.17

# libxml2 downloads (no longer at ftp.xmlsoft.org)
# http://www.xmlsoft.org/ (old site, redirects to GitLab)
# GitLab libxml2 Releases
# Read-only mirror of GitLab repository at Github
# libxml2 Reference Manual
# Slackware 15.0 libxml2 package source
# https://pkgs.org/search/?q=libxml2

# If you have a libxml (1.x or 2.x) that's installed under /usr/local, cd
# into it's source and run 'make uninstall' (as root) before proceeding
# here.  If you don't have the source, download it, run configure (as shown
# below) and then run 'make uninstall' (as root).  You can also run this to
# remove most files for old versions (and don't forget to remove source and
# tarballs too):
su
find /usr/local/lib -type f -name "libxml2.so.*" -exec rm {} \;
find /usr/lib -type f -name "libxml2.so.*" -exec rm {} \;
find /usr/local/doc -type d -name "libxml2-*" -exec rm -r {} \; 2> /dev/null
find /usr/doc -type d -name "libxml2-*" -exec rm -r {} \; 2> /dev/null
find /usr/share/doc -type d -name "libxml2-*" -exec rm -r {} \; 2> /dev/null
test -d /usr/local/include/libxml2 && rm -r /usr/local/include/libxml2
test -d /usr/include/libxml2 && rm -r /usr/include/libxml2
exit

# Prerequisites (for all versions):
# zlib (optional)
# glibc's iconv or libiconv (optional)
# Python (optional)


# libxml 1.8.17
# =============
# Get the source tarball
cd
test -f installed/libxml-1.8.17.tar.bz2 &&
mv installed/libxml-1.8.17.tar.bz2 .
test ! -f libxml-1.8.17.tar.bz2 &&
wget https://download.gnome.org/sources/libxml/1.8/\
libxml-1.8.17.tar.bz2

# Verify tarball w/ md5sum:
echo "c7d1b9b1cbfcfbbc56c92f424c37d32c  libxml-1.8.17.tar.bz2" | md5sum -c

# Extract the source
mkdir -p -m 0700 ~/src
cd ~/src
find -maxdepth 1 -type d -name "libxml-*" -exec rm -r {} \;
tar xjvf ~/libxml-1.8.17.tar.bz2
cd libxml-1.8.17
test $UID = 0 && chown -R root:root .

# Configure the build for 64-bit
test $(uname -m) = 'x86_64' && ./configure --prefix=/usr --libdir=/usr/lib64

# Configure the build for anything else
test $(uname -m) != 'x86_64' && ./configure --prefix=/usr

# Build it
make

# Become root to install it
su

# Remove the Slackware package, if there is one
test -x /sbin/removepkg && /sbin/removepkg libxml

# Install it
make install
ldconfig

# Become yourself again
exit

# Save the tarball for later
cd
mkdir -p -m 0700 installed
rm -f installed/libxml-*.tar.*
mv libxml-1.8.17.tar.bz2 installed/


# libxml2 2.5.11
# ==============
# Get the source tarball
cd
test -f installed/libxml2-2.5.11.tar.bz2 &&
mv installed/libxml2-2.5.11.tar.bz2 .
test ! -f libxml2-2.5.11.tar.bz2 &&
wget https://download.gnome.org/sources/libxml2/2.5/\
libxml2-2.5.11.tar.bz2

# Verify tarball w/ md5sum:
echo "5b6d9dae5f07f5827e194c69ac1723c1  libxml2-2.5.11.tar.bz2" | md5sum -c

# If you get a complaint (watch for it, it'll blow by) about ./missing being
# too old, you can run 'autoreconf -f -i' before running configure to pretty
# up the autoconf/automake/aclocal files (including ./missing).  This is
# probably not necessary to get things to compile, but if you want
# everything to be peachy, that'll do it.

# If you want to build Python bindings for libxml (if you have Python
# installed), add --with-python to the configure line below.

# Extract the source
mkdir -p -m 0700 ~/src
cd ~/src
find -maxdepth 1 -type d -name "libxml2-*" -exec rm -r {} \;
tar xjvf ~/libxml2-2.5.11.tar.bz2
cd libxml2-2.5.11
test $UID = 0 && chown -R root:root .

# Configure the build for 64-bit
test $(uname -m) = 'x86_64' && ./configure --prefix=/usr --libdir=/usr/lib64

# Configure the build for anything else
test $(uname -m) != 'x86_64' && ./configure --prefix=/usr

# Build it
make

# Test the build
make tests

# Become root to install it
su

# Remove the Slackware package, if there is one
test -x /sbin/removepkg && /sbin/removepkg libxml2

# Remove old docs before installing the new version
find /usr/doc -type d -name "libxml2-*" -exec rm -r {} \; 2> /dev/null

# Install it
make install
ldconfig
ln -sf /usr/include/libxml2/libxml/*.h /usr/include/libxml2/

# Become yourself again
exit

# Save the tarball for later
cd
mkdir -p -m 0700 installed
rm -f installed/libxml2-*.tar.*
mv libxml2-2.5.11.tar.bz2 installed/


# libxml2 2.6.30
# ==============
# libxml2-2.6.30.changes
# libxml2-2.6.30.news

# Get the source tarball
cd
test -f installed/libxml2-2.6.30.tar.bz2 &&
mv installed/libxml2-2.6.30.tar.bz2 .
test ! -f libxml2-2.6.30.tar.bz2 &&
wget https://download.gnome.org/sources/libxml2/2.6/\
libxml2-2.6.30.tar.bz2

# Verify tarball w/ sha256sum:
# (can also use 'cksum -a sha256' or 'openssl sha256')
echo "eeea3a2f5218855a55c0316eb67fc34ca744b5e523864c250ba92ce87ab531\
93  libxml2-2.6.30.tar.bz2" | sha256sum -c

# Extract the source
mkdir -p -m 0700 ~/src
cd ~/src
find -maxdepth 1 -type d -name "libxml2-2.6.*" -exec rm -r {} \;
tar xjvf ~/libxml2-2.6.30.tar.bz2
cd libxml2-2.6.30
test $UID = 0 && chown -R root:root .

# If you want to build Python bindings for libxml (if you have Python
# installed), add --with-python to the configure line.

# Configure the build for 64-bit
test $(uname -m) = 'x86_64' && ./configure --prefix=/usr --libdir=/usr/lib64

# Configure the build for anything else
test $(uname -m) != 'x86_64' && ./configure --prefix=/usr

# Build it
make

# Test it - optional, but recommended
make tests

# Become root to install it
su

# Remove the Slackware package, if there is one
test -x /sbin/removepkg && /sbin/removepkg libxml2

# Remove old docs before installing the new version
find /usr/doc -type d -name "libxml2-*" -exec rm -r {} \; 2> /dev/null

# Install it
make install
ldconfig
ln -sf /usr/include/libxml2/libxml/*.h /usr/include/libxml2/

# Make sure your non-root user can remove the source later
chown -R $(logname) .
chmod -R u+w .

# Become yourself again
exit

# Save the tarball for later
cd
mkdir -p -m 0700 installed
rm -f installed/libxml2-*.tar.*
mv libxml2-2.6.30.tar.bz2 installed/


# libxml2 2.9.14 (2022-05-02)
# ==============
# Prerequisites (for all versions):
# zlib (optional)
# XZ's lzma (optional)
# glibc's iconv or libiconv (optional)
# ICU (optional)
# Python (optional)

# libxml2-2.9.14.changes
# libxml2-2.9.14.news
# GitLab libxml2 Releases libxml2 2.9.14
# [xml] Release of libxml2 2.9.14 (mailing list)

# Get the source tarball
cd
test -f installed/libxml2-2.9.14.tar.xz &&
mv installed/libxml2-2.9.14.tar.xz .
test ! -f libxml2-2.9.14.tar.xz &&
wget https://download.gnome.org/sources/libxml2/2.9/\
libxml2-2.9.14.tar.xz

# Verify tarball w/ sha256sum:
# (can also use 'cksum -a sha256' or 'openssl sha256')
echo "60d74a257d1ccec0475e749cba2f21559e48139efba6ff28224357c7c798df\
ee  libxml2-2.9.14.tar.xz" | sha256sum -c

# Extract the source
mkdir -p -m 0700 ~/src
cd ~/src
find -maxdepth 1 -type d -name "libxml2-2.6.*" -exec rm -r {} \;
tar xJvf ~/libxml2-2.9.14.tar.xz
cd libxml2-2.9.14
test $UID = 0 && chown -R root:root .

# Configure the build for 64-bit
test $(uname -m) = 'x86_64' &&
./configure --prefix=/usr --docdir=/usr/doc/libxml2-2.9.14 \
--libdir=/usr/lib64 --mandir=/usr/man

# Configure the build for anything else
test $(uname -m) != 'x86_64' &&
./configure --prefix=/usr --docdir=/usr/doc/libxml2-2.9.14 \
--mandir=/usr/man

# Build it
make

# Check the build
make check

# Become root to install it
su

# Remove the Slackware package, if there is one
test -x /sbin/removepkg && /sbin/removepkg libxml2

# Remove old docs before installing the new version
test -d /usr/doc/libxml2 && rm -r /usr/doc/libxml2
find /usr/doc -type d -name "libxml2-*" -exec rm -r {} \; 2> /dev/null

## Unless you did 'make uninstall' as root from it's configured source
## directory, there may be old files from previous source-installed
## versions here:
# /usr/bin/ (xml2-config, xmlcatalog, xmllint)
# /usr/doc/libxml/
# /usr/doc/libxml2-?.*/
# /usr/doc/libxml2-python-*/
# /usr/include/libxml2/
# /usr/lib64/cmake/libxml2/
# /usr/lib64/pkgconfig/libxml-2.0.pc
# /usr/lib64/python2.*/site-packages/
# /usr/lib64/python3.*/site-packages/
# /usr/lib64/libxml2.*
# /usr/lib64/xml2Conf.sh
# /usr/man/man1/xml2-config.1.gz
# /usr/man/man1/xmlcatalog.1.gz
# /usr/man/man1/xmllint.1.gz
# /usr/man/man3/libxml.3.gz
# /usr/share/aclocal/libxml.m4
# /usr/share/gtk-doc/html/libxml2/

# Install it
make install
ldconfig

# If you remove the Slackware package libxml2 and install a new one,
# you may need to restart running daemons are linked with libxml2 such as
# Cyrus IMAP's master, imapd, squatter,
# lmtpd, etc.

# If you build something that links with libxml2 and it can not find the
# include files because it is using /usr/include/libxml2/*.h instead of
# /usr/include/libxml2/libxml/*.h, do this:
ln -sf /usr/include/libxml2/libxml/*.h /usr/include/libxml2/

# Make sure your non-root user can remove the source later
chown -R $(logname) .
chmod -R u+w .

# Become yourself again
exit

# Save the tarball for later
cd
mkdir -p -m 0700 installed
rm -f installed/libxml2-*.tar.*
mv libxml2-2.9.14.tar.xz installed/

List of HOWTOs

Web page itself last updated: 2023-12-20 8:06pm (EDT -0400)
HOWTO last updated: 2024-04-04 4:01pm
Copyright © 2001-2024 Jason Englander. All Rights reserved.
[HTML5]