Фон
Группа, с которой я работаю, использует и разрабатывает пакет Python, который для целей этого вопроса я назову foobuilder
. Мы обслуживаем обновления для систем Linux, используя частные RPM и Deb-репозитории, которые мы предоставляем нашим пользователям.
Недавно в PyPi был добавлен публичный пакет с тем же именем. Он также был упакован в общедоступном репозитории Debian, среди других мест. Поскольку мы публично не рекламируем нашу посылку, понятно, что посылка с тем же именем всплыла.
Беспокойство
Это выглядит большой проблемой для foobuilder
, потому что где-то в будущем пользователь может попытаться установить наш foobuilder
, в то время как общедоступный пакет foobuilder
установлен в той же системе.
Помимо очевидной проблемы в Python, я бы предположил, что добавление нашего репозитория в программу менеджера пакетов Debian также может вызвать некоторые проблемы, хотя я еще не играл с этой ситуацией.
Задача
Поскольку мы использовали проприетарный foobuilder
в течение многих лет, существует тонна кода, которая хочет import foobuilder
и ожидает получить наш пакет, поэтому я не думаю, что целесообразно изменить имя .
Мои мысли о возможных решениях
Python
Я рассмотрел вопрос об изменении имени пакета на my_foobuilder
и включил в него метапакет под названием foobuilder
, который состоит только из __init__.py
, который импортирует все из my_foobuilder
. Я мог бы поручить новым пользователям импортировать my_foobuilder
напрямую. Тогда я мог бы начать осудить имя foobuilder
. В конце концов, это приведет к тому же объему работы, как если бы я изменил foobuilder
на my_foobuilder
сейчас, поскольку все должны получать обновления, а имя foobuilder
не может оставаться в чистилище устаревших навсегда.
Debian
Проблема Debian не должна быть слишком сложной для решения; Я могу изменить имя пакета debian на my_foobuilder
, но он по-прежнему должен устанавливать тот же (конфликтующий) пакет Python. Затем я мог бы установить пакет my_foobuilder
на Conflict
с foobuilder
. Может потребоваться, чтобы пользователи возились со своим менеджером пакетов, чтобы вернуть вещи в нужное русло во время перехода, но я не думаю, что это имеет большое значение. Тем не менее, это не позволяет пользователям одновременно использовать общедоступный пакет foobuilder
.
Вопрос
Есть ли более простой или лучший способ справиться с этой ситуацией, чем я рассмотрел выше? Есть ли проблемы с решениями, которые я рассматриваю? Как бы вы справились с этим?