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

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

  • apt-get для общесистемных пакетов
  • npm для пакетов узлов
  • pip для пакетов python
  • pip3 для пакетов Python 3
  • Кабал для пакетов haskell
  • композитор для пакетов php
  • Bower для интерфейсных пакетов
  • gem для рубиновых пакетов
  • git для других вещей

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

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

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


person Jonathan    schedule 07.05.2015    source источник
comment
К сожалению, я не могу добавить к этому ничего полезного, но: я чувствую тебя, брат.   -  person Stefan Majewsky    schedule 23.05.2015


Ответы (1)


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

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

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

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

person Steve Buzonas    schedule 09.06.2017