Почему исходники Ubuntu отличаются от оригиналов?

Когда я делаю:

wget ftp://ftp.openbsd.com/pub/OpenBSD/OpenSSH/portable/openssh-5.8p1.tar.gz
wget ftp://ftp.openbsd.com/pub/OpenBSD/OpenSSH/portable/openssh-5.8p1.tar.gz.asc
gpg openssh-5.8p1.tar.gz.asc 
tar -zxvf openssh-5.8p1.tar.gz
mv openssh-5.8p1 openssh-5.8p1_downloaded
apt-get source openssh-server
diff -r openssh-5.8p1 openssh-5.8p1_downloaded/ | wc -l

я получаю множество различий (wc -l возвращает 3000 строк). Почему это так?

5
задан 2 February 2012 в 21:45

1 ответ

Разработчики Ubuntu, которые управляют пакетами и импортируют приложения в репозитории Ubuntu , оставляют за собой право модифицировать эти приложения. Им разрешено делать это, так как почти все программное обеспечение там свободно лицензировано. Они не пытаются это скрыть, эти изменения видны всем. Фактически, они даже изменяют версию пакета, чтобы указать, что он отличается от оригинального выпуска. Выполненная вами команда apt-get source загрузила вас openssh-server в версии 5.8p1-7ubuntu1 . Обратите внимание на суффикс. (Вы можете проверить версию с любым менеджером пакетов). Схема orig_version-XubuntuY очень распространена среди всех пакетов. Номер X указывает номер редакции в Debian , а Y обозначает номер редакции в Ubuntu . Может быть, вы знаете об этом, но в качестве примечания для всех, кто мог бы прочитать этот ответ: большинство пакетов ubuntu копируются из репозиториев Debian - так что если разработчики Debian выпускали версию 5.8p1 семь раз, выпуская ее в репозитории каждый раз, когда они включив их изменения, и это первый раз, когда разработчики Ubuntu выпустили его со своими изменениями, итоговый номер версии будет 5.8p1-7ubuntu1.

Зачем им нужно или нужно включать собственные изменения, если версия для апстрима достаточно хороша?

  • Пакеты для апстрима предназначены для широкой аудитории. Однако в Ubuntu, как и в любом другом дистрибутиве, есть много специфических изменений, например, немного отличающаяся организованная файловая система. В этом случае любое приложение, использующее эти части архитектуры системы, которые были изменены исключительно в Ubuntu, нуждается в адаптации к Ubuntu.
    • Хорошим примером является то, что большинство приложений подготовлены так, чтобы они могли работать с Apport - средством обнаружения сбоев и сообщения об ошибках, которое используется исключительно в Ubuntu.
  • Во многих случаях (хотя и не в случае openssh-сервера) эти изменения необходимы для обеспечения правильной интеграции с рабочим столом. Не многие приложения знают о Unity, так как он не распространен в других дистрибутивах. Это означает, что если приложение должно интегрироваться с индикаторами, Dash или чем-то еще, разработчики Ubuntu должны реализовать эту функцию и выпустить приложение со своими изменениями в хранилище.
  • Все пост-релизные исправления выпускаются как локальное (для всей Ubuntu) изменение источника. Приложения никогда не обновляются до более новой версии основной ветки разработки в одном выпуске Ubuntu. Это означает, что если ваш Oneiric был выпущен с openssh-сервером 5.8p1, он не будет обновлен до 5.9p1 - вам нужно дождаться Precise или получить его самостоятельно. Тем не менее, Ubuntu предоставляет обновления, которые исправляют критические ошибки и проблемы безопасности. Эти исправления должны быть применены к версии в соответствующей серии Ubuntu - в вашем случае это Oneiric - и выпущены как изменения, внесенные в версию 5.8p1.
  • Иногда требования к качеству разработчика приложений ниже, чем к Ubuntu. Время от времени случается, что разработчики Ubuntu исправляют ошибку в приложении перед его загрузкой в ​​репозитории.
  • Бывает также, что номер редакции увеличивается без каких-либо изменений. Это тот случай, когда приложение необходимо перестроить из-за значительных изменений (или новой версии) библиотеки, от которой оно зависит. Затем номер ревизии увеличивается только для того, чтобы поднять версию пакета.

Вы можете получить больше информации об изменениях в этих двух местах:

Там вы можете найти интересующий вас пакет, выбрать интересующую вас версию и даже загрузить исходный пакет debian для ручного чтения всех файлов .patch , которые предоставлены разработчиками Ubuntu и применены к исходному источнику при сборке пакета Ubuntu.

Также обратите внимание, что эти изменения всегда кратко объясняются в журнале изменений пакета (доступно как на этих сайтах, так и с использованием большинства менеджеров пакетов на вашем компьютере - но ] есть ссылка на ваш openssh-server - прочитайте его хотя бы, чтобы заметить, как меняется номер версии при включении патчей).

Надеюсь, вы все поймете!

0
ответ дан 2 February 2012 в 21:45

Другие вопросы по тегам:

Похожие вопросы: