我在全新的LTS Ubuntu上安装了Stata 18后无法运行:
./stata: 错误加载共享库:libncurses.so.5: 无法打开共享对象文件:没有这样的文件或目录
原来这个包已经过时,被Debian(Ubuntu跟随此做法)移除了。
然而,你可以手动下载那个包。但是,它有更多的依赖:
$ sudo dpkg -i libncurses5_6.2-0ubuntu2.1_i386.deb
(正在读取数据库... 当前安装了403219个文件和目录。)
准备解包libncurses5_6.2-0ubuntu2.1_i386.deb ...
解包libncurses5:i386 (6.2-0ubuntu2.1)...
dpkg: 依赖问题阻止了libncurses5:i386的配置:
libncurses5:i386依赖于libtinfo5 (= 6.2-0ubuntu2.1);然而:
包libtinfo5:i386尚未配置。
libncurses5:i386依赖于libc6 (>= 2.7);然而:
包libc6:i386尚未配置。
再退一步,libc6(也是手动下载的)--这给了我
$ sudo dpkg -i libc6_2.31-0ubuntu9.15_i386.deb
(正在读取数据库... 当前安装了403219个文件和目录。)
准备解包libc6_2.31-0ubuntu9.15_i386.deb ...
解包libc6:i386 (2.31-0ubuntu9.15)...
dpkg: 在处理包libc6:i386 (--install)时出错:
包libc6:i386 2.31-0ubuntu9.15无法配置,因为libc6:amd64的版本不同(2.39-0ubuntu8.1)
在处理时遇到了错误:
libc6:i386
此时,我的理解已经到了极限。
- 我是在错误的方向上努力吗?肯定有一种更方便的方式在当前LTS版本的Ubuntu上安装像Stata18这样的主要软件。
- 如果我在正确的方向上:我该如何安装这些库?
你的做法有些错误,让我来解释一下。你的第一个错误在这里:
你试图安装这个包的
i386
(32位)版本,而Ubuntu(以及大多数其他Linux系统)现在只运行64位(AMD64)。所以首先,清理你尝试安装的
i386
包的混乱局面(有很多现有的问答关于如何移除损坏的包)。对于Ubuntu 24.04来说,正确的包可能是
libncurses6
,可以通过以下命令安装:这里有一些教训需要学习:
i386
包(除非你真的知道自己在做什么)dpkg
手动安装下载的包 - 相反,使用apt
从仓库安装官方包你可能需要自己创建正确的符号链接(从
ncurses5
到ncurses6
),如这里所述。在Ubuntu上,ncurses
库位于/usr/lib/x86_64-linux-gnu/
,如下所示: