当我最近从 22.10 升级到 Ubuntu 23.04 时,我无法启动 Emacs(我使用的是 Doom Emacs)。在终端中我收到以下消息:
emacs:加载共享库时出错:libtiff.so.5:无法打开共享对象文件:没有此文件或目录
请注意,在 22.10 下,我已构建并安装了 Emacs 28.2。我曾尝试简单地安装 Emacs 28.2(现在已为 Ubuntu 23.04 打包),但不起作用。我还尝试按照某人的建议在 libtiff.so.5 和 libtiff.so.6 之间创建符号链接(现在找不到链接),但这同样没有改变任何东西。
我是否需要在 23.04 下重建并重新安装 Emacs,还是应该完全删除现有的 Emacs 和 Doom 并使用 apt-get 重新安装?或者我应该做其他什么?
我是一个新手,正在玩一些我不太了解的东西,所以非常感谢您的帮助。
答案1
我认为 Ubuntu 23.04 附带了libtiff.so.6
;通过查看来仔细检查这是否正确/usr/lib/x86_64-linux-gnu
。
如果 Emacs 在 libtiff 中使用的特定 API 没有改变,那么您可以通过创建名为 的符号链接来欺骗libtiff.so.5
Emacs libtiff.so.6
。
运行/usr/lib/x86_64-linux-gnu
类似的sudo ln -s libtiff.so.6 libtiff.so.5
。
答案2
注意:此解决方案不适用于 Doom Emacs,可能属于更普遍的问题,但这解决了我的 emacs 升级错误,该错误抱怨 libtiff.so.5:
哇!我针对 emacs-gtk 进行了升级,遇到了这个错误。应用可接受的解决方案,证明这个错误只是冰山一角。所以我这样做了:
- 通过 apt-get purge emacs 删除 emacs*
- 删除 emacs 代码完成中出现的所有可执行文件。
- 从源代码下载、编译和安装 emacs。
我很少下载任何 emacs Debian 包,但是上次安装 emacs-gtk 时我进行了匆忙的安装。
很久以前,我创建了一个例程来编译 emacs,因为它可以使 emacs 自动帮助显示相应的源代码,即使是 C。
zDir=$(dirname -- "${BASH_SOURCE[0]}")
zSource="$zDir/emacs"
if [[ -d "$zSource" ]]; then
cd "$zSource"
git pull --rebase # should I use --rebase?
else
cd "$zDir" || exit 1
git clone https://salsa.debian.org/rlb/deb-emacs.git "$zSource"
cd "$zSource" || exit 1
fi
# emacs is deeply connected to x
sudo apt-get -y build-dep emacs-gtk
./autogen.sh # create configure+x according to configure.ac
./configure # create Makefile according to Makefile.in
# existing files are not removed by git pull pull --rebase
# make clean does not remove old .elc files which will case make to fail
# find "$zSource" -name '*.elc' -exec sudo rm '{}' +
make
sudo make install # did this instead of make-dist and it worked
cd -