Распространение пакетов на системном уровне и на уровне приложений

Если я создаю служебную программу командной строки FOSS (т.е. приложение, а не библиотеку) и хочу распространить ее как пакет для удобной установки, это Лучше сделать это с помощью:

NB. Если вы считаете, что не существует общепринятой практики, а есть определенные обстоятельства, при которых тот или иной подход явно является наилучшим, то каковы эти обстоятельства?


person Community    schedule 20.06.2012    source источник


Ответы (2)


Согласно этой записи в блоге, основные причины, по которым вам следует

НИКОГДА не устанавливайте модуль Python для всей системы с помощью setuptools / ez_setup в вашей системе Debian.

являются

  1. что у вас могут быть разные версии одних и тех же модулей Python в разных путях установки (установленные через easy_install и aptitude)

  2. нет easy_uninstall. (Однако pip, похоже, может это сделать: Как удалить пакеты, установленные с помощью easy_install Python?)

То же самое относится к инструменту CLI, который также является своего рода модулем (Python).

Конечно, упаковка для easy_install требует меньше усилий, чем упаковка для всех системных менеджеров пакетов. Но почему бы вам не упаковать свой инструмент в easy_install и не попросить помощи у кого-нибудь, кто знаком с упаковкой для конкретных целей? (Для Debian вы можете попробовать отправить электронное письмо на [email protected] с темой, начинающейся с «[need-Packaging]».)

Позвольте мне сказать только из моего ограниченного опыта в качестве пользователя - Python и Debian / Ubuntu. Когда я наконец перешел с Windows на Ubuntu, одной из основных причин была безболезненная установка почти всего программного обеспечения, которое было упаковано для Debian. Одним из вопросов первого переходного периода были:

«Какой самый последний инструмент multi-way diff? Хорошо, есть смешение и диффузия. Давайте посмотрим ...»

sudo apt-get install meld diffuse

«Хорошо. И этот менеджер буфера обмена назывался Parcellite?»

sudo apt-get install parcellite

«Я люблю Task Coach. У них он есть?»

sudo apt-get install taskcoach

"А почему svn не устанавливается из коробки?"

sudo apt-get install svn
... (some error)
apt-file search svn
... (tl;dr)
apt-file search svn | grep /svn$
sudo apt-get install subversion

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

person krlmlr    schedule 28.06.2012
comment
Я благодарен за ваш ответ, но он кажется немного односторонним и основан только на одном источнике, в котором содержится по крайней мере одна критика, которая больше не актуальна. - person ; 29.06.2012
comment
@sampablokuper: проблема с разными версиями на разных путях все еще актуальна. - person krlmlr; 29.06.2012
comment
Даже в этом случае я не хочу приписывать недостатки конкретного диспетчера пакетов уровня приложения менеджерам пакетов уровня приложения в целом. Я думаю, что недостатки имеют отношение к моему вопросу, только если они (почти) все разделяют недостатки. - person ; 29.06.2012

Мне кажется, что процедура, применяемая в случае приложений, пользователи которых довольны тем, как они распространяются, выглядит примерно так:

введите описание изображения здесь

Возьмем, например:

  • Bundler: написан на Ruby и полезен разработчикам на Ruby; распространяется через пакет прикладного уровня.
  • fwknop: написано на Perl (по крайней мере, изначально) и полезно для конечных пользователей; распространяется через пакеты / установщики системного уровня.
  • Pandoc: написан на Haskell и может быть полезен разработчикам Haskell в ходе разработки приложений Haskell, но также полезен для других; распространяется как через пакеты на уровне приложений и через пакеты на уровне системы.

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

NB. Код для блок-схемы - в Интернете, на случай, если вы захотите адаптировать его для ваш ответ. Чтобы использовать его, вам понадобится работающая установка LaTeX.

person Community    schedule 29.06.2012