我正在尝试在没有 root 权限的高性能集群上构建 libxml2。
我这样做(首先按照设法使用相同依赖项在同一 HPC 上安装 libxml2 的人的指示加载可能的依赖项,许多/全部可能不是必需的,但它们用于我将运行的其他事情)
module load gcc/10.3.0-gcc-9.4.0 cmake/3.23.1-gcc-10.3.0 openmpi/4.1.3-gcc-10.3.0-python3+-chk-version openblas/0.3.20-gcc-10.3.0 python/3.8.12-gcc-9.4.0
module unload libxml2/2.9.12-gcc-10.3.0 libiconv/1.16-gcc-10.3.0
随后:
wget ftp://xmlsoft.org/libxml2/libxml2-sources-2.9.10.tar.gz
tar -xvzf libxml2-sources-2.9.10.tar.gz libxml2-2.9.10/
cd libxml2-2.9.10/
./configure --prefix=$HOME/install
make
make install
这会产生以下错误:
Making install in python
make[2]: Entering directory '/users/anonymous/libxml2-2.9.10/python'
make install-recursive
make[3]: Entering directory '/users/anonymous/libxml2-2.9.10/python'
Making install in .
make[4]: Entering directory '/users/anonymous/libxml2-2.9.10/python'
make[5]: Entering directory '/users/anonymous/libxml2-2.9.10/python'
make[5]: Nothing to be done for 'install-exec-am'.
/usr/bin/mkdir -p '/users/anonymous/install/share/doc/libxml2-python-2.9.10'
/usr/bin/install -c -m 644 TODO '/users/anonymous/install/share/doc/libxml2-python-2.9.10'
/usr/bin/mkdir -p '/usr/lib/python3/dist-packages'
/usr/bin/install -c -m 644 drv_libxml2.py libxml2.py '/usr/lib/python3/dist-packages'
/usr/bin/install: cannot create regular file '/usr/lib/python3/dist-packages/drv_libxml2.py': Permission denied
/usr/bin/install: cannot create regular file '/usr/lib/python3/dist-packages/libxml2.py': Permission denied
make[5]: *** [Makefile:667: install-dist_pythonDATA] Error 1
make[5]: Leaving directory '/users/anonymous/libxml2-2.9.10/python'
make[4]: *** [Makefile:860: install-am] Error 2
make[4]: Leaving directory '/users/anonymous/libxml2-2.9.10/python'
make[3]: *** [Makefile:694: install-recursive] Error 1
make[3]: Leaving directory '/users/anonymous/libxml2-2.9.10/python'
make[2]: *** [Makefile:854: install] Error 2
make[2]: Leaving directory '/users/anonymous/libxml2-2.9.10/python'
make[1]: *** [Makefile:1479: install-recursive] Error 1
make[1]: Leaving directory '/users/anonymous/libxml2-2.9.10'
make: *** [Makefile:1786: install] Error 2
它试图写入一个目录
/usr/lib/python3/
,即使我指定了不同的前缀目录,我也没有写权限,这似乎很奇怪。
知道我可以做什么来解决这个错误吗?
它试图写入目录 /usr/lib/python3/ 似乎很奇怪,尽管我指定了不同的前缀目录,但我没有写权限。
它很可能尝试在那里写入,因为这是它在构建时找到并使用的 Python 安装的库目录。
假设您不想或不能首先禁用构建 Python 组件,一个相当好的替代方案是将安装到您可写的暂存区域,然后将文件从那里移动到适当的位置。您可以通过为
DESTDIR
指定合适的 make install
变量来完成此操作:
mkdir -p ~/staging
make install DESTDIR=~/staging
然后,您可以(并且应该)将文件和文件夹从
~/staging
移动到 $HOME/install
或其他地方的适当位置。
请注意,
DESTDIR
的用途与 configure's
安装位置选项(例如 --prefix
)的用途不同。它们不可互换。后者指示文件的安装位置,这可能会影响它们的构建方式。 DESTDIR
不影响文件的构建方式,只影响 make install
将文件放置在何处。