0

通常のシステムでは、必要に応じてライブラリをエクスポートして、tcl が init.tcl を見つけられないという文句を言わないようにすることができました。ただし、tclを配布するためのスナップパッケージを作成しています。ビルドしてインストールしたら、tcl.tclsh を実行できます (これは、スナップ名前空間を維持するために必要な形式です)。上記の苦情が表示され、tclsh プロンプトにとどまります。Tcl スクリプトを正常に実行できます。ただし、wish という別のバイナリを実行することはできません。このスナップ名は tcl.wish です。これらは両方とも同じスナップにあり、問題のファイル init.tcl はライブラリの場所に存在し、tcl は見つからないと文句を言います。このファイルを見つけられるように、tclsh を実行する直前に必要なライブラリの場所をエクスポートする必要があると思います。これらのパスのエコーを含めてこれを試したので、実行されることがわかりました。これは機能しますが、それでも役に立ちません。私はただ複数のことに困惑していると思います。私は tcl のプロではありません。きびきびしたパッケージは新しく、コマンドは常に進化しています。Organize コマンドを使用して、すべてのバイナリを /bin に移動し、すべてのライブラリを /lib に移動するか、tcl が期待するとおりに配置することができます。ファイルを期待どおりに配置することに投票します。私の質問:

  1. tcl と tk の予期される場所の明確に定義されたセットはありますか? 箱から出してすぐに理想的なセットアップが好きですか?
  2. init.tcl を既知のパスに既にある場所に移動できますか? これらのlibパスをbashrcに入れることは避けました。これは私の状況を修正するだけで、マシンにこれをインストールする人は修正しないからです。スナップパッケージを実行するときにパス設定を行う必要があります...と思います。

長々とすみません。これが問題であるかどうかにかかわらず、私たちはきびきびした環境の中で tcl を扱っていることを明確にしたかったのです。Snapcraftはこれらのファイルを.debsが指示する場所に配置する必要があり、コンピューターへのインストールは正常に機能するため、明らかなものが欠けていることはわかっています。$ export -p は tcl または tk を何も表示しません

4

1 に答える 1

1

これは、これを試してみたい人のためのソリューションです。Tcl は init.tcl が見つからないことについて不平を言っており、wish も起動していませんでした。ファイルがあったパスをエクスポートするためにあらゆる方法を試しましたが、うまくいきませんでした。snap パッケージを生成するときに、公開されたバイナリごとにラッパーが生成されることに気付きました。このパッケージでは、tclsh と Wish の 2 つのバイナリーを作成しました。システムをクリーニングすると、生成された以前のファイルがすべて失われるため、エクスポートがうまくいかず、ラッパーファイルを 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 で、wish の実行コマンドは tcl.wish です。

于 2016-08-30T02:01:50.230 に答える