web-dev-qa-db-ja.com

18.04へのアップグレード後にTcl / Tkプログラムが失敗する

Tcl/Tkアプリケーション、redet、およびUbuntu 18.04に問題があります。すべての依存関係が取り込まれるように、シナプスを使用して17.04にインストールしました。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がインストールされている別のマシンにredetをインストールしようとしました。すべての同じ依存関係が取り込まれましたが、redetを実行しようとしたときに同じエラーメッセージが表示されました。グーグルでは、この問題は過去にTcl/Tkに関連するいくつかのメッセージボードに登場しましたが、私が理解できる明白な意見はありません。 AskUbuntuで見つけることができる唯一の質問(Q:fvツールのインストールの問題)には、何の回答もありませんでした。

2
Richard Quint

Ubuntu 18.04 LTSのクリーンインストールで、redetパッケージを1つだけインストールした場合、この問題を確認できます。

$ 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

そこで、私は bug 176897 をlaunchpadに報告しました。


迅速で汚い回避策は、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が正常に起動した後:

redet on Bionic

3
N0rbert