Tcl не может найти init.tcl в пакете оснастки

В обычной системе я мог бы при необходимости экспортировать библиотеки, чтобы tcl не жаловался на отсутствие init.tcl. Я строю пакет оснастки для распространения Tcl, хотя. После сборки и установки я могу запустить tcl.tclsh(это форма, необходимая для поддержки пространства имен snap), и она жалуется на вышеуказанную жалобу и остается в приглашении tclsh. я могу запустить скрипт tcl нормально. тем не менее, я не могу выполнить еще один бинарный файл с именем wish. это имеет имя оснастки tcl.wish. оба они находятся в одной и той же оснастке, и рассматриваемый файл, init.tcl, присутствует в папке библиотеки, которую tcl жалуется на отсутствие поиска. Я считаю, что мне нужно экспортировать необходимые места библиотеки непосредственно перед выполнением tclsh, чтобы он мог найти этот файл. Я попробовал это, включая эхо этих путей, так что я знаю, что это выполняется. это работает, но все еще не помогает. Я думаю, я просто озадачен более чем одной вещью. Я не Tcl Pro и Snappy пакеты являются новыми и команды постоянно развиваются. я могу переместить все двоичные файлы в /bin и все библиотеки в /lib с помощью команды упорядочить или я могу поместить их точно так, как это ожидает tcl. я голосую за то, чтобы положить файлы, как они ожидаются. мои вопросы:

  1. Есть ли четко определенный набор ожидаемых местоположений для tcl и tk? как идеальная установка из коробки?
  2. Могу ли я переместить файл init.tcl в уже известное место? я избегал помещать эти пути lib в bashrc, потому что это только исправило бы мою ситуацию, но не тот, кто установит это на свою машину. любая настройка пути должна иметь место при запуске пакета Snap... я думаю.

извините за длину. Я хотел прояснить, что мы имеем дело с Tcl внутри мгновенной среды, имеет ли это значение. я знаю, что упускаю очевидное, потому что snapcraft должен поместить эти файлы туда, где им говорят.debs, и моя установка на мой компьютер работает нормально. $ export -p ничего не показывает tcl или tk

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 и желаю работать как положено, без нареканий.

Команда execute для tclsh - это tcl.tclsh, а для желающих - tcl.wish.

Другие вопросы по тегам