Блог:Точка Росы

Материал из Rosalab Wiki
Перейти к: навигация, поиск
Rosa-point-logo2.png

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

Если вы умеете пользоваться агрегаторами RSS/Atom, подписывайтесь!. По любым вопросам можно писать сюда.

Весь контент данного блога распространяется на условиях Creative Commons Attribution-ShareAlike 3.0 License (CC-BY-SA)

Обновления дистрибутива и обратная совместимость

С точки зрения разработчиков, поддержка выпущенного дистрибутива заключается преимущественно в исправлении ошибок и устранении проблем с безопасностью в его компонентах. Для решения этих задач создаются патчи, либо производится обновление ПО до более новых версий, где проблема уже решена. Большинство подобных обновлений затрагивает только саму программу, однако в ряде случаев изменения могут сказаться и на других компонентах системы. Особенно остро этот вопрос стоит в случае обновления библиотек, используемых многими приложениями. Ведь обновление до новой версии или даже наложение патча может привести к изменению внешнего интерфейса (API/ABI) библиотеки и, как следствие, — к неработоспособности использующих ее программ. Полбеды, если это программа из репозитория дистрибутива — такую ситуацию мы можем отследить и обновить саму программу. Но если пользователи установили стороннее ПО, то потеря работоспособности этого ПО после обновления явно не вызовет восторга.

С момента выхода ROSA 2012 Marathon прошло немногим более трех месяцев, и за это время были обновлены несколько сотен пакетов — в том числе и библиотек. Безусловно, каждое обновление проходит проверку нашим отделом QA, но вероятность пропустить «нехорошее» изменение всегда присутствует. Поэтому мы решили провести исследование — насколько сильно отличается API библиотек в «оригинальной» ROSA 2012 Marathon и недавно выпущенном обновленном образе RP1.

Для исследования мы использовали инструментарий ABI compliance Checker, доступный на сайте http://upstream-tracker.org. Результаты анализа можно наблюдать здесь:

http://upstream-tracker.org/compatibility/ROSA_2012_LTS_to_ROSA_2012_LTS_RP1/x86/abi_compat_report.html

Как видим, обновления библиотек практически не привели к изменению из API/ABI. В некоторых библиотеках появились новые функции, но это не влияет на обратную совместимость. Из серьезных модификаций можно выделить добавление модификатора 'const' к возвращаемым значениям ряда функций в libbabl (согласно документации, наличие 'const' там неявно подразумевалось и ранее, а теперь «закреплено» формально), а также удаление нескольких функций из libdc1394 (для устранения конфликта с libusb). Так что если вы установили в систему какие-то сторонние приложения — можно не беспокоится, после обновлений их работоспособность не нарушится.

Конечно, три месяца — небольшой срок, особенно по сравнению со пятилетним сроком поддержки Marathon, но мы постараемся и дальше следить за обратной совместимостью и гарантировать работу установленных приложений (пусть даже и не имеющих отношения к РОСе) после установки всех обновлений.


Кастомные чекбоксы в багзилле

Многие знают, что Bugzilla — популярная система багтрекинга, которая также используется и у нас для отслеживания багов в ROSA Desktop, — содержит такую интересную вкусность, как добавление «настраиваемых полей» или «кастомных полей» в тикеты. То есть можно, не исправляя код, через «админку» создать новое поле, которое можно будет заполнять по определённым правилам и — что ещё важнее — использовать при фильтрации и поиске багов.

При этом такая функциональность не повсеместна. Например, авторы некоторых систем отслеживания багов активно ей противодействуют. Но в багзилле она есть, и мы ей активно пользуемся, например, чтобы давать пользователю поле для ввода имени RPM пакета (в недалёком будущем это свяжет багзиллу с базой данных мэйнтэйнеров на ABF). А чуть позднее, понадобилось добавить поле для того, чтобы помечать баги, для решения которых нужно исправить скрипты сборки дистрибутива. Казалось бы, чего может быть проще: добавил кастомное поле типа «галочка» («checkbox») — и вперёд. Но тут мы столкнулись с проблемой.

Оказалось, кастомного поля типа «checkbox» в Bugzilla просто нет.

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

При этом, разумеется, надо нами нависала бритва Оккама, призывающая не плодить сущности без необходимости, — особенно если тебе напложенное и поддерживать. Следовало подумать — каким из вышеприведённых полей соответствует чекбокс? Вдруг такая логика уже есть, но просто неочевидна? Поле такое действительно имеется — «выбор нескольких вариантов» с всего одной альтернативой. То есть или ты её выбираешь, или нет, что соответствует логике чекбокса. Как это выглядит на практике:

Bugzilla one select.png

По сути, это готовый чекбокс. Отмечено «yes» — значит «checked». Не отмечено — не «checked». Но этот интерфейс, который был бы понятен, если бы альтернатив было несколько, похож не то на поле ввода, не то на баг, и пользователям пришлось бы дольше объяснять, что к чему. Решением было автоматически, никого не спрашивая, превращать такие «выборы», где есть только одна альтернатива, в протестные митинги и демонстрации на Болотной в «checkbox». И тогда вместо той некрасивой картинки у пользователей был бы интуитивно понятный чекбокс:

Bugzilla custom checkbox.png

Конечно, можно было бы сделать это кейвордом, но кейворды менее удобны: их надо запоминать, вводить клавиатурой, а чекбокс — всегда на виду, и надо только кликнуть мышкой.

Это решение развёрнуто на багзилле РОСЫ , а если хотите поставить у себя, то вот вам патч к багзилле версии 4.2: Файл:Bugzilla 4.2 checkbox.patch, лицензия BSD.

Альтернативные способы установки РОСЫ

Традиционным способом установки «РОСы» на физическую машину является запись установочного образа системы (iso-файла) на Flash или DVD-диск и последующая загрузка с него. Однако записывать образ на съемный носитель не обязательно — загрузка возможна непосредственно с iso-файла, расположенного на жестком диске. Если на вашей машине уже установлен какой-либо Linux-дистрибутив, то вы можете скачать в нем образ ОС ROSA и загрузиться с него, используя загрузчик вашего дистрибутива, как это описано здесь.

Энтузиасты, работающие в ОС Windows, могут установить загрузчик Grub4dos и сконфигурировать его так же, как описано в инструкции для Grub.

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

Использование других средств виртуализации также не должно вызвать затруднений, однако в некоторых случаях могут понадобится дополнительные настройки. Например, если вы работаете в операционной системе MacOS X и хотите использовать программу Parallels Desktop для запуска Росы, вам могут пригодиться советы от Максима Куприянова.


Загрузчик ROSA Marathon с добавленными пунктами для загрузки с iso-образа («ROSA Live» и «ROSA Install»)

Загрузчик ROSA Marathon с добавленными пунктами для загрузки с iso-образа.png

Отслеживание статусов пакетов в ROSA 2012 Desktop

В инструментарий ROSA Updates Tracker, предназначенный для сравнения версий пакетов РОСЫ и родственных систем с апстримом, добавлена поддержка разрабатываемого релиза ROSA 2012 Desktop: http://upstream-tracker.org/updates/rosa/2012.1/

В настоящее время производится сравнение версий пакетов с ROSA 2012 Marathon, Mandriva Cooker и Mageia Cauldron.

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

Обратите внимание, что на момент написания этой заметки часть пакетов еще не была пересобрана для новой системы. Для таких пакетов статистика отсутствует.

Для пакетов библиотек, изменения в которых отслеживаются сайтом http://upstream-tracker.org, доступен анализ совместимости различных версий. Такой анализ призван помочь мантейнерам оценить — насколько болезненным будет переход на новую версию. Вот так, например, выглядит отчет о совместимости различных версий lame: http://upstream-tracker.org/versions/lame.html

Статистика ROSA Updates Tracker обновляется ежедневно.

Мониторинг репозиториев РОСЫ

На сайте http://upstream-tracker.org, поддерживаемом сотрудниками РОСЫ, добавлены две секции со статистическими отчетами о состоянии наших репозиториев.

Первая секция предосталяет отчеты о пакетах с недостающими зависимостями (генерируемый утилитой urpm-repoclosure):

http://upstream-tracker.org/repoclosure_logs/

Вторая секция содержит информацию об устаревших пакетах (для которых есть более новые версии в тех же репозиториях), которые могут быть удалены с серверов (отчет строится с помощью urpm-repomanage):

http://upstream-tracker.org/repomanage_logs/

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

Статистика на upstream-tracker.org обновляется ежедневно.


« новейшие 20 более старых › старейшие »