Навигация

Кузница

Разнообразные утилиты, принципы и сервисы, используемые для создания SliTaz.

* Присоединяйтесь к нам на SCN и в рассылке

Bosanski Dansk Deutsch English Español Français Indonesian Italiano Português Русский 中文

Совместное управление

KISS и соответствие стандартам

Что означает KISS? Будьте проще: следуйте лучшим стандартам, тщательно планируйте и пишите качественную документацию, делайте систему стабильной и надежной, сохраняйте rootfs на LiveCD настолько лёгким, чтобы дистрибутив мог запускаться на компьютерах со 128 МБ оперативки. В дистрибутиве возможно использование GTK+2, Dialog, SHell-скриптов и средств разработки PHP. Идея заключается в том, чтобы не дублировать существующее, и думать о малом…

Tank — сборочный хост и дом

Участники проекта могут получить аккаунт на сервере Tank с безопасным доступом, дисковым пространством, общим каталогом и всеми средствами разработки. Разработчики могут компилировать пакеты, а мэйнтейнеры зеркала могут осуществлять синхронизацию. На сервере Tank также находятся домены веб-загрузки, сборочного бота и SliTaz Pro: tank.slitaz.org.

Инструкции по использованию сборочного хоста описаны в Cookbook: SliTaz Build Host (Tank).

Репозитории Mercurial

Репозитории SliTaz Mercurial (Hg) можно просматривать и клонировать без ограничений, используя адрес http://hg.slitaz.org/. Те, у кого есть доступ на запись, могут напрямую использовать адрес repos.slitaz.org, требующий аутентификации. Mercurial работает на Python; его можно установить командой tazpkg get-install mercurial

~/.hgrc

Перед тем, как отправить ваш первый коммит на сервер, внесите в файл конфигурации Hg ваше имя, фамилию и адрес электронной почты. Запомните, Hg не будет работать, если вы root. Пример персонального файла ~/.hgrc:

[ui]
username = Ivan Ivanov <ivanov@mail.org>

Клонировать → изменить → зафиксировать изменения → отправить

Клонировать репозиторий, к примеру, wok:

$ hg clone http://repos.slitaz.org/wok

Перейдите в папку wok; вы должны находиться в репозитории, чтобы иметь возможность использовать команды 'hg'. Чтобы проверить все журналы, или просто последний журнал:

$ hg log
$ hg head

Добавьте или измените один или несколько файлов и зафиксируйте коммит:

$ hg add
$ hg status
$ hg commit -m "Log message..."
$ hg log

Обратите внимание, что вы можете использовать команду rollback для отмены последней операции. Перед отправкой изменений на сервер (push — «протолкнуть» изменения на сервер) возьмите за правило принимать текущие изменения с сервера (при их наличии):

$ hg pull
$ hg push

Готово, теперь ваши изменения, код или исправления находятся на сервере.

Обновление локального wok

Для того, чтобы обновить ваш wok скомандуйте (pull — «втянуть» изменения с сервера):

$ hg pull -u

Полезные команды

Могут быть использованы следующие команды Hg:

В сети можно найти немало статей и учебников по 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 сложно и доступно не каждому, в то время как SHell-скрипты проще для понимания. Поэтому сейчас наш руководящий принцип — сохранить и продолжать совершенствовать наши утилиты командной строки, а также обеспечить их графическим интерфейсом на GTK или CGI/web.

Многие новые языки, такие как 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 http://hg.slitaz.org/website

Или, если у вас есть соответствующие права:

$ hg clone http://repos.slitaz.org/website

Стиль написания 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