Техническая зона

Сборка пакетов под различные дистрибутивы

Эта статья об одной малоизвестной возможности сборки пакетов под линукс дистрибутивы отличные от базовой ОС. Я предполагаю, что читатель имеет представление о том, что такое RPM/Debian пакеты, сам умеет не только их собирать, но и создавать. Подробнее об этом можно почитать здесь.

Иногда приходится собирать пакеты не только под родной дистрибутив тех или иных версий, но и под какую-нибудь экзотическую систему, например Mandriva 2010. А работаем мы допустим в Ubuntu Karmic (в Fedora же конечно). Вот тут есть несколько очевидных способов решения проблемы.

Первый способ, который напрашивается сам собой это поставить какой-нибудь VirtualBox/Xen/OpenVZ/KVM/VMware, поставить в него операционную систему и заняться собственно сборкой пакета. Если нужно что-то автоматизировать, то придётся действительно попотеть.

Второй способ, воспользоваться openSUSE Build System (OBS). Она имеет Web-интерфейс, поддерживает VCS – SVN подобную osc, собирает всё сама после коммита, выкладывает в репозиторий. OBS может собирать пакеты и локально, хотя там довольно много нюансов. Я не хочу здесь о ней рассказывать, так как это отдельная статья, к тому же по OBS довольно много информации. Но вот если у вас есть довольно быстрая машина с большим жёстким диском, то есть ещё один красивый (хоть и не без изъянов) способ сборки.

Третий способ. В репозитории openSUSE Tools есть пакет build, который создаёт окружение в chroot и собирает пакет. Наверно единственный его существенный недостаток заключается в том, что для создания chroot-окружения нужно иметь на локальном диске пакеты требуемого дистрибутива. Это не приятно, но пережить можно.

Итак, нам понадобится 64-х битная машина (на ней можно собирать пакеты и под ix86 и x86_64). Подключаем репозиторий и ставим пакет build. После этого делаем локальную копию репозиториев для нужных дистрибутивов (иногда достаточно просто DVD диска дистрибутива). Минус конечно большой, но если достаточно места, то потом уже незаметно. Конечно придётся настраивать синхронизацию с репозиториями. Лучше развести разные архитектуры в разные каталоги, так будет проще.

В пакете build в каталоге /usr/lib/build/configs хранятся настройки для различных дистрибутивов. По умолчанию там есть Debian и всевозможные SUSE. Сценарии для других дистрибутивов, а это Fedora, Mandriva, Ubuntu включая разные версии возможно получить через систему контроля версий osc. Но так как для этого придётся описывать вообще всю OBS, то вы можете просто скачать файлы конфигурации из моего архива. Их необходимо будет положить в каталог /usr/lib/build/configs.

Приступаем непосредственно к сборке. Допустим, что мы хотим собрать пакет под Mandriva 2010.0. Все пакеты необходимые для сборки находятся, например, в каталоге /mnt/repo/mdv2010.0/x86_64. Также нам нужен src.rpm. Создадим каталог, например, build, скопируем в него наш исходник и отдадим команду

unrpm пакет.src.rpm

Эта команда из пакета build вытащит всё содержимое исходника в текущий каталог. Собственно если у нас есть исходники, то их достаточно положить в текущий каталог. После этого отдаём команду (из-под пользователя root):

# build --rpms /mnt/repo/mdv2010.0/x86_64 --arch x86_64 --dist mdv2010.0

В качестве параметра к опции --dist (кстати параметр нигде не описанный) используется имя файлов (без расширения) из каталога /usr/lib/build/configs. Можно также при помощи параметра --define переопределять различные переменные определённые в spec-файле, например, --define 'dist mdv2010.0'. Собранный файл будет лежать в chroot окружении. По умолчанию это /var/tmp/build. При помощи параметра --root каталог можно задать любой другой каталог.

Если нам нужно будет собрать 32-х битный пакет, то предыдущая команда примет следующий вид:

# setarch i386 build --rpms /mnt/repo/mdv2010.0/i386 --arch i386 --dist mdv2010.0

Опция --rpms может подцеплять несколько каталогов. Для этого пути нужно разделить символом «:», например:

--rpms /mnt/repo/mdv2010.0/x86_64:/mnt/repo/mdv2010.0/custom/x86_64

Собирать deb-пакеты я не пробовал, но скорее всего отличий не много. Подобный способ очень удобен, когда хочется собирать пакеты у себя на машине, а не делать это где-то там. В этом случае гораздо удобнее отследить удачную или неудачную сборку пакета, написать скрипты для обработки результатов, выкладку в репозитории, поставить сборку в свою собственную систему continuous integration. Единственный недостаток это наличие очень большого свободного пространства под пакеты дистрибутива.

Как выводить уведомления из скриптов в F12 рядом с часами

andrmart @ - Пт, 2010-02-19 15:06
Если нужно из скрипта вывести всплывающее сообщение рядом с часами пользователю, то сделайте так

DISPLAY=:0.0 notify-send "Сообщение: Задачка решена" &> /dev/null

Работает даже из crontab заданий. Очевидно, что сообщение будет выводится если пользователь работает в графической среде и использует графическую среду, обрабатывающую сообщение через libnotify (например, GNOME).

Альфа-тестирование Fedora 13

C 11 февраля 2009 года официально начинается тестирование альфа-версии Fedora 13. Проект Russian Fedora приглашает всех желающих присоединиться к этому процессу.

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

Подробности можно прочитать:
на русском языке - здесь;
на английском - здесь и здесь.

Новая Anaconda в Fedora 13

Собрал вчера образ Fedora Rawhide и решил посмотреть на что она (Fedora) похожа. И сразу бросились в глаза некоторые новшества в установщике. Вот, например, вам сразу предлагают выбрать тип носителядля установки системы:

А вот так выглядит теперь выбор типа инсталляции:

А вот так создание нового раздела:

А вот в выборе пакетов появился тип Minimal. То есть теперь не нужно снимать все галочки, а достаточно выбрать этот пункт. С другой стороны все checkbox заменили на radio button и выбрать можно только один тип. Что теперь делать не совсем понятно, а с другой стороны может быть это и к лучшему. Только KDE или только XFCE (это так будет в RFRemix), а всё остальное через дополнительный выбор пакетов. Ну, в принципе наверно всё равно туда все лазали.

P.S. А ещё мне всегда было интересно, почему ядро тестовых выпусков Fedora всегда сыпется во время перезагрузки после завершения установки.

Список улучшений в RFRemix 13

Итак, перечитав от начала и до конца все комментарии в посте RFRemix Brainstorming можно выделить следующие улучшения, которые мы постараемся включить в RFRemix 13:

Firstboot

  • Добавить возможность выбора между GDM и KDM, возможно Slim (к сведению, сейчас если в системе установлен только KDE, то менеджером входа в систему является KDM);
  • Переключение между режимами cpufreq;
  • Возможность включения Ctrl+Alt+Backspace;
  • Настройка автологина для конкретного пользователя;
  • Возможность отключение ipv6;
  • Простая настройка sudo.

Установщик

  • Добавить выбор дополнительных конфигураций. Оптимизация и минимизация установки
  • Адаптация preupgrade для обновлений RFRemix
  • Добавить condition на man-pages-ru.

Комплектация

  • Добавить qmmp;
  • Шрифты google droid и ПараТайп ПТ;
  • Удалить gtk-qt-engine;
  • Собрать наконец goldendict;
  • Исправить foo2jz HP1012 (если это требуется);
  • Включение Yumex на диски, как альтернативу Gnome PackageKit;
  • Добавить synce-gvfs
  • Добавить пакет OldFonts для .

Другое

  • Добавить переключатели для раскладок клавиатуры lwin_toggle и caps_toogle (а его нету, нужно добавить везде).

Исправления

  • Rdesktop с патчами от ALT Linux

Нужна помощь
Хотелось бы сделать доработку в PackageKit для определения драйверов видеокарт. Хотя сейчас есть только Nvidia и только для определённых серий карт, однако даже это было бы полезно. Можно немного упростить задачу и сделать обёртку вокруг PackageKit, которая бы определяла системную видеокарту и предлагала бы установить нужные пакеты. Также это нужно сделать для различных wifi модулей.

RFRemix Brainstorming

Сегодня на дворе 18 января и до выхода Fedora 13, который назначен на 11 мая (наверняка перенесут) осталось почти четыре месяца. Самое время подумать что можно улучшить в RFRemix.

  • Дописать что-то в firstboot,
  • Автоматически настроить что-то при первом зупуске,
  • Исправить какие-то очевидные вещи,
  • Сделать какую-то новую комплектацию.

В общем объявляется такой вот Brainstorming. Все мысли в комментариях. Потом составим список полезных советов.

Обновлено 19.01.2010 23:48

Из того, что уже предложили:

  1. В Firstboot добавить выбор между KDM/GDM/Slim и режимы cpufreq,
  2. Добавить кое какие пакеты в минимальную установку,
  3. Поразбираться с preupgrade,
  4. Подсобрать oldfonts, rdesktop с патчем, synce-gvfs,
  5. Придумать какие-то новые типы установки, включая добавление их в comps.xml
  6. Добавить Гугловые шрифты, подумать над оформлением

Сервисы в Fedora 12

Переведена статья, посвященная сервисам в Fedora 12. Почитать русскоязычный вариант можно в блоге автора. Большое спасибо товарищу xandry за перевод!

Установка и настройка Devil'sPie

Блог Fedora на open-life.org - Чт, 2009-12-10 07:15
Когда я начал перевод этой статьи, думал что она про это, оказалось все намного прозаичнее. Эта статья о том, как в терминале гнома убрать оформление окон и рамку окна. Чтобы получилось что-то вроде запуска терминала в качестве фоновой картинки. Может кому-то будет полезна данная статья.

Установка Gnome-Do Docky в Fedora 12

Блог Fedora на open-life.org - Пнд, 2009-12-07 14:45
После установки Fedora 12, я скоро понял, что известная тема “Docky” для Gnome-Do отсутствует. После блужданий по форумам я понял, что она удалена из репозиториев.
Что ж, значит будем ставить ее из исходников.

Обновление F11 на F12. Не без приключений

andrmart @ - Пт, 2009-11-20 10:59
Сразу после выхода Fedora 12 зачесались руки перейти на новую версию раньше всех, благо доступ к системе зеркалирования Fedora Mirror есть.

Начало было обнадеживающим. На диске доступно 2,5Гб дискового пространства, утилита preupgrade установлена.

Запускаем, подключаемся к ближайшим зеркалам. Preupgrade проверила все зависимости, даже не поперхнулась подключанными репозитариями RpmFusion*. Начаем 1Гб файлов, перезагружаемся и установка началась.

Все хорошо идет, правда немного медленно. Обновление выполняется визуально раза в 3 медленне, чем новая установка. Я безбожно щелкаю по консолям Alt+Ctrl+Fn.

И тут случилось страшное: ошибка инсталятора и перезгрузка. Приехали.... :(

Система загружается, на экране проскочило несколько ошибок. Вход в систему. Интернет есть (проводной и WiFi). Звук не работает.

Смотрю "yum list". На диске установлены пакеты XXX.fc11 и XXX.fc12, и так почти для всего ПО. Обновления показываются только для F11.

Не вдаваясь в детали разбора полетов расскажу как все вылечилось:
# rpm -ihv /var/cache/yum/preupgrade*/packages/*.rpm --replacepkgs

Процесс переустановки всех пакетов, запланированных к обновлению прошел довольно безболезненно.

Проверяем, что в сухом остатке "rpm -qa | grep fc11" - около 10 пакетов. Они не мешают жить и видимо уйдут после следующего набора исправлений к F12.

Хотя можно было бы попробовать програть обновление заново, но уже поздно.

Итоги:
1. Как тебя жизнь ни учит, резервную копию перед обновлением все же делать надо
2. Переход на следующую версию проходит безболезненно (ну почти)
3. Система Fedora живучая, даже сбой обновления ее не сильно вывел из строя
4. Обновление это зло - надо ставить систему заново
5. Наличие скоростного безлимитного интернета избавляет мороки с дисками

P.S. заметка написана несколькими днями позже, просле проверки того, что система в таком состоянии способна корректно работать
RSS-материал