Каковы хорошие дистрибутивы (и методы) Linux для разработки новейших пакетов Linux для апстрима (ядро, Gnome и т. Д.)? - PullRequest
7 голосов
/ 08 октября 2010

Люди, которые действительно знают ответ на этот вопрос, - те, кто разрабатывает программы или библиотеки, которые включены в дистрибутивы Linux, и которые зависят от других библиотек, которые включены в дистрибутивы Linux.Они просто рассказывают мне, что они делают с точки зрения среды разработки, которую я описываю, было бы полезно.

Проблема, в основном, заключается в следующем:

В дистрибутивах Linux ядро ​​Linux объединено с типичной системой Linux -glib, dbus, udev и тому подобное.Большинство также включает в себя окружение рабочего стола, такое как KDE или Gnome.

Хотя в дистрибутиве может быть несколько собственных пакетов программ, большинство программ и библиотек происходят из апстрима, то есть из источников, отличных от себя.Такие пакеты, как dbus, являются «восходящими» и передаются в дистрибутивы, такие как Debian, Fedora, Ubuntu и т. П.

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

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

Если я сталкиваюсь с ошибкой в ​​программе или библиотеке и сообщаю о ней в исходном потоке, часто возникает вопрос: «Используете ли вы последнюю версию в системе контроля версий илистарая версия ".Понятно, что разработчики хотят, чтобы я использовал код из последнего коммита, так как они не хотят тратить время на пересмотр уже пройденного пути, особенно если ошибка была исправлена.

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

Примером может быть, если я смотрю PDF-файл с программой чтения по умолчанию в Ubuntu,,Он не отображается должным образом из-за того, что, как представляется, является недостатком в попплеровской библиотеке, от которой зависит.Поэтому я публикую ошибку, но они хотят знать, есть ли у меня последняя версия poppler.Поэтому я загружаю последнюю версию poppler commit, но библиотека poppler зависит от библиотеки cairo, а в моей ОС нет последней библиотеки cairo.Поэтому я должен это получить - но затем Каир жалуется, что у меня нет последних библиотек pixman и x11.

Это один из примеров этого, но он подходит практически для любого пакета.

Итак, мой вопрос: какой хороший дистрибутив Linux использовать для такого рода вещей?Тот, который известен наличием самых современных пакетов или, по крайней мере, возможностью легко их получить?

Или, возможно, дистрибутив Linux, который позволяет мне делать такие вещи проще.Я слышал разговоры о том, как Gentoo собирает из исходного кода через emerge, и я видел, что это решает множество проблем.

Также есть возможность иметь подсистему последних пакетов в среде chroot в другой системе, используятакие инструменты, как pbuilder и debootstrap.

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

Ответы [ 6 ]

4 голосов
/ 08 октября 2010

Примите участие в дистрибутиве, сосредоточьтесь на пакетах, которые вы хотите улучшить
Distros гарантирует, что версии пакетов хорошо работают вместе. Это первая работа по созданию системы Linux, и они уже сделали это. Они гарантируют, что все "подходит". Если вы хотите улучшить пакет, сделайте улучшения в версии дистрибутива. Если исправление содержит значение, оно может быть применено к последней версии.

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

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

Сосредоточьтесь на том, где вы можете ввести значение, и не тратьте 1/4 своей жизни, ожидая сборки и выясняя, почему пакет X не будет компилироваться с библиотекой Y, если вы все равно хотите работать только на Z!

Я работаю с Fedora Rawhide , когда делаю какие-либо разработки, это не так круто, как некоторые, но предлагает хорошую стабильность и изменчивость IMVHO

Или всегда есть:

Linux From Scratch , если вам нравится боль.

2 голосов
/ 08 октября 2010

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

Тем не менее, я начал с Debian в 1994 году и до сих пор использую его так же, как и Ubuntu (и я поддерживаю пакеты для Debian также с 1995 года). Когда я работаю в Ubuntu, я иногда беру исходный пакет из Debian unstable и собираю его локально - что на самом деле довольно просто, но действительно полезно . Таким образом, у меня есть лучшее из обоих миров: «достаточно актуальный» набор всего через двухлетние обновления Ubuntu, а также выборочные вставки всего, что мне нужно, что является передовым. Очень хорошая альтернатива - тестирование Debian, которое я проводил в других системах.

Другим вариантом является виртуализация: просто добавьте экземпляр kvm, или xen, или virtualbox из безголового дистрибутива «крайний край» (скажем, нестабильный Debian) для тестирования.

1 голос
/ 08 октября 2010

Выбор дистрибутива не должен иметь большого значения. Нестабильная версия Debian, версия Fedora rawide или версия Mandriva Cooker должны подходить для среды разработки пакетов Linux.

1 голос
/ 08 октября 2010

Gentoo отлично разбирается в новейших пакетах, если вы снимаете маску с "~ x86" (или ~ amd64, или ~ arch для любой вашей арки).

ebuild'ы могут интегрироваться с управлением версиями, поэтому не так сложно заставить модифицированный ebuild получить самую последнюю версию ревизии svn или git, а затем скомпилировать и установить ее так, как если бы это был распределенный пакет.

0 голосов
/ 24 ноября 2012

Что касается моего вопроса выше, я обнаружил, что Gnome имеет систему сборки под названием "jhbuild" (live.gnome.org/Jhbuild), где вы можете получить последние версии git commit всего проекта Gnome. Так что это было бы решением для примера сверху. Я согласен, что KVM - это хорошая среда, в которой можно поиграть, не беспокоясь о слишком большом ущербе, я начал делать это больше после прочтения ответов. Спасибо за ответы.

0 голосов
/ 08 октября 2010

Gentoo полезен, если вам нужно или вы хотите отредактировать исходный код пакета. Однако, если вам нужны только двоичные файлы, Arch Linux - хороший выбор, и он хорошо документирован. Если вам нужен больший контроль, вы всегда можете загрузить и скомпилировать пакеты самостоятельно, но я вижу, что вам нужны только современные пакеты, поэтому Arch будет лучше. Вам решать.

...