我的 GNU/Linux 系统 (Arch) 现在有libncurses.so.6
而不是libncurses.so.5
。但我有上游的 vanilla TeX Live (已完全更新) 并且xindy
想要libncurses.so.5
:
xindy --version
产生以下错误
xindy release: 2.5.1
xindy script version: 1.18
/usr/local/texlive/bin/xindy.run: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
并且ldd
可以确认问题:
ldd /usr/local/texlive/bin/xindy.run
给出
linux-vdso.so.1 (0x00007ffc07997000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007fab4d1b1000)
libcrypt.so.1 => /usr/lib/libcrypt.so.1 (0x00007fab4cf79000)
libncurses.so.5 => not found
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fab4cd75000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fab4c9d1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fab4d4af000)
如何xindy
在不改变操作系统的情况下使用原始 TeX Live?
我想到两种策略:
xindy
从来源编译反对libncurses.so.6
;libncurses.so.5
同时编译并安装libncurses.so.6
。
选项 (2) 可能不可靠,也可能没问题,具体取决于细节。我怀疑它对于这个库来说可能不可靠,只是因为没有适用于旧版本库的软件包,这可能意味着安装这两个库时存在问题。此外,由于其他所有内容都是针对新版本编译的,我不确定这是否足够xindy
。
选项 (1) 我不知道。我不知道这是否可行,或者实际上,源代码在哪里,或者编译它们可能需要什么。(我不认为有任何可能在某处有预编译的二进制文件?但这可能是希望太多了 ;)。)
最可行的做法是什么?
答案1
我不知道这是否是一个答案。至少,这是一个解决方法。
这是 Arch Linux 所特有的。如果有需要,它可能会针对其他系统进行修改,但目前我还不知道这一点。(我的其他系统运行 Fedora,目前没有问题。)
在 Arch Linux 上,你可以安装 AUR 包ncurses5-compat-libs
。据我了解,这是使用与主 reponcurses
包相同主版本的源:
ncurses5-compat-libs
:
Repository : aur
Name : ncurses5-compat-libs
Version : 6.0-2
URL : http://invisible-island.net/ncurses/ncurses.html
AUR Page : https://aur.archlinux.org/packages/ncurses5-compat-libs
Depends On : glibc gcc-libs sh
License : MIT
Votes : 82
Popularity : 35.48
Out of Date : No
Maintainer : Barthalion
Submitted : Dydd Gwener 18 mis Medi 2015 22:03:12 BST
Last Modified : Dydd Gwener 18 mis Medi 2015 22:03:12 BST
Description : System V Release 4.0 curses emulation library, ABI 5
ncurses
:
Repository : core
Name : ncurses
Version : 6.0-3
Description : System V Release 4.0 curses emulation library
Architecture : x86_64
URL : http://invisible-island.net/ncurses/ncurses.html
Licences : MIT
Groups : None
Provides : libncurses++w.so=6-64 libformw.so=6-64 libmenuw.so=6-64 libpanelw.so=6-64 libncursesw.so=6-64
Depends On : glibc gcc-libs
Optional Deps : None
Conflicts With : None
Replaces : None
Download Size : 1007.14 KiB
Installed Size : 3407.00 KiB
Packager : Evangelos Foutras <[email protected]>
Build Date : Dydd Mawrth 15 mis Medi 2015 04:47:59 BST
Validated By : MD5 Sum SHA256 Sum Signature
我认为,区别在于软件包的构建方式:
ncurses5-compat-libs
包括PKGBUILD
以下代码:
build() {
cd $_pkgname-${pkgver/_/-}
./configure --prefix=/usr --mandir=/usr/share/man \
--with-shared --with-normal --without-debug --without-ada \
--enable-widec --enable-pc-files --with-cxx-binding --with-cxx-shared \
--with-abi-version=5
make
}
而ncurse
使用PKGBUILD
这个代码:
build() {
cd $pkgname-${pkgver/_/-}
./configure --prefix=/usr --mandir=/usr/share/man \
--with-shared --with-normal --without-debug --without-ada \
--enable-widec --enable-pc-files --with-cxx-binding --with-cxx-shared \
--enable-ext-colors --enable-ext-mouse
make
}
因此,我假设是--with-abi-version=5
这里的关键,并且此选项可以确保libncursesw.so.5
构建而不是libncursesw.so.6
。(libncurses.so.5
和分别libncurses.so.6
只是指向libncursesw.so.5
和的符号链接libncursesw.so.6
,我认为它们在终端上支持“宽”字符以获得更好的国际支持)。
还有一个 AUR 包,提供所提供的库的 32 位版本libncurses5-compat-libs
(即5
主 repo 提供的库的版本lib32-ncurses
)。