Ubuntu 上最新的 libinput

Ubuntu 上最新的 libinput

我主要使用 Fedora 和 Archlinux,我曾经在合理的时间内获得最新的 libinput。目前,在 ubuntu 18.04 上,我不知道如何在我的计算机上获得最新的 libinput,例如撰写本文时的 1.12。是否有 ppa,或者是否有人尝试过从源代码安装它而不会弄乱整个系统?

我不介意编译它,但我不太懂测试它,也不太懂确保它能与其他软件包一起正常工作。有了 ThinkPad TrackPoint,我觉得拥有最新的 libinput 至关重要!

答案1

希望有一天有人能用最新的 libinput 制作一个 PPA。在此之前,这里有关于如何自己构建此类软件包的说明。

很简单,说明主要包括取自此处。我假设您不需要生成文档,因此我不会为它们安装依赖项并在调用时禁用它们。在meson-configuration 行中meson也很重要,因此库会安装到标准位置。--prefixusr

步骤 1:安装构建依赖项

$ sudo apt install -y git ninja-build python3-pip
$ sudo apt build-dep libinput
$ sudo pip3 install meson

注意:尽管 Meson 在 Ubuntu repo 中,但在代码片段中它是使用 pip 安装的。原因是:由于 Ubuntu 主要提供古老的软件,因此他们的 Meson 版本可能太旧而无法构建 libinput。目前已知 Ubuntu 18.04 存在此问题,但我认为随着时间的推移,其他版本也可能会出现此问题。

步骤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 gist 出现问题,以下是脚本的当前内容:

#!/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

相关内容