Резюме
Недавно я поговорил с создателем структуры, от которой зависит одно из моих приложений. Во время этой беседы он упомянул в чем-то вроде того, что это упростит мою жизнь, если бы я просто связал свою структуру с моим приложением и довел до конечного пользователя версию, которая, как я знал, соответствовала моему коду. Интуитивно я всегда старался избегать этого, и на самом деле я старался сегментировать свой собственный код, чтобы его можно было перераспределить, не взяв весь проект (даже когда имелось очень мало шансов, что кто-нибудь из Это). Однако, после обдумывания его в течение некоторого времени, я не смог найти особенно вескую причину, почему я это делаю. Фактически, теперь, когда я подумал об этом, я вижу довольно убедительный случай, чтобы связать все мои меньшие зависимости. Я придумал список плюсов и минусов, и я надеюсь, что кто-то может указать на то, что мне не хватает.
Pros
- Согласованность версий означает тестирования и устранения неполадок.
- Приложение может достигать более широкого аудитории, поскольку меньше компонентов для установки.
- Небольшие изменения в зависимости могут легче сделать поставляется с заявкой, вместо того, чтобы ждать их перколировать в исходную кодовую базу.
против
- Более сложный процесс упаковки для включения зависимостей.
- Пользователь может получить несколько копий зависимости от их машины.
- В ответ на ответ bortzmeyer существуют потенциальные проблемы безопасности, поскольку они не могут обновлять отдельные компоненты.
Примечания
Для справки мое приложение написано на Python, и зависимости, на которые я ссылаюсь, являются "легкими", и я имею в виду небольшие и не очень часто используемые. (Таким образом, они не существуют на всех машинах или даже во всех хранилищах.) И когда я говорю "пакет с" моим приложением, я имею в виду распространение под своим собственным исходным деревом, а не установку с script, который находится внутри моего пакета, поэтому не было бы шансов на противоречивые версии. Я также разрабатываю исключительно Linux, поэтому проблем с установкой Windows не беспокоиться.
Все, что было сказано, мне интересно услышать мысли о более широкой (независимой от языка) проблеме зависимости от упаковки. Есть ли что-то, чего я не вижу, или это простое решение, которое я просто передумал?
Добавление 1
Стоит упомянуть, что я также очень чувствителен к потребностям пакетов вниз по потоку. Я хотел бы, чтобы это было максимально простым, чтобы обернуть приложение в Deb-RPM, специфичном для распространения.