Фон
В группе, с которой я работаю, был использован и разработан пакет 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
одновременно.
Вопрос
Есть ли более простой или лучший способ лечения этой ситуации, чем то, что я рассмотрел выше? Есть ли проблемы с решениями, которые я рассматриваю? Как вы справитесь с этим?