升级到 18.04 后 Tcl/Tk 程序失败

升级到 18.04 后 Tcl/Tk 程序失败

我在使用 Tcl/Tk 应用程序 redet 和 Ubuntu 18.04 时遇到了问题。我在 17.04 中安装了它,使用 synaptic 以便将其所有依赖项都引入。它在 17.10 中继续工作。升级到 18.04 后,它无法启动并显示以下错误消息。

Error in startup script: can't find package Itcl 3.4
    while executing
"package require Itcl 3.4"
    (file "/usr/share/tcltk/iwidgets4.1.0/iwidgets.tcl" line 18)
    invoked from within
"source /usr/share/tcltk/iwidgets4.1.0/iwidgets.tcl"
    ("package ifneeded Iwidgets 4.1.0" script)
    invoked from within
"package require Iwidgets"
    (file "/usr/bin/redet" line 27)

尽管一切都没有改变,所以我相信所有依赖关系都得到了满足,但我还是尝试在安装了 18.04 的另一台机器上使用 synaptic 安装 redet。所有相同的依赖项都已引入,但当我尝试运行 redet 时,我收到了相同的错误消息。通过 Google 搜索,这个问题过去出现在几个与 Tcl/Tk 相关的留言板上,但没有我能理解的明显解决方案。我在 AskUbuntu 上找到的唯一问题(问:安装 fv 工具时出现问题)没有任何回复。

答案1

我可以在仅安装一个redet软件包的 Ubuntu 18.04 LTS 的全新安装上确认此问题:

$ sudo apt-get install redet

$ redet 
Error in startup script: can't find package Itcl 3.4
    while executing
"package require Itcl 3.4"
    (file "/usr/share/tcltk/iwidgets4.1.0/iwidgets.tcl" line 18)
    invoked from within
"source /usr/share/tcltk/iwidgets4.1.0/iwidgets.tcl"
    ("package ifneeded Iwidgets 4.1.0" script)
    invoked from within
"package require Iwidgets"
    (file "/usr/bin/redet" line 27)

$ dpkg -S /usr/share/tcltk/iwidgets4.1.0/iwidgets.tcl
iwidgets4: /usr/share/tcltk/iwidgets4.1.0/iwidgets.tcl

$ dpkg -S /usr/bin/redet
redet: /usr/bin/redet

$ echo "puts [package req Itcl]" | tclsh
3.4

所以我举报了错误 1768973到启动板。


快速而简单的解决方法是从 Xenial 下载包,安装并固定:

cd ~/Downloads
wget http://mirrors.kernel.org/ubuntu/pool/universe/i/itcl3/itcl3_3.4.3-1_amd64.deb
sudo apt-get install ./itcl3_3.4.3-1_amd64.deb

cat <<EOF | sudo tee /etc/apt/preferences.d/pin-itcl
Package: itcl3
Pin: version 3.4.3-1
Pin-Priority: 1337
EOF

这些操作redet正常启动后:

重新认识 Bionic

相关内容