Последняя версия libinput в ubuntu

Исходя в основном из Fedora и Archlinux, у меня была последняя версия libinput, доступная в разумные сроки. В настоящее время в ubuntu 18.04 я не понимаю, как мне получить последнюю версию libinput, например. 1.12 на момент написания на моей машине. Есть ли ppa или кто-нибудь пытался установить его из исходников, не испортив всю систему?

Я не против его скомпилировать, но у меня нет хорошего образования в том, чтобы тестировать его и убедиться, что он правильно работает вместе с другими пакетами. Имея ThinkPad TrackPoint, я чувствую, что наличие последней версии libinput имеет решающее значение!

6
задан 11 September 2018 в 04:23

1 ответ

Вот был еще один ответ, но прошел месяц с тех пор, как автор его удалил. Напишем новый.

Надеюсь, когда-нибудь кто-нибудь создаст PPA с последней версией libinput. А пока вот инструкции по самостоятельной сборке последнего пакета libinput.

Это просто, инструкции ниже в основном взяты отсюда, а подсказка о мезоне взята из удаленного ответа. Я также предполагаю, что вам не нужно генерировать документы, поэтому я не устанавливаю для них зависимости и отключаю их в вызове meson. Также важно, чтобы --prefix был usr в строке meson-configuration, поэтому библиотеки устанавливаются в стандартные места.

Шаг 1: установка зависимостей сборки

Надеюсь, я ничего не пропустил, но не стесняйтесь комментировать, если пропустил.

$ sudo apt install -y git ninja-build
$ sudo apt build-dep libinput

Вам также понадобится мезон. Он находится в репозитории Ubuntu, однако в следующей команде я устанавливаю его с помощью pip. Причина в том, что из-за того, что Ubuntu в основном предоставляет древнее программное обеспечение, есть вероятность, что их мезонная версия будет слишком старой, чтобы можно было собрать libinput. Банкомат Убунту 18.Известно, что у 04 есть эта проблема, но я предполагаю, что со временем это может случиться и с другими выпусками.

$ sudo apt install python3-pip
$ sudo pip3 install meson

Шаг 2: клонировать и собрать libinput

$ git clone https://gitlab.freedesktop.org/libinput/libinput
$ cd libinput
$ meson --prefix=/usr -Ddocumentation=false build/
$ ninja -C build/

Шаг 3: создать пакет libinput и установить

Хотя самый простой способ установить встроенный libinput — запустить ninja -C build install, но я настоятельно не рекомендую знать, что вы делаете (вы будете получать неотслеживаемые файлы по всей вашей системе, которые могут быть перезаписаны при обновлении системы и, в зависимости от ситуации, могут даже полностью сломать libinput) .

Вместо этого используйте этот сценарий, который я написал, чтобы собрать пакет.

$ wget https://gist.githubusercontent.com/Hi-Angel/45030ab89a2378b42511612cbe48d247/raw/package-deb-libinput.sh
[…]
$ bash ./package-deb-libinput.sh  build/
[…]
dpkg-deb: building package 'libinput-git' in 'libinput_1.15.3-212-g60edbd2d.deb'.

Вы можете увидеть имя нового пакета в выходных данных скрипта, поэтому все, что осталось, это установить его (примечание: часть ./ в пути необходима для apt для правильной интерпретации аргумента как локального файла):

$ sudo apt install -y ./build/libinput_1.15.3-212-g60edbd2d.deb

Чтобы использовать установленный libinput, вам необходимо перезапустить графический сеанс (например, перезагрузка).


Возврат к старой версии libinput

Если вы хотите вернуть libinput из дистрибутива, просто установите libinput10 пакет (он заменит libinput-git):

$ apt install -y libinput10

Приложение

На случай, если что-то случится с сутью github, вот текущее содержимое скрипта:

#!/bin/bash
set -e

if [ "$#" -ne 1 ]; then
    echo "Wrong number of parameters.
Usage: $(basename $0) build_dir"
    exit 1
fi

MESON_BUILD_ROOT=$(readlink -f $1)
PACKAGE_VERSION=$(grep -Po 'LIBINPUT_GIT_VERSION.*"\K.+(?=")' "$MESON_BUILD_ROOT"/libinput-git-version.h)
PKG_DIR="$MESON_BUILD_ROOT"/deb
mkdir -p $PKG_DIR/DEBIAN/
cat > $PKG_DIR/DEBIAN/control <<- END_OF_TEXT
PACKAGE: libinput-git
Version: $PACKAGE_VERSION
Architecture: amd64
Maintainer: Mystique Packager
Description: input device management and event handling library
Depends: libevdev2, libmtdev1, libudev1, libwacom2
Conflicts: libinput10, libinput-bin, libinput-dev, libinput-tools
Provides:  libinput10, libinput-bin, libinput-dev, libinput-tools
Homepage: https://gitlab.freedesktop.org/libinput/libinput
END_OF_TEXT

cd "$MESON_BUILD_ROOT"
DESTDIR=$PKG_DIR ninja install
fakeroot dpkg-deb --build $PKG_DIR/ libinput_$PACKAGE_VERSION.deb
1
ответ дан 7 January 2021 в 00:31

Другие вопросы по тегам:

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