[Devel] Упрощение установки WINE на Etersoft в LINUX на Etersoft

Konstantin Baev =?iso-8859-1?q?kipruss_=CE=C1_etersoft=2Eru?=
Ср Фев 25 03:46:03 MSK 2009


Здравствуйте.

Существует желание упростить процесс установки WINE на Etersoft в связи с 
тем, что по причине появления LINUX на Etersoft появляется и техническая 
возможность как-то это реализовать.

Как это работает в настоящее время:

=== 1 часть. Заказ через Интернет ===

0. Пользователь знает свой регистрационный номер вида XXXX-XXXX
1. Заходим на страницу: http://etersoft.ru/product и вводим этот номер
2. После этого попадаем на страницу http://sales.etersoft.ru/index.php, 
где указан номер, а также приобретённый продукт и личность, имеющая 
счастье быть его обладателем. На этой странице мы должны указать адрес 
email.
3. Далее мы попадаем на другую страницу, где также указаны параметры 
продукта и покупателя и перечисляется список
 платформ (бишь операционных систем), для которых можно скачать текущую 
версию продукта (сейчас - 1.0.9). Нажав на ссылку для конкретного 
дистрибутива (например ALTLinux Sisiphus) наблюдаем появившееся окно, 
где надо нажать "ОК". Это уже формальность. Как и та страница, которая 
появляется потом. В ней написано, что я заказал, для какой платформы и 
что ссылка для скачивания будет выслана мне письмом на мой эл. адрес в 
течение получаса (обычно через 2 минуты).

=== 2 часть. Скачивание пакетов ===

1. Действительно, не прошло и 2 минут, как я получаю письмо, в котором, 
кроме уже привычной информации, можно видеть ссылки на следующие пакеты:
a). Свободная часть (пакеты лежат во всеобщем доступе и могут быть 
прописаны в нашем репозитории)

fonts-ttf-liberation
haspd
haspd-modules
wine-1.0.9-alt42
libwine-1.0.9-alt42
fonts-ttf-ms

Папка: 
http://updates.etersoft.ru/pub/Etersoft/WINE@Etersoft/1.0.9-eter42/WINE/ALTLinux/Sisyphus/
таким образом путь зависит от версии открытой части и дистрибутива

Ещё нам понадобится etercifs, на который явной ссылки не дается 
(возможно из-за того, что у меня локальная версия), который можно взять 
в 
http://updates.etersoft.ru/pub/Etersoft/WINE@Etersoft/1.0.9-eter42/CIFS/ALTLinux/Sisyphus/

б). Закрытая часть (пакеты скачиваются из временного пути, доступного 4 
суток)

Пакет там только один, а также лицензия, мануал и readme
wine-etersoft-local-1.0.9-alt18.i586.rpm

Папка имеет путь

 ftp://updates.etersoft.ru/pub/download/WINE@Etersoft/XXXX-XXXX-YYYYYYYYYY/Local-1.0.9/ALTLinux/Sisyphus/

то есть зависит от регистрационного номера, от генерируемого хэша (временного), версии продукта и от дистрибутива. Хэш 10-значный YYYYYYYYYY состоит из случайных символов - цифр и букв латиницы.

=== 3 часть. Установка пакетов ===

После этого нужно пакеты установить. Предварительно сложив в одно место для разруливания зависимостей.
Установить либо rpm -Uhv ./*.rpm - в этом случае зависимости разрулятся если в указанной куче нет анметов, либо apt-get install ./*.rpm - в этом случае с зависимостями тоже нормально. Но эти команды должны быть известны.

Как это можно улучшить:

Есть цель: создать максимальное удобство для пользователя
Есть ограничения: потратить на это не слишком много времени и не слишком менять поведение сервера, чтобы не сломать существующую схему, которая универсальна.

Идей было несколько: создавать временный репозиторий и прописывать его в /etc/apt, после этого устанавливать пакеты при помощи apt-get, проверять наличие пакетов, при необходимости доустанавливать или обновлять их и потом скачивать пакет закрытой части и устанавливать его. Но тут надо писать логику. Также, конечно, не хватает гуевого инсталлятора скачанных пакетов в АЛЬе.

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

И итоге за рабочую была принята следующая идея:

Создать пакет утилит, который будет осуществлять следующие вещи:
0. Принимать входные данным (рег. номер и код подтверждения), которых будет достаточно
1. Скачивать нужные пакеты
2. Устанавливать их
3. Чистить кэш

Последовательность действий такова:

=== 1 часть. Заказ через Интернет ===

Пункты 0, 1 и 2 аналогичны предыдущему.
3. В списке появляется пункт LINUX на Etersoft, который мы и выбираем, после чего ожидаем письма.

=== 2 часть. Получение кода подтверждения ===

В пришедшем письме уже не будет ссылок (или будут, как альтернатива) на пакеты, а будет краткая инструкция (в которой, в частности, написано, что через 4 дня код подтверждения протухнет) и код подтверждения: 10-значное число YYYYYYYYYY.

=== 3 часть. Установка пакетов ===

Теперь пользуемся ещё не написанной консольной утилитой. В дальнейшем -гуевой. Пусть наименование ее будет - etersoft

Итак, нам известен дистрибутив. Известна версия (последняя, конечно, для этого есть симлинка last). Известны оба кода. Вернее один код и алгоритм генерации другого (кода проверки YYYYYYYYYY) из первого (кода регистрации XXXX-XXXX)

Таким образом список заранее известных пакетов (который тоже может лежать в интернете в заранее известном месте) мы можем скачать из папок (Sisyphus, вероятно, заменим на 4.1, а потом и на 5.0):

http://updates.etersoft.ru/pub/Etersoft/WINE@Etersoft/last/WINE/ALTLinux/4.1/
ftp://updates.etersoft.ru/pub/download/WINE@Etersoft/XXXX-XXXX-YYYYYYYYYY/Local-1.0.9/ALTLinux/4.1/
и, возможно, путь до etercifs

1. Обновление кэша:

# etersoft update XXXX-XXXX
Введите код подтверждения:

Если код верный (вычисляем), то получаем список пакетов (полные наименования с версиями релизами) из, например 
ftp://updates.etersoft.ru/pub/download/WINE@Etersoft/XXXX-XXXX-YYYYYYYYYY/Local-1.0.9/ALTLinux/4.1/packages.list
заодно этим проверяем и наличие интернета и то, что ссылка не протухла.

Если файл доступен, то скачиваем всё, что нам надо в /var/cache/etersoft/XXXX-XXXX/ в папки i586 и noarch для соответствующих пакетов, делаем genbasedir и прописываем этот источник в /etc/apt в какой-то известный нам файл (тут тоже надо подумать, но это не самая сложная задача)

Также в /var/cache/etersoft/XXXX-XXXX/ кладем packages.list

Идеальный вариант - делать это через rsync, но на первое время можно и wget -c
 
2. Просмотр кэша:

# etersoft display XXXX-XXXX

выводится список пакетов
Это не первоочередная задача. Сперва можно и не делать ничего умнее, чем просто вывод содержимого packages.list

3. Установка пакетов:

# etersoft install XXXX-XXXX

Происходит установка указанных в списке пакетов. Сперва dist-update, потом apt-get install *** *** ***

4. Очистка кэша:

# etersoft clean XXXX-XXXX

Просто удаляем содержимое папки /var/cache/etersoft/XXXX-XXXX/

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

Экономия:

1. не придется писать гуевую устанавливалку РПМ, хотя это было бы совсем не лишним для АЛЬТЛинукс
2. не придется разруливать что уже установлено, а что - нет, а также обновлять это из кучи мест. В дальнейшем, возможно, такая логика и появится.
3. Кроме rsync не придется допиливать серверную часть.

Косяки:

1. По прежнему большой траффик, который при обновлении будет экономиться за счет необновления файлов со шрифтами, например (rsync).

Итог: можно в таком случае обойтись вместо установки свободной части вайн установкой одного пакета со скриптами установки, потому что вайн быстро устаревает и занимает много места на iso-образе. Упрощается установка для пользователей LINUX на Etersoft.

Написал много и, возможно, не очень понятно. Поверьте, старался как можно подробнее и доходчивее объяснить. До рисования диаграмм действий дело не дошло, ибо поздно. Если надо - нарисую. Все вопросы лучше обсудить довольно оперативно. Надо ли это делать? В таком виде или не совсем? На мой взгляд на первую версию с перечисленными функциями уйдёт дня 3-4.

Нужен алгоритм генерации кода подтверждения по коду регистрации и прикручивание rsync к серверу. Остальное вроде бы имеется.


-- 
Konstantin Baev
kipruss на etersoft.ru



Подробная информация о списке рассылки devel