在常规系统中,如果必须,我可以导出图书馆以阻止tcl抱怨没有找到init.tcl。 我正在构建一个快照包以分发tcl。一旦构建和安装,我就可以运行tcl.tclsh(这是维护snap命名空间所需的形式)并且它会抱怨上述抱怨并保持在tclsh提示符下。我可以运行一个tcl脚本。但是,我无法执行另一个名为wish的二进制文件。这有快照名称tcl.wish。 这两个都在同一个快照中,有问题的文件init.tcl存在于库位置tcl抱怨没有找到。 我相信我需要在tclsh执行之前导出必要的库位置,以便它可以找到这个文件。我试过这个包括这些路径的回声,所以我知道它被执行。这工作但仍然没有帮助。我想我只是被不止一件事所困扰。我不是专业人士,而且snappy包是新的,命令总是在发展。我可以使用组织命令将所有二进制文件移动到/ bin和所有库到/ lib,或者我可以准确地将它们放在tcl预期的位置。我投票把文件放在预期的方式。 我的问题:
答案 0 :(得分:1)
以下是希望尝试此操作的人的解决方案。 Tcl抱怨没有找到init.tcl,并希望甚至没有启动。我试图通过各种方式导出文件所在的路径,但没有运气。我注意到在生成快照包时,会为每个公开的二进制文件生成包装器。在这个包中我创建了两个二进制文件--tclsh和wish。由于没有运气输出,我将包装文件复制到snapcraft.yaml文件所在的位置,因为清理系统会杀死所有以前生成的文件。我在每个包装器中添加了以下内容:
export TCL_LIBRARY=$SNAP/usr/share/tcltk/tcl8.6:$TCL_LIBRARY:$TK_LIBRARY
export TK_LIBRARY=$SNAP/usr/share/tcltk/tk8.6:$TK_LIBRARY:$TCL_LIBRARY
然后我编辑了apps:
部分以反映包装器的使用,而不是直接二进制调用。
apps:
tclsh:
command: tclsh.wrapper #used to be just tclsh without the benefit of a wrapper with exports in it
plugs: [home, unity7, network, x11]
wish:
command: wish.wrapper # same as above
plugs: [home, unity7, network, x11]
最后在我的胶水部分,我包括了那些包装:
glue:
plugin: copy
files:
tclsh.wrapper: usr/bin/tclsh.wrapper
wish.wrapper: usr/bin/wish.wrapper
然后我制作了快照包并安装了它。 tclsh和wish都按预期工作,没有抱怨。
tclsh的执行命令是tcl.tclsh,希望它是tcl.wish