У меня есть два пакета Debian, которые ранее были размещены в нашем внутреннем репозитории. Оба они используют один и тот же исходный код, но скомпилированы с разными параметрами, создавая два отдельных двоичных файла с одинаковыми библиотеками. Их предполагалось установить на отдельных серверах.
Следовательно, эти два пакета нельзя установить одновременно, потому что они пытаются установить одни и те же библиотеки, отсюда и ошибка dpkg «пытается перезаписать / my / lib».
Проблема: мне нужно установить их на одном сервере.
Вопрос: какую модификацию я должен добавить, чтобы сделать их совместимыми?
Несколько отведений:
Создайте третий пакет из того же источника, скомпилировав весь исходный код вместо двух отдельных (но я думаю, что это грязный способ)
Найдите вариант, чтобы указать, что эти два пакета могут следовать друг за другом (но я не знаю, существует ли он)
Создайте «общий для пакета» пакет, содержащий библиотеки, справочные страницы и т. Д., От которых будут зависеть два других пакета. (но я понятия не имею, как скомпилировать исходный код восходящего потока таким образом)
Я понимаю, что этот вопрос довольно сложно объяснить, особенно на плохом английском, но я надеюсь, что вы дадите мне несколько зацепок :)
Спасибо сообществу!
Ваш 3-й вариант является наиболее распространенным. Часто вы увидите, что это называется -common или -base. Это делается во многих местах, чтобы предоставить отдельные пакеты библиотек, а также пакеты документов или дополнения. По сути, вы создаете несколько пакетов из одного источника. Таким образом создается большинство пакетов -doc и -common, а также множество пакетов lib *.
например
package-base
package-option1
package-option2
package-option1 и package-option2 оба зависят от package-base. Это лучший и самый безопасный способ сделать это. В репозиториях пакетов Debian / Ubuntu есть множество примеров - apache2, php5, dhcp3, nagios3, vim.
dh_make поддерживает создание этих пакетов библиотеки или нескольких двоичных пакетов из одного источника, это стоит проверить.
Общий метод базового пакета, описанный Филом, вероятно, является лучшим вариантом, однако если вы пометите один пакет как замена другой - позволит пакету B перезаписать файлы, принадлежащие пакету A. Конечно, это скорее быстрое исправление, чем долгосрочное решение.