Например, я поддерживаю приложение, которое использует libmemcached. Я могу скомпилировать его, используя libmemcached5 или libmemcached6, а также собрать пакет .deb, указывающий на libmemcached5, libmemcached6 или даже libmemcached5 | libmemcached6 в качестве зависимости, но на самом деле мой двоичный файл компилируется только с одним из них. Как лучше всего решить эту проблему, развернув пакет без обновления / понижения каких-либо зависимостей на стороне пользователя?
Если вы используете репозиторий или если приемлемо несколько скомпилированных версий вашего приложения, то лучше всего скомпилировать ваше приложение дважды, один раз с libmemcached5 и один раз с libmemcached6, и упаковать их отдельно, с разными именами пакетов, и использовать Виртуальный пакет для установки нужного автоматически:
Package: myapplication-memchched5
Version: 1.3.17-1
Depends: libmemcached5
Provides: myapplication
Conflicts: myapplication
Replaces: myapplication
а также
Package: myapplication-memchched6
Version: 1.3.17-1
Depends: libmemcached6
Provides: myapplication
Conflicts: myapplication
Replaces: myapplication
Сейчас aptitude install myapplication
автоматически выберет либо myapplication-memchched5
или же myapplication-memchched6
исходя из того, что еще нужно установить.
Других решений пока нет …