Исходя в основном из Fedora и Archlinux, у меня была последняя версия libinput, доступная в разумные сроки. В настоящее время в ubuntu 18.04 я не понимаю, как мне получить последнюю версию libinput, например. 1.12 на момент написания на моей машине. Есть ли ppa или кто-нибудь пытался установить его из исходников, не испортив всю систему?
Я не против его скомпилировать, но у меня нет хорошего образования в том, чтобы тестировать его и убедиться, что он правильно работает вместе с другими пакетами. Имея ThinkPad TrackPoint, я чувствую, что наличие последней версии libinput имеет решающее значение!
Вот был еще один ответ, но прошел месяц с тех пор, как автор его удалил. Напишем новый.
Надеюсь, когда-нибудь кто-нибудь создаст PPA с последней версией libinput. А пока вот инструкции по самостоятельной сборке последнего пакета libinput.
Это просто, инструкции ниже в основном взяты отсюда, а подсказка о мезоне взята из удаленного ответа. Я также предполагаю, что вам не нужно генерировать документы, поэтому я не устанавливаю для них зависимости и отключаю их в вызове meson
. Также важно, чтобы --prefix
был usr
в строке meson-configuration, поэтому библиотеки устанавливаются в стандартные места.
Надеюсь, я ничего не пропустил, но не стесняйтесь комментировать, если пропустил.
$ 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
$ git clone https://gitlab.freedesktop.org/libinput/libinput
$ cd libinput
$ meson --prefix=/usr -Ddocumentation=false build/
$ ninja -C build/
Хотя самый простой способ установить встроенный 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 из дистрибутива, просто установите 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