Как я могу упростить свой стек диспетчеров пакетов?

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

  • apt-get для общесистемных пакетов
  • npm для пакетов узлов
  • Пип для пакетов Python
  • pip3 для пакетов Python 3
  • клика для пакетов Haskell
  • композитор для пакетов php
  • беседка для фронтальных пакетов
  • драгоценный камень для рубиновых пакетов
  • мерзавец для других вещей

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

Я обнаружил, что могу избежать установки и использования pip / pip3, просто установив пакеты python из apt, например sudo apt-get install python3-some-library, Это избавляет от необходимости использовать один менеджер пакетов. Это потрясающе. Но потом я застрял с версиями этих пакетов для Ubuntu, которые часто бывают очень старыми.

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

1 ответ

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

Лучший совет, который у меня есть, это попытаться уменьшить ваш набор инструментов для каждого типа проекта. В идеале вам не нужно работать на всех языках, которые вы знаете, для каждого проекта, над которым вы работаете. Сколько проектов вы используете, которые используют оба Python 2 и Python 3 одновременно?

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

Я работал с командой, которая использовала composer, npm, bower, bundler, mavenи tar.gz файл для внешних SPA, потому что это инструменты, которые они знали. Вдобавок ко всему, они использовали vagrant просто как развертыватель. Мы рассмотрели наш инструментарий и описали нашу потребность и поняли, что она может быть выражена на одном языке, как только мы примем соответствующий инструментарий для поставленной задачи.

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