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]](../images/note.png) 
          
            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]](../images/note.png) 
          
            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.