Nano Hash - криптовалюты, майнинг, программирование

Какие дистрибутивы (и методы) Linux являются хорошими для разработки последних исходных пакетов Linux (ядро, Gnome и т. Д.)?

Люди, которые действительно знают ответ на этот вопрос, - это те, кто разрабатывает программы или библиотеки, которые включены в дистрибутивы 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.

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

08.10.2010

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

Ответы:


1

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

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

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

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

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

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

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

08.10.2010

2

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

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

Другой вариант - виртуализация: просто добавьте для тестирования экземпляр kvm, xen или virtualbox безголового 'bleeding edge' (например, Debian unstable) для тестирования.

08.10.2010

3

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

08.10.2010

4

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

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

08.10.2010
  • Вдобавок, поскольку Gentoo собирает что-то из исходного кода, если вы обновляете определенные пакеты или целую группу пакетов, вы можете легко перестроить все их иждивенцы (и автоматически, используя revdep-rebuild). Бинарный дистрибутив требует, чтобы вы обновляли пакеты синхронно. 09.10.2010

  • 5

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

    08.10.2010

    6

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

    23.11.2012
    Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..