Книга: Искусство программирования для Unix
19.2.4.4. Проектирование с учетом обновлений
19.2.4.4. Проектирование с учетом обновлений
По мере выхода новых версий, программы изменяются. Некоторые изменения обратно не совместимы. Соответственно, следует серьезно продумать проектирование схемы инсталляции, для того чтобы несколько установленных версий кода могли сосуществовать в одной системе. Это особенно важно в отношении библиотек — нельзя рассчитывать на то, что все клиентские программы будут обновляться по мере изменения вашего API-интерфейса.
Проекты Emacs, Python и Qt имеют хорошее соглашение для реализации этого принципа: каталоги с номерами версий (другой практический прием, который, вероятно, становится установившейся практикой благодаря FSF). Ниже показано, как выглядит установленная библиотека Qt (${ver}
— номер версии).
/usr/lib/qt /usr/lib/qt-${ver}
/usr/lib/qt-${ver}/bin # Расположение moc
/usr/lib/qt-${ver}/lib # Расположение .so
/usr/lib/qt-${ver}/include # Расположение заголовочных файлов
При наличии такой организации сосуществование нескольких версий вполне возможно. Клиентские программы должны указывать необходимую версию библиотеки, однако это небольшая цена, которую приходится уплатить, чтобы не иметь сбоев в интерфейсах. Данная практика позволяет избежать печально известного "ада DLL", характерного для Windows.
- 19.2.4.1. Убедитесь, что архивы всегда распаковываются в один новый каталог
- 19.2.4.2. Включайте в дистрибутив README-файл
- 19.2.4.3. Придерживайтесь стандартной практики именования файлов
- 19.2.4.4. Проектирование с учетом обновлений
- 19.2.4.5. В Linux создавайте RPM-пакеты
- 19.2.4.6. Предоставляйте контрольные суммы пакетов
- 19.2.4. Хорошая практика создания дистрибутивов
- 8.2. Проектирование
- 6.2. Проектирование, обеспечивающее прозрачность и воспринимаемость
- Урок 7.4. Проектирование базы данных. Создание связей между таблицами
- Проектирование наследования
- Проектирование
- 1.4.1. Проектирование программ
- Примеры к главе 13 (проектирование пользовательского интерфейса)
- Центр обновлений Windows
- 16.2. Установка драйверов с помощью Центра обновлений Microsoft
- 5.3. Проектирование протоколов прикладного уровня
- Лабораторная работа № 2 Проектирование лексического анализатора