Когда использовать пакеты в aptitude или CPAN/Gems/PyPI?

Каково общее правило, когда устанавливать пакет с официального .deb хранилища, по сравнению с тем, когда устанавливать с помощью менеджера пакетов языка? Те из них, которые находятся в исходных репозиториях, часто, по крайней мере, немного устарели, но я также не хочу, чтобы мои пакеты сталкивались с "официальными", и кажется, что aptitude заставит меня установить официальный во многих случаях так или иначе.

3 ответа

Решение

На этот вопрос сложно ответить в общем.

Официальные пакеты.deb дают вам стабильность и полную поддержку со стороны сообщества Ubuntu. Если вам не нужна последняя версия, вам лучше воспользоваться этим решением. У вас также есть менеджер пакетов поддержки для обновления, удаления и т. Д.

Если вам нужна поддержка со стороны апстрима или вам нужны новейшие функции, вам лучше получить ее из таких дистрибутивных систем, как CPAN, gem, pear и т. Д.

По моему (по общему признанию, не слишком обширному) опыту менеджеры пакетов, ориентированные на конкретный язык, нигде не справляются с такой работой .deb те, в которых отслеживаются зависимости, которые полностью выходят за границы языка (я особенно думаю о зависимостях от C-кодированных библиотек, которые пакет переносит для использования в Python, Perl, Ruby и т. д.).

Если (скажем) пакет Pypi Python 'barfoo' требуется некоторая библиотека libfoobar для того, чтобы построить _bf.so Расширение Python, которое использует пакет и нуждается в нем libfoobar быть хотя бы на выпуске 5.2вам решать, какие .deb поставляет подходящие выпуски libfoobar (и вы можете его не найти, если пакет Pypi отслеживает близко к последним и лучшим версиям апстрима) - и каким-то образом отслеживать его в случае удаления barfoo позже (так что libfoobar поставщик становится "осиротевшим" и может / должен быть удален).

Я не думаю, что проблему интеграции Pypi/CPAN/etc с другими системами распространения пакетов еще можно считать "решенной". Для минимальных административных головных болей, если вы можете обойтись с официальным .deb (не нужен последний и самый лучший feechurz &c), я думаю, что это было бы целесообразно; с другой стороны, конечно, для пакета, который вы хотите супер-обновить (например, вы являетесь одним из его авторов / сопровождающих;-), есть возможность сохранить свежее репо в любом контроле версий Система, которую использует пакет (svn, hg, git, bazaar, ...) и хранящая его из исходников. Pypi/CPAN/&c "в середине". Конечно, иногда этот средний путь будет целесообразным.

И один из вариантов, который может быть рассмотрен, это создать свой собственный .deb пакет (основанный либо на Pypi / CPAN / & c, либо даже на исходных кодах) и сохраняйте свой репозиторий таких пакетов (для тех пакетов, для которых вы находите официальный .deb слишком плохие репо или задом наперед). Это не намного сложнее, чем установка в противном случае (ручное отслеживание зависимостей вне языка), и это поможет идентифицировать "потерянные пакеты" и тому подобное (плюс, если вы опубликуете свою упаковку, вы также можете помочь другим людям;-).

Я действительно был против использования Aptitude для управления пакетами из другого менеджера пакетов. CPAN, Gems, Pecl, Pear и т. Д. Являются менеджерами пакетов для своих языков. Они - то, что вы должны по умолчанию - по моему мнению - потому что это то, для чего они предназначены. Не говоря уже о большинстве всех этих обновлений и обновлений (обновление gem, обновление gem и т. Д.). Это было бы похоже на использование yum для установки Apache на ваш Ubuntu Machine.

Тем не менее, есть несколько случаев, когда версия Aptitude царит. Одним из таких случаев является случай, когда происходит сбой установки модуля из диспетчера пакетов языков (обычно это происходит из-за различных проблем конфигурации). Я редко сталкиваюсь с этой проблемой - но когда я делаю соответствующий пакет из Aptitude, делает свое дело.

Приоритет на мой взгляд Менеджер языковых пакетов> Aptitude.

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