如何在具有 libncurses.so.6 的系统上使用 xindy?

如何在具有 libncurses.so.6 的系统上使用 xindy?

我的 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?

我想到两种策略:

  1. xindy从来源编译反对libncurses.so.6

  2. 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)。

相关内容