Почему libinput упакован как libinput10?

Поддержка наконец-то добавлена ​​в ядро ​​4.18, но я не уверен, что все функции работают.

В настоящее время я использую Sound Blaster Zx в Debian 10 с ядром 4.19. Для работы карты требуется не -бесплатная прошивка от firmware-misc-nonfree.

Я использую наушники и стереодинамики. Автоматическое переключение между ними не работает, поэтому приходится переключаться вручную с помощью alsamixer.

Многие другие функции я еще не пробовал.

1
02.12.2021, 14:17
1 ответ

Средство создания пакетов, используемое Debian (dpkg ), не поддерживает одновременную установку нескольких версий одного и того же пакета. Таким образом, чтобы установить несколько версий одного и того же программного обеспечения, каждая версия должна находиться в пакете с другим именем.

Должна быть предусмотрена возможность установки нескольких версий одной и той же общей библиотеки, поскольку разные программы, использующие эту библиотеку, создаются для разных версий этой библиотеки. Даже если в определенный момент времени все программы, использующие libinput, построены для версии 10, это не будет так всегда. Когда выйдет версия 11, должна быть возможность установить ее вместе с версией 10, потому что не все программы, использующие библиотеку, будут пересобраны мгновенно.

Это ограничение не применяется к большинству пакетов, не являющихся общими библиотеками. Нет причин устанавливать разные версии /lib/udev/libinput*одновременно, поэтому нет необходимости устанавливать несколько версий libinput-bin.Вам нужно только установить несколько версий libinput-devодновременно, если вы хотите собрать двоичные файлы программы для нескольких версий libinput, и это не то, что Debian пытается поддерживать посредством своего пакета.

Так как пакет библиотеки должен изменяться всякий раз, когда библиотека изменяется несовместимым образом, Debian определяет соглашение для имен пакетов библиотек, которое должно состоять из имени библиотеки, за которым следует число, которое изменяется всякий раз, когда библиотека изменяется таким образом, что старый двоичные файлы не могут использовать новую библиотеку. Другими словами, номер версии пакета библиотеки должен меняться всякий раз, когда изменяется ABI .

В зависимости от соглашения о нумерации версий основной ветки, изменения ABI могут соответствовать или не соответствовать шаблону в номере версии библиотеки. Существует очень распространенное (, но не универсальное )соглашение о том, что основной номер версии изменяется, когда API изменяется несовместимым образом, а изменение API почти всегда подразумевает изменение ABI, но многие изменения ABI не включать несовместимые изменения API. Возможно даже изменение ABI без каких-либо изменений в библиотеке, если это связано с изменениями в другой библиотеке.

Сам файл библиотеки включает имя, которое меняется, когда библиотека несовместимым образом изменяет :soname. Благодаря этому уникальному имени динамический загрузчик выбирает правильную версию. Хотя это и не обязательно, большинство библиотек используют soname вида libfoo.so.N, где N — целое число, которое меняется каждый раз, когда ABI изменяется несовместимым образом. Libinput в Debian следует этому соглашению, и текущее значение N равно 10.

$ readelf -d /usr/lib/x86_64-linux-gnu/libinput.so.10.13.0 | grep SONAME
 0x000000000000000e (SONAME)             Library soname: [libinput.so.10]

Часть .10изменяется, когда ABI изменяется несовместимым образом. Часть .13.0изменяется, когда ABI изменяется обратно -совместимым образом.

Для получения дополнительной информации см.:

3
02.12.2021, 15:36

Теги

Похожие вопросы