Introduction to libxml2
The libxml2 package contains
libraries and utilities used for parsing XML files.
This package is known to build and work properly using an LFS-10.1
platform.
Package Information
Additional Downloads
libxml2 Dependencies
Optional
Python-2.7.18
Note
Some packages which utilize libxml2 (such as GNOME Doc Utils) need the Python3 module installed to function
properly and some packages will not build properly if the
Python3 module is not available.
The old Python2 module can be
built after libxml2.so
has been
installed, see Python2 libxml2-2.9.10
module.
Optional
ICU-68.2 (see
below) and Valgrind-3.16.1 (may be used in the tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libxml2
Installation of libxml2
Apply a patch to fix various errors:
patch -p1 -i ../libxml2-2.9.10-security_fixes-1.patch
First fix a problem generating the Python3 module with Python-3.9.0
and later:
sed -i '/if Py/{s/Py/(Py/;s/)/))/}' python/{types.c,libxml.c}
If you are going to run the tests, disable one test that causes the
Python tests to terminate early with an error:
sed -i 's/test.test/#&/' python/tests/tstLastError.py
If, and only if, you are using ICU-68.2, fix a build breakage caused by that
version by running the following command:
sed -i 's/ TRUE/ true/' encoding.c
Install libxml2 by running the
following commands:
./configure --prefix=/usr \
--disable-static \
--with-history \
--with-python=/usr/bin/python3 &&
make
If you downloaded the testsuite, issue the following command:
tar xf ../xmlts20130923.tar.gz
To test the results, issue: make
check > check.log. A summary of the results can
be obtained with grep -E
'^Total|expected' check.log. If Valgrind-3.16.1 is
installed and you want to check memory leaks, replace check with check-valgrind.
Note
The tests use http://localhost/ to test parsing of
external entities. If the machine where you run the tests serves
as a web site, the tests may hang, depending on the content of
the file served. It is therefore recommended to shut down the
server during the tests, as the root
user:
/etc/init.d/httpd stop
Now, as the root
user:
make install
Command Explanations
--disable-static
: This
switch prevents installation of static versions of the libraries.
--with-history
: This switch
enables Readline support when
running xmlcatalog or
xmllint in shell
mode.
--with-python=/usr/bin/python3
:
Allows building the libxml2 module with Python3 instead of Python2.
--with-icu
: Add this switch if you have
built ICU-68.2, for better unicode support.
--with-threads
: Add this switch to
enable multithread support.