Совместное управление
- KISS и соответствие стандартам
- Сборочный хост и зеркало
- SSH-ключ и аккаунт разработчика
- Репозитории Mercurial
- GUI в GTK и CGI/web
- Реализация iconv()
- Сборка пакетов SliTaz
- Управление сайтом
KISS и соответствие стандартам
Что означает KISS? Будьте проще: следуйте лучшим стандартам, тщательно планируйте и пишите качественную документацию, делайте систему стабильной и надежной, сохраняйте rootfs на LiveCD настолько лёгким, чтобы дистрибутив мог запускаться на компьютерах со 128 МБ оперативки. В дистрибутиве возможно использование GTK+2, Dialog, SHell-скриптов и средств разработки PHP. Идея заключается в том, чтобы не дублировать существующее, и думать о малом…
Marmite - сборочный хост и зеркало
Участники проекта могут получить аккаунт на сервере проекта с безопасным доступом по SSH (только по открытому ключу, без пароля). Marmite - сборочный хост SliTaz, на нём находится официальное зеркало пакетов: mirror.slitaz.org, страница состояния - marmite.slitaz.org. С 2026 года он заменяет исторический сервер Tank.
SSH-ключ и аккаунт разработчика
Аккаунты создаёт администратор по вашему открытому SSH-ключу. Создайте современную пару ключей ed25519 на своём компьютере:
$ ssh-keygen -t ed25519 -C "you@your-machine" $ cat ~/.ssh/id_ed25519.pub
В SliTaz (dropbear):
$ dropbearkey -t ed25519 -f ~/.ssh/id_dropbear $ dropbearkey -y -f ~/.ssh/id_dropbear | grep ^ssh-ed25519
Отправьте одну строку ssh-ed25519 AAAA… администратору или группе разработчиков (список рассылки или форум).
Открытым ключом можно делиться, закрытый ключ никогда не покидает ваш компьютер.
С OpenSSH, как только ваш аккаунт создан, добавьте в ~/.ssh/config следующее:
серверы блокируют клиентов, чей SSH-агент предлагает слишком много ключей подряд.
Host hg.slitaz.org marmite.slitaz.org
User yourlogin
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
С dropbear, стандартным ssh в SliTaz, ничего настраивать не нужно:
он не читает ~/.ssh/config, сам использует ~/.ssh/id_dropbear,
а ваш логин указывается в URL (ssh://yourlogin@hg.slitaz.org/...).
Репозитории Mercurial
Репозитории SliTaz Mercurial (Hg) можно просматривать и клонировать без ограничений, используя адрес https://hg.slitaz.org/.
Mercurial устанавливается командой tazpkg get-install mercurial
С 2026 года запись возможна только по SSH: прежняя отправка по HTTPS с паролем больше не работает. Для отправки нужны аккаунт разработчика и ваш SSH-ключ (см. SSH-ключ и аккаунт разработчика). SSH-адрес репозитория:
ssh://yourlogin@hg.slitaz.org//home/slitaz/repos/<repo>
Замените yourlogin на имя вашего аккаунта, а <repo> на имя репозитория (wok, website, cookutils...).
Обратите внимание на двойную косую черту после имени хоста: путь на сервере абсолютный.
~/.hgrc
Перед первым коммитом внесите в ваш персональный файл ~/.hgrc имя, фамилию и адрес электронной почты. Никогда не работайте от имени root.
[ui] username = Ivan Ivanov <ivanov@example.com>
Новый клон: pull по HTTPS, push по SSH
Так работают основные разработчики: получение изменений остаётся быстрым и анонимным по HTTPS, а отправка идёт по SSH с вашим ключом. Клонируйте, например, wok:
$ hg clone https://hg.slitaz.org/wok
Затем откройте wok/.hg/hgrc в текстовом редакторе и добавьте строку default-push в раздел [paths]:
[paths] default = https://hg.slitaz.org/wok default-push = ssh://yourlogin@hg.slitaz.org//home/slitaz/repos/wok
Или клонируйте сразу по SSH: тогда и получение, и отправка идут по SSH, и ничего добавлять не нужно:
$ hg clone ssh://yourlogin@hg.slitaz.org//home/slitaz/repos/wok
Существующий клон: перевести отправку на SSH
Клон, сделанный до перехода на SSH, не нужно клонировать заново.
Откройте его файл .hg/hgrc в текстовом редакторе:
-
оставьте строку
default: получение поhttp://илиhttps://по-прежнему работает; -
если в ней есть логин и пароль (
https://login:password@hg.slitaz.org/wok), удалите их; -
добавьте строку
default-push, показанную выше, с именем репозитория.
Также удалите из вашего ~/.hgrc раздел [auth] и любой пароль для hg.slitaz.org: они больше не используются.
Проверка перед первой отправкой
$ hg paths $ hg outgoing
hg paths показывает адрес получения (default) и адрес отправки (default-push).
hg outgoing подключается по SSH и показывает коммиты, которые будут отправлены, ничего не отправляя.
При первом подключении SSH попросит подтвердить ключ сервера: ответьте yes.
Если сервер отклоняет ваш ключ, ваш аккаунт или ключ ещё не настроены: см. SSH-ключ и аккаунт разработчика.
Необязательно: сокращение schemes
Расширение schemes входит в Mercurial и сокращает SSH-адрес. Добавьте в ваш ~/.hgrc:
[extensions] schemes = [schemes] slitaz = ssh://yourlogin@hg.slitaz.org//home/slitaz/repos/
Тогда slitaz://wok означает полный SSH-адрес wok.
При клонировании всегда указывайте каталог назначения: без него Mercurial останавливается с ошибкой "empty destination path is not valid".
$ hg clone slitaz://wok wok
Такой клон записывает slitaz://wok/ как свой адрес, и для работы ему нужно это расширение.
В клоне по HTTPS также работает default-push = slitaz://wok.
Изменить → зафиксировать → отправить
Перейдите в папку wok; вы должны находиться в репозитории, чтобы иметь возможность использовать команды 'hg'. Чтобы проверить все журналы, или просто последний журнал:
$ hg log $ hg log -l 1
Добавьте или измените один или несколько файлов и зафиксируйте коммит:
$ hg add $ hg status $ hg commit -m "Log message..." $ hg log
Обратите внимание, что вы можете использовать команду rollback для отмены последнего локального коммита, пока он не отправлен.
Перед отправкой изменений на сервер (push - «протолкнуть» изменения на сервер) всегда принимайте текущие изменения с сервера:
$ hg pull $ hg push
Если кто-то тем временем отправил свои изменения, pull сообщит "run 'hg merge' to merge", а push без слияния остановится с ошибкой "push creates new remote head". Выполните слияние, зафиксируйте его, затем отправьте:
$ hg merge $ hg commit -m "Merge" $ hg push
Готово, теперь ваши изменения, код или исправления находятся на сервере.
Обновление локального wok
Для того, чтобы обновить ваш wok скомандуйте (pull - «втянуть» изменения с сервера):
$ hg pull -u
Полезные команды
-
hg help- показать полный список команд. -
hg rollback- отменить последний локальный коммит или pull (никогда не push). -
hg log пакет- показать журнал для пакета. -
hg log -l 1- показать последний журнал. -
hg paths- показать адреса получения и отправки.
В сети можно найти немало статей и учебников по Hg на русском языке. Мне, например, понравился цикл переводных статей Джоэля Спольски: Hg Init: Часть 2. Основы Mercurial. Самое основное, действительно, можно рассказать за минуту, но иногда могут возникнуть ситуации, когда вам понадобится помощь. Прочитайте и обязательно закрепите полученные данные на практике, прежде чем работать с репозитариями SliTaz.
GUI - на C/GTK, Yad, Vala/Genie и CGI/web
Существует много способов создания пользовательского интерфейса в мире открытого исходного кода. С самого начала проекта и до 3.0 мы, в основном, использовали утилиту под названием GtkDialog. Она позволяет нам создавать очень красивый и сложный интерфейс в GTK с помощью скриптового языка, который можно просто запустить без необходимости компиляции. Но GtkDialog перестал развиваться, в нём не хватает многих новых возможностей GTK. Поэтому мы перешли на Yad для простых графических диалогов. А все диалоги администрирования, пакетного менеджера и утилит настройки используют TazPanel, веб-интерфейс которой написан на xHTML 5 и CSS 3.
Yad очень прост, он не позволяет создавать сложные интерфейсы, даже если нам нужны только 2 или 3 пункта с метками и несколько кнопок, поэтому придётся искать другое решение. Преимущество скриптового языка в том, что его не нужно компилировть, диалоги можно писать в режиме реального времени (но он производит медленные приложения). Написание утилит на C сложно и доступно не каждому, в то время как скрипты оболочки проще для понимания. Поэтому сейчас наш руководящий принцип - сохранить и продолжать совершенствовать наши утилиты командной строки, а также обеспечить их графическим интерфейсом на GTK или CGI/веб.
Многие новые языки, такие как Genie, Vala и GTKaml, используют GTK. Но имейте в виду, что они не так популярны, как C и GTK, и не факт, что их проще освоить и использовать (для выполнения действий в простых приложениях можно использовать скрипты оболочки). Вы можете использовать Vala, но посмотрите на чистый код GTK, создающий одно окно, для этого нужно всего 14 строк:
#include <gtk/gtk.h>
int main(int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect (G_OBJECT (window), "destroy",
G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_show(window);
gtk_main();
return 0;
}
Если вы не уверены в том, какой язык использовать, обсудите его в рассылке. Если вам нужен только небольшой функционал GUI, посмотрите на tazbox в репозитории slitaz-tools, в нём есть крошечные утилиты для рабочего стола, такие как окно выхода из системы. Первый подпроект SliTaz, написанный на чистом GTK, - это TazWeb. Вы можете разобраться с ним, чтобы узнать способы использования system() для добавления системных команд в интерфейс. Например, TazWeb использует Wget для загрузки и Sed для добавления закладок.
Скрипты Yad должны следовать руководящим принципам TazYad: README и пример кода.
Реализация iconv()
SliTaz использует iconv(), предоставленный GNU glibc - любые пакеты, предлагающие libiconv, должны использовать библиотеку, содержащуюся в glibc-locale.
Поэтому в SliTaz больше не входит пакет libiconv (1,2 МБ).
Сборка пакетов SliTaz
Официальная сборка осуществляется с помощью Cookutils. Программа, а также документация о том, как использовать cook и создавать пакеты SliTaz для пакетного менеджера TazPKG, установлена на каждой системе SliTaz.
Пакеты tazpkg в SliTaz создаются автоматически при помощи Cooker («повар») из пакета Cookutils, а также рецепта из wok. В Cookbook описан формат рецептов. Прежде, чем начать, необходимо прочитать документацию о Cook и рецептах.
Что касается выбора пакета, идея состоит в том, чтобы предложить пакет по задаче или функциональности, т.е. выбрать самое легкое приложение в какой-либо области, которое не дублирует уже имеющихся функций других пакетов. Обратите внимание, что текущие пакеты могут быть изменены; если вы найдете альтернативу, которая легче, или с более широкими возможностями, или более привлекательная за счет нескольких дополнительных килобайт, вы можете предложить ее другим в рассылке. Особое внимание необходимо уделить пакетам для LiveCD, они должны быть очищены, лишены необязательных зависимостей и опций компилятора. Обычно, кандидаты пакетов для основного LiveCD обсуждаются в рассылке.
Прежде чем вы приступите к компиляции и созданию пакетов для SliTaz, убедитесь, что их еще нет в неофициальном wok, который находится на основном зеркале SliTaz. Не забывайте, что участники рассылки могут помочь вам и о том, что документация по wok и утилитам написана, чтобы помочь вам начать работу.
Именование пакетов
В большинстве случаев пакет называется так же, как его исходник, за исключением модулей Python, Perl, PHP, Ruby и Lua.
Например, пакет, содержащий шаблон Kid для системы, написанной на Python и XML называется python-kid.
Управление сайтом
Управление сайтом осуществляется через репозиторий Mercurial, он может быть клонирован командой:
$ hg clone https://hg.slitaz.org/website
Для отправки добавьте default-push = ssh://yourlogin@hg.slitaz.org//home/slitaz/repos/website
в раздел [paths] файла website/.hg/hgrc, как и для wok
(см. Репозитории Mercurial).
Стиль написания xHTML
Страницы и различные книги написаны на xHTML 1.0 Transitional.
Заголовок 1-го уровня используется только один раз (вверху страницы), заголовок 2-го уровня - это название документа, а уровни 3 и 4 используются для подзаголовков.
Если используется маркированный список со ссылками на подразделы страницы, то он помещается вверху, сразу после заголовка 2-го уровня.
Абзацы текста окружаются тегами <p>…</p>.
Для отступов мы используем не пробелы, а табуляцию - она помогает понять структуру страницы и экономит вес, занимаемый страницей (в байтах).
Для того, чтобы поместить внутри абзаца код, как, например, имя команды, предпочтительно использовать <code>.
Для отображения команд и демонстрации использования терминала в веб-странице используется <pre> для отображения заранее отформатированного текста.
Пример:
$ команда
Для отображения текста, который можно скопировать и вставить, например, скриптов, фрагментов кода, примеров конфигурационных файлов и т.д. - мы также используем <pre>, но с CSS-классом под названием «script».
Пример:
<pre class="script"> код… </pre>
Выделенные слова помещаются в тег <em>, а внутренние ссылки являются относительными.
Не забудьте проверить соответствие кода стандартам при помощи онлайнового валидатора от W3C.
Diff и patch
Утилиты командной строки diff и patch соответственно создают и применяют специальные файлы («патчи»), в которых содержатся различия между двумя файлами.
Эта техника часто используется для совместной работы - она позволяет легко увидеть изменения, внесенные в исходный файл.
Чтобы создать файл diff, который предназначен для чтения людьми в простом текстовом редакторе, используйте параметр -u:
$ diff -u файл.оригинал файл.измененный > файл.diff
Применить патч:
$ patch файл.оригинал файл.diff