Как поступить с проприетарным именем пакета Python, конфликтующим с именем общедоступного?

История вопроса

Группа, с которой я работаю, использовала и разрабатывала пакет Python, который в целях этого вопроса я назову foobuilder . Мы обслуживаем обновления для систем Linux, используя частные репозитории RPM и Deb, которые мы предоставляем нашим пользователям.

Недавно в PyPi был добавлен общедоступный пакет с тем же именем. Помимо прочего, он был размещен в общедоступном репозитории Debian. Поскольку мы не рекламируем наш пакет публично, понятно, что появился пакет с таким же именем.

Проблемы

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

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

Проблема

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

Мои мысли о возможных решениях

Python

Я подумывал об изменении имени пакета на my_foobuilder и он включает мета-пакет под названием foobuilder , который состоит только из __ init __. Py , который импортирует все из my_foobuilder . Я мог бы проинструктировать новых пользователей напрямую импортировать my_foobuilder . Тогда я мог бы отказаться от имени foobuilder . В конце концов, это приведет к тому же объему работы, как если бы я изменил foobuilder на my_foobuilder сейчас, так как все должны получать обновления и имя foobuilder не может быть вечно в чистилище устаревших.

Debian

Проблема Debian не должна быть слишком сложной; Я могу изменить имя пакета debian на my_foobuilder , но он все равно установит тот же (конфликтующий) пакет Python. Затем я мог бы установить пакет my_foobuilder на Конфликт с foobuilder . Это может потребовать от пользователей возиться со своим диспетчером пакетов, чтобы вернуть все в нужное русло во время перехода, но я не думаю, что это имеет большое значение. Тем не менее, это не позволяет пользователям одновременно использовать общедоступный пакет foobuilder .

Вопрос

Есть ли более простой или лучший способ справиться с этой ситуацией, чем тот, который я рассмотрел выше? Есть ли проблемы с рассматриваемыми мною решениями? Как бы вы с этим справились?

13
задан JasonMArcher 15 June 2015 в 03:37
поделиться