Дистрибутиви, які ми обираємо

Матеріал з Tkabber Wiki

Перейти до: навігація, пошук

Зміст

Начните работу с нажатия этой кнопки (c) Windows

Куда ставить-то?!

© х/ф "Посторонним вход воспрещается"

Итак, вы решили установить Ткаббер и в настоящий момент чешете голову, рассматривая эту страницу. Не унывайте! Во-первых, разбегающиеся глаза красят человека, во-вторых, не вы первый, не вы — последний: почти все "практикующие ткабберисты" были в своё время мучимы выбором, подобным вашему. Для того, чтобы помочь вам с выбором, написана эта статья.

В этой статье рассказывается о различных ипостасях Ткаббера — его дистрибутивах, — и производится их сравнительное препарирование.

Здесь достаточно много теории, так как цель статьи — предоставить вам возможность сделать осмысленный выбор. Если же вы ленивы или (думаете что) всё знаете, можете перейти прямо сюда.

Приступим.

Первое, что вам следует заучить как "Отче наш":

Ткаббер написан на интерпретируемом языке программирования, и это означает, что для работы ему нужен "движок", выполняющий программы этого самого языка — Tcl/Tk, а так же необходимые библиотеки.

То есть, несмотря на некоторую техническую неточность, можно утверждать, что Ткаббер состоит из двух частей:

  • Интерпретатора языка Tcl, а также библиотек (Tk, Tcllib и BWidget — минимально необходимый набор);
  • Самого кода Ткаббера.

Этот самый "код Ткаббера", в принципе, самодостаточен в том смысле, что не зависит от операционный системы и является общим для всех систем, на которых работает Tcl/Tk. То есть, если на вашей системе уже установлен дистрибутив Tcl/Tk, вы можете произвольно менять сам код Ткаббера: к примеру, вытягивать его еженощно с CVS. Или вы, скажем, можете просто перенести каталог с Ткаббером с Windows-машины на Linux-машину, и он будет там прекрасно работать.

И именно "этот самый код..." и является основным дистрибутивом Ткаббера.

К сожалению, Tcl/Tk поставляется в комплекте только с такими серьёзными операционными системами, как Linux или FreeBSD; пользователи Windows вынуждены скачивать дистрибутив Tcl/Tk из интернета или использовать альтернативные дистрибутивы Ткаббера, о которых рассказано ниже.

Однако, многие (и не только в Windows) по разным причинам не хотят иметь дело с установкой этого "рантайма". Наиболее часто встречающаяся причина — вопрос трафика: дистрибутив Tcl/Tk под Windows "весит" примерно 20 мегабайт в архиве. Многие пользователи, обрадовавшись, что основной дистрибутив Ткаббера "весит" около 700 килобайт, бывают разочарованы, узнав, что "это ещё не всё".

Вторая по частоте появления причина — желание использовать "Ткаббер на флэшке": обычно на "чужих" компьютерах (на работе, в университете и т.д.) нет возможности установить дистрибутив Tcl/Tk, и, следовательно, его нужно как-то "носить с собой".

Итак, подведём первый промежуточный итог. У вас есть два варианта для работы с Ткаббером:

  1. Установить себе дистрибутив Tcl/Tk + необходимые библиотеки.
  2. Скачать специальный дистрибутив Ткаббера, который "содержит в себе" микро-дистрибутив Tcl/Tk.

Сравнение их отложим до поры, а пока окинем взглядом

"Самодостаточные" дистрибутивы Ткаббера

Есть, в общем, два подхода к созданию "вещи в себе" из программы, написанной на Tcl:

  • Сделать инсталлятор, который устанавливает в систему как минимальный, (но "настоящий") дистрибутив Tcl/Tk с необходимыми библиотеками, так и саму программу;
  • Использовать специальное средство под названием tclkit (тиклькит), позволяющее "завернуть" и программу, и Tcl/Tk, и необходимые библиотеки в один файл — старкит (starkit), который может быть исполняемым, и тогда становится старпаком (starpack).

Ткаббер доступен в каждом из этих обличий. И если первое из них (надеемся) вполне понятно, то второе, скорее всего, требует разъяснений.

Tclkit, starkits и starpacks: немного теории

Тиклькит

Tclkit был изобретён для решения проблемы быстрого и удобного размещения программы, написанной на Tcl/Tk, на компьютере пользователя. Автор идеи, первой реализации и лидер проекта — Jean-Claude Wippler, официальный сайт тиклькита — здесь.

Тиклькит это один исполняемый файл небольшого размера (версия 8.4.13 для Linux x86 "весит" примерно 1.5M), содержащий в себе:

  • интерпретатор языка Tcl;
  • графическую библиотеку Tk;
  • объектное расширение для тикля [incr Tcl];
  • библиотеку поддержки виртуальной файловой системы TclVFS;
  • встроенную систему управления базами данных Metakit.

Тиклькит не требует инсталляции и исполняет файлы специального формата — старкиты.

Скачать тиклькит для своей платформы можно отсюда, выбрав нужный пакет из доступной матрицы.

Итак, тиклькит это "движок". Посмотрим теперь на то, что он "приводит в движение".

Старкиты

Старкит это один файл, представляющий собой базу данных (!) в формате Metakit. Собственно данными этой базы являются файлы исходной программы, из которой изготавливается тиклькит, файлы необходимых библиотек и произвольные файлы данных. TclVFS из тиклькита делает так, что интерпетатор тикля (из этого же тиклькита) считает, что работает с обычной файловой системой, а не базой данных.

Название "starkit" это (довольно неуклюжий) акроним от "StandAlone Runtime, called Tclkit" ("Самодостаточный исполняемый модуль, который называется тиклькит").

Таким образом, вы можете скачать тиклькит под свою ОС, затем скачать старкит Ткаббера и далее обновлять только его по мере выхода новых версий.

Для запуска старкита Ткаббера на другой операционной системе вам понадобится скачать тиклькит для неё.

Старпаки

Старпак это просто комбинация тиклькита для одной конкретной операционной системы и старкита.

Старпак обладает одним чудным свойством: он представляет собой один исполняемый файл, не требующий инсталляции.

К сожалению, при этом теряется одно из достоинств старкитов — независимость от целевой платформы.

Подробнее про Tkabber starpack.

Назад, к Ткабберу!

Выше мы сказали, что Ткаббер доступен в виде каждой из разновидностей "самодостаточных" дистрибутивов.

Итак, настало время поприветствовать наших красавиц!

Tkabber-Starkit 
Старкит. Требует наличия тиклькита для вашей ОС.
Tkabber-Starpack 
Старпак. Для запуска не требует ничего.

Tkabber-pack — особая песня

Если помните, одним из вариантов дистрибутива "всё в одном" был инсталлятор, устанавливающий в систему минимальный дистрибутив Tcl/Tk, необходимые библиотеки и саму программу.

Когда-то это задачу решал Ткаббер-пак.

Однако, начиная с версии 0.9.9, официальный Ткаббер-пак больше не содержит в себе микродистрибутива Tcl/Tk; автор предлагает использовать его вместе с "полным" дистрибутивом этого языка.

С другой стороны, существует неофициальная модификация Ткаббер-пака, содержащая Tcl/Tk. О ней будет рассказано ниже.

Быстрее! Выше! Сильнее!

Ткаббер написан таким образом, что может использовать различные модули для Tcl/Tk (которые мы называем "расширениями"), если они доступны (установлены).

Несмотря на то, что ни одно из расширений не требуется для нормальной работы Ткаббера, некоторые из них очень полезны, и даже рассматриваются многими как необходимые.

Важно понимать, что эти модули не являются частью Ткаббера; их необходимо устанавливать отдельно. Они могут поставляться вместе с вашей ОС или вашим дистрибутивом Tcl/Tk, а возможно, устанавливать их вам придётся "руками". Посему, не исключено, что вопрос наличия тех или иных модулей в "готовом" виде, или тот факт, что они поставляются "внутри" некоторого дистрибутива Ткаббера, может сыграть решающую роль в вашем выборе.

Здесь мы рассмотрим доступные модули Tcl/Tk, которые может использовать Ткаббер, чтобы учитывать это при сравнении дистрибутивов Ткаббера.

Шаблон:Todo

Прилавок

Пробежимся по доступным дистрибутивам Ткаббера, имеющим статус официальных, давая краткие пояснения:

Ткаббер из состава ОС 
Проверьте, возможно, что Ткаббер входит в состав вашей ОС! К примеру, он входит в состав Debian GNU/Linux, Gentoo, Mandrake, FreeBSD. Возможно, есть и в других POSIX-системах.
"Просто Ткаббер" 
Официальный стабильный дистрибутив ткаббера. На официальном сайте он называется "Source Package". Для работы требует наличия в системе дистрибутива Tcl/Tk и необходимых библиотек (Tcllib и BWidget). Не содержит опциональных расширений. Поствляется в виде двух архивов: собственно Ткаббер и плагины к нему.
Ткаббер с SVN 
Это — для любителей "быть на переднем крае" и разработчиков. Эта версия нестабильна, то есть вообще не обязана работать.
Tkabber-pack 
Это — инсталлятор для Windows, содержащий Ткаббер, плагины к нему, а так же наиболее полезные расширения. Внимание, будьте бдительны: этот дистрибутив не включает в себя Tcl/Tk! Точнее говоря, он включал Tcl/Tk, но только до версии Ткаббера 0.9.8. Начиная с 0.9.9 — уже не включает. (Если вам нужен Ткаббер-пак с тиклем внутри, обратите внимание на "TkabberOTC", который описан ниже, в разделе "Рукоделие".
Tkabber-Starkit 
Это — старкит Ткаббера. Требует для работы тиклькит под вашу ОС. Внимание! имеющийся старкит сильно устарел (версия 0.9.7) и не рекомендуется к использованию.
Tkabber-Starpack 
Это — старпак Ткаббера. Имеются версии под Linux x86 и Windows. Включает наиболее полезные расширения Ткаббера. Для работы не требует абсолютно ничего.

Рукоделие

В силу языка своей реализации Ткаббер довольно лекго поддаётся изменениям. Также не представляет сложностей изменение готового старкита или старпака. Поэтому существует несколько неофициальных дистрибутивов. Перечислим те, о которых знаем:

Старпак с поддержкой сжатия 
Официальный стапак под Win32, в который Kostix добавил поддержку сжатия, а также возможность подгружать старкит пакета Img, позволяющий работать с картинками в формате JPEG, PNG и другими. Подробности — здесь.
Tkabber-pack toon'а 
Ткаббер-пак под Windows. Содержит некие изменения, о которых автор ленится написать. Основная идея: минимизировать трафик, требуемый для получения обновлений. С этой целью всё пожато архиватором 7zip, а новые версии Ткаббера распространяются в виде апдейтов.
TkabberOTC 
Ткаббер-пак от админов провайдера "Омские Телекоммуникации". Допилен на предмет более глубокой русификации + другие изменения. Читайте официальную страницу. Включает минимальный дистрибутив Tcl/Tk.
Tkabber-SK 
Этакий "форк" от SVN-версии Ткаббера за конец декабря 2006 года. Автор — xmpp:tomasz@mastahizm.mooo.com. В эту версию добавлены разные интересные и не очень штуки (подробности читайте в чейнджлогах на странице проекта). Мы пригласили автора к сотрудничеству с разработчиками, так как некоторые из его фич могут запросто попасть в транк. Да и вообще незачем распылять силы. Фичи, которые в транк не попадут, он вроде обещал выложить в виде патчей на английской версии соответствующего раздела.
Страница Ткаббера на Tcl Wiki 
Содержит ссылки на как минимум два старкита. За подробностями идите по ссылке.

Кто сильнее: кит или пак? (Что выбрать?)

Какой же я могу, сеньора,
Подать совет там, где решает
Единственно ваш личный вкус?

Лопе Де Вега. "Собака на сене"

Изложенное здесь есть частное мнение авторов статьи, которое не обязано совпадать с вашим, так что имейте в виду известный девиз: "на наше мнение можно положить(ся)" © AG.ru. Включайте голову, изучайте и делайте свой выбор.

Совокупность доступных дистрибутивов воплощает в жизнь принцип "камень-ножницы-бумага": решения, идеального по всем возможным параметрам, не существует. Поэтому мы постараемся описать эти параметры и дать минимальные рекоммендации.

Полезно понимать, что стандартно запущенный Ткаббер хранит свои настройки в домашнем каталоге пользователя, то есть эти настройки разделяются всеми копиями ткаббера в системе (если только вы или разработчик не приняли мер против этого), поэтому вам ничего не мешает иметь несколько копий ткаббера в системе, даже совершенно различных по идеологии, к примеру, пару старпаков, восемь старкитов, "просто Ткаббер" и Ткаббер с SVN. Они будут жить дружно, поэтому не бойтесь экспериментировать.

Следует иметь в виду, сравнивая дистрибутивы:

Важен может быть не только тип дистрибутива, но и наличие в нём (или для него) готовых расширений, а так же возможность изменять дистрибутив (к примеру, накладывать неофициальные патчи).

"Каноническая" установка: Tcl/Tk + Ткаббер

Вначале рассмотрим вариант с наличием полноценного дистрибутива Tcl/Tk в системе.

Осевой вариант

Выбор авторов статьи (при этих словах вы должны представлять себе везде седых и лысых везде, где не седы, старцев с хитрым прищуром мудрых глаз) — "дистрибутив из вашей ОС". Действительно ли вам нужна Самая Последняя Версия? Признайтесь себе: вы знаете чем она отличается от предыдущей? Есть ли в версии из вашего дистрибутива Ужасные Баги, С Которыми Вы Не Можете Жить? Имейте в виду мудрый принцип: "не сломалось — не чини".

Кроме того, данный подход имеет другие достоинства:

  • Стандартный пакет означает станартный подход к управлению ПО. Вы всегда знаете, "чей это файл", можете удалить пакет, а ещё он обновится вместе с дистрибутивом в ходе очередного апгрейда.
  • Если вам повезло с мейнтейнером пакета, ваша пакетная система не только поставит вам всё, от чего зависит Ткаббер, но и предложит поставить то, с чем он любит работать.

Безусловно, если в вашей системе есть Ткаббер, то в ней, как минимум, есть дистрибутив Tcl/Tk и набор необходимых Ткабберу компонентов.

Имейте, однако, в виду, что "Ткаббер из ОС" это, в основном, роскошь линуксоидов и эээ... пользователей FreeBSD. Адептам Windows предлагается изучить альтернативы.

Больше всех, пожалуй, повезло пользователям Debian GNU/Linux: один из разработчиков Ткаббера (xmpp:sgolovan@nes.ru) является пользователем этой ОС и поддерживает собственный репозиторий пакетов, содержащий, помимо прочего, готовые пакеты с наиболее полезными расширениями для Ткаббера. Так что любителям Дебиана достаточно вписать себе в sources.list дополнительный репозиторий и наслаждаться.

В любом случае, почти со стопроцентной уверенностью можно сказать, что дистрибутив Tcl и Tk есть в любой "десктопной" POSIX-системе. О том, что делать, когда его нет, читайте ниже.

Если ваша система не имеет дистрибутива Ткаббера, но имеет дистрибутив Tcl/Tk, возможно, следует просто скачать стандартный дистрибутив Ткаббера ("исходники") и развернуть его куда-нибудь под /usr/local/share.

Windows: не бейсиком единым...

Сотрудники Майкрософт обладают достаточно извращённым вкусом в области языков программирования. Поэтому в вашей Windows-системе есть минимум два бейсика и, возможно, минимум одна джава. И ни одного тикля. Не исключено, что недостаток внимания этой фирмы к данному языку сыграл последнему на пользу, избавив его от смертельного дыхания одного известного принципа. В любом случае, вас касается одна проблема: дистрибутива Tcl/Tk с Windows не поставляется.

Стандартом де-факто в области Tcl/Tk под Windows является дистрибутив от фирмы ActiveState, скачать который можно здесь.

Этот пакет хорош тем, что является "дистрибутивом на батарейках" ("battery powered" в оригинале): он включает все популярные пакеты Tcl/Tk, удобную справочную систему, программу tkcon и массу других вещей, которая может вам понадобиться (а может — и нет).

Настало время поговорить по поводу "может".

Дистрибутив Tcl/Tk в системе: pros et contras

Два основных "за" наличие дистрибутива в системе:

  • Расширение возможностей системы — вам становится доступен мощный и в то же время лёгкий в изучении язык программирования. Возможно, вы захотите использовать его. Кроме того, на Ткаббере свет клином не сошёлся — в мире хватает хороших программ, написанных на тикле; устанавливая дистрибутив Tcl/Tk, вы даёте себе возможность использовать их без дополнительного "геморроя".
  • Работа с кодом Ткаббера. По разным причинам у вас может возникнуть желание/необходимость работать непосредственно с кодом Ткаббера. Вот эти причины:
    • Вы хотите быть "на переднем крае" разработки и иметь версию, отражающую текущее состояние репозитория SVN.
    • Вы хотите накладывать на Ткаббер неофициальные и экспериментальные патчи, или патчи, которые не принимают в основную ветку разработки.
    • Вы хотите ковыряться с кодом Ткаббера (пусть даже и в режиме "только чтение", например, изучения ради), а то и участвовать в разработке.

Несмотря на то, что всё это технически можно делать и со старкитом/старпаком, при наличии дистрибутива Tcl/Tk это делать значительно проще.

Наличие "микро дистрибутива" в Ткаббер-паке так же может быть обманчивым: этот дистрибутив, как правило, урезан до максимально возможного уровня, а новые "фичи", добавленные разработчиками в последнюю версию Ткаббера, которую вы хотите потестировать, могут потребовать тех самых "отрезанных" возможностей тикля. (Для справки: именно с такой проблемой сталкивались некоторые владельцы Ткаббер-пака 0.9.8, пытаясь "завести" на своей системе скачанный "основной дистрибутив" версии 0.9.9).

Ради сохранения баланса Силы, скрепя сердце, приведём и два основных "против":

  • Интернет-трафик. Под Windows, скачивание 20-мегабайтного архива из Интернет — единственная возможность получить полноценный дистрибутив Tcl/Tk. На POSIX-системах, возможно, так же потребуется качать нужные пакеты.
  • Борьба за "чистоту рядов". Некоторые пользователи (чрезмерно) ревниво относятся к "чистоте" своей системы и противятся установке любого "ах, ещё одного языка программирования!".


Иногда, впрочем, установка дистрибутива Tcl/Tk не только нежелательна, но и невозможна. Если это — ваш случай или, читая предыдущие строчки, вы решили встать на тёмную сторону Силы, следующий раздел — для вас.

Всё своё ношу с собой

Собственно, преимущества и недостатки использования "завёрнутых" версий Ткаббера примерно обратны использованию "канонической" установки.

Плюсы:

  • "Всё в одном" — Ткаббер-старпак представляет собой один выполняемый файл, который нужно просто запустить. Ткаббер-старкит — два файла, которые тоже не нужно не только куда-то ставить, но и даже распаковывать.
  • При некотором (несложном) "допиливании" Ткаббер-старпак прекрасно умеет работать с носимого устройства хранения данных, например, с флэш-драйва. То же самое относится и к старкиту, только таскать нужно опять же два файла.
  • Официальные старпаки содержат большинство самых полезных модулей Tcl/Tk, расширяющих возможности Ткаббера — отсутствие необходимости в дополнительной установке расширений.

Минусы проистекают из всё той же "упакованности":

  • Любое изменение "внутренностей" старпака/старкита требует его "разворачивания" (unwrap) и последующего "заворачивания" (wrap) (подробнее эти процедуры обсуждаются ниже). Это вам понадобится делать, если вы хотите:
    • добавить модуль Tcl/Tk, расширяющий возможности Ткаббера, которого нет в стандартной поставке старпака/старкита;
    • наложить какой-либо патч.
  • Официальные дистрибутивы Ткаббера — это стабильные релизы. Если вы хотите быть "на переднем крае" разработки, но при этом использовать старпак/старкит, то фактически вам придётся поддерживать свою версию такого дистрибутива.

Ткаббер-пак опять идёт не в ногу

Нелишним будет снова повторить, что последний официальный Ткаббер-пак больше не содержит Tcl/Tk, поэтому фактически нам нужно рассматривать два воплощения Ткаббер-пака: оснащённую Tcl/Tk и обделённую им.

Преимущество Ткаббер-пака по сравнению со старпаками/старкитами Ткаббера заключается в том, что его значительно легче изменять — Ткаббер включён в этот дистрибутив "как есть": не нужно ничего "разворачивать" и потом "сворачивать" обратно для того, чтобы потестировать патч или почитать код.

К недостаткам в сравнении со старпаками/старкитами, пожалуй, можно причислить только то, что он занимает больше места (но зато и стартует быстрее).

Ткаббер-пак, оснащённый дистрибутивом Tcl/Tk, обладает таким же уровнем мобильности как и старпак/старкит (например, умеет работать с флэш-драйва), и привязан к конкретной ОС так же, как и старпак (нам известно только о Windows-версиях Ткаббер-пака). Несмотря на то, что в подобном дистрибутиве есть "настоящий" Tcl/Tk, относитесь к этому с определённым скепсисом: это достаточно урезанная версия, содержащая только то, без чего не может обойтись Ткаббер.

Может возникнуть вопрос: а в чём смысл Ткаббер-пака без микро-дистрибутива Tcl/Tk внутри? Ответ прост: Ткаббер-пак включает в себя наиболее полезные пакеты Tcl/Tk, которые делают доступными дополнительные возможности Ткаббера. Можете думать о нём как о "Ткаббере на стероидах". Естественно, можно скачать и поставить дополнительные пакеты "руками", но зачем вам лишний труд?

Особисті інструменти