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