Люди, которые действительно знают ответ на этот вопрос, - это те, кто разрабатывает программы или библиотеки, которые включены в дистрибутивы Linux и которые зависят от других библиотек, включенных в дистрибутивы Linux. Было бы полезно просто сказать мне, что они делают с точки зрения описываемой мной среды разработки.
Проблема в основном такова:
Дистрибутивы Linux объединяют ядро Linux с типичной системой Linux - glib, dbus, udev и т.п. Большинство из них также объединяют среды рабочего стола, такие как KDE или Gnome.
Хотя в дистрибутиве может быть несколько собственных пакетов программ, большинство программ и библиотек поступают из апстрима, то есть из источников, отличных от него самого. Такие пакеты, как dbus, являются «восходящими» и переходят вниз по течению к таким дистрибутивам, как Debian, Fedora, Ubuntu и т. Д.
Иногда я использую эти программы и чувствую, что их можно улучшить. Некоторые из улучшений представляют собой исправления ошибок, с которыми действительно невозможно поспорить - скажем, небольшой патч, который предотвращает ошибку сегментации из-за ненужного нарушения памяти.
При сборке этих пакетов в состав дистрибутивов входят списки "зависимостей", поскольку многие из этих программ полагаются на определенные библиотеки (и определенные версии этих библиотек), а некоторые из этих библиотек полагаются на другие библиотеки. Это приводит к некоторым осложнениям, с которыми я сталкиваюсь.
Если я сталкиваюсь с ошибкой в программе или библиотеке и сообщаю об этом вверх по течению, общий вопрос: «Вы используете последнюю версию в системе контроля версий или более старую версию». Понятно, что разработчики хотят, чтобы я использовал код из последнего коммита, так как они не хотят тратить время на повторение пройденного пути, особенно если ошибка была исправлена.
Итак, я иду за последней фиксацией. Но затем я сталкиваюсь с проблемой, потому что последняя фиксация теперь зависит от библиотеки, которая новее, чем моя операционная система.
Примером может быть случай, когда я просматриваю PDF-файл с помощью программы чтения по умолчанию в Ubuntu, например. Он не отображается должным образом из-за того, что кажется недостатком в библиотеке poppler, от которой зависит. Итак, я публикую сообщение об ошибке, но они хотят знать, есть ли у меня последняя версия poppler. Поэтому я загружаю последнюю версию коммита poppler, но библиотека poppler зависит от библиотеки cairo, а в моей ОС нет последней библиотеки cairo. Так что я должен это понять, но затем Каир жалуется, что у меня нет последних библиотек pixman и x11.
Это один из примеров, но он подходит практически для любого пакета.
Итак, мой вопрос: какой хороший дистрибутив Linux можно использовать для такого рода вещей? Тот, который известен наличием самых последних пакетов или, по крайней мере, возможностью легко их получить?
Или, может быть, дистрибутив Linux, который позволяет мне делать такие вещи проще. Я слышал разговоры о том, как Gentoo строится из исходного кода через emerge, и видел, что это решает множество проблем.
Также есть возможность иметь подсистему последних пакетов в chrooted среде в другой системе с использованием таких инструментов, как pbuilder и debootstrap.
Наконец, я мог просто загрузить последние коммиты всех библиотек, построить ту, которая не имеет зависимостей, которые меня беспокоят, а затем перейти к следующей и построить ее, указав программе использовать мою скомпилированную локальную библиотеку, а не систему. библиотека, а затем сделайте это снова и так далее. Это то, чего я пытаюсь избежать по ряду причин (слишком много ручной работы, я могу пропустить важную зависимость и т. Д.)