Answers:
从2019年开始,我一直希望使用Arch的AUR存储库(但仍在我的Debian系统上)。现在,我还在FreeBSD上使用小的(有些微不足道的)补丁进行了此操作。这不是“切换到拱门”的答案。
起初设置起来有点困难,但要点是,您实际上可以编译Arch的makepkg
程序,并使用它在Debian上编译AUR存储库。我这样做是这样的(尽管我可能已经忘记了一些依赖):
我的老答案仍然存在于底部附近的分隔符之后。
makepkg
:sudo apt-get install bsdtar # pacman depends on bsdtar (libarchive) these days
git clone git://projects.archlinux.org/pacman.git
cd pacman
./configure --sysconfdir=/etc --localstatedir=/var --prefix=/opt/arch # Put built program outside of the usual '/usr/local' when installed to avoid conflicts
make
sudo make install # Install pacman/makepkg
# Make a directory pacman expects to exist to dodge makepkg errors
sudo mkdir -p /var/cache/pacman/pkg
现在,构建并安装gtk3-typeahead
。要获得所有(debian)构建依赖关系,这些依赖关系与Arch的依赖关系或多或少相同,您必须首先deb-src
在sources.list中包含一行,这样apt-get build-dep
才能成功获取必要的-dev
软件包。
我的sources.list
包含以下行来执行此操作。根据您的发行版和最近的服务器来更改行。
deb-src http://ftp.us.debian.org/debian/ sid main contrib
gtk3-typeahead
:然后,您可以运行以下命令进行构建gtk3-typeahead
:
sudo apt-get update
sudo apt-get build-dep 'gtk+3.0' # install gtk3 build dependencies
mkdir /path/to/put/arch/git/repo/into
cd /path/to/put/arch/git/repo/into
git clone https://aur.archlinux.org/gtk3-typeahead.git gtk3-typeahead
cd gtk3-typeahead
# Tack onto configure script arguments so that libraries overwrite the official
# Debian ones in /usr/lib/x86_64-linux-gnu, instead of installing to /usr/lib.
# CHANGE THIS APPROPRIATELY IF RUNNING 32-BIT (or some other architecture like POWER/MIPS)
sed '/\-\-sysconfdir=/a\
--libdir=/usr/lib/x86_64-linux-gnu \\' PKGBUILD > PKGBUILD2
mv PKGBUILD2 PKGBUILD
# temporarily add archlinux programs to PATH so we can use 'makepkg'
PATH="/opt/arch/bin:""$PATH"
# Don't check pacman dependencies, since our dependency libraries weren't
# installed via pacman like makepkg expects!
makepkg --nodeps
完成此操作后,二进制文件将打包.tar.gz
到git树上方一级的归档文件中。在我的示例中,这将是into
目录。
要安装它:
TARBALLPATH="$(readlink -f gtk3-typeahead-*.tar.gz | sort | tail -n 1)" # get full path to tarball of most recent build, if multiple are available
cd /
bsdtar xf "$TARBALLPATH"
以我的拙见,这是高度可脚本化的,并且比处理我的旧脚本要少一些技巧。它也不再依赖于debian。
一年过去了,这仍然让我感到烦恼,因为GTK3的人们决定硬编码这种行为,而无需重新编译就无法还原。
但是,在Ubuntu中分发时,typeahead已修补回gtk3。
Ubuntu还使文件选择器需要双击才能选择文件,而不是仅需单击一下即可选择文件。如果您可以修补gtk3源代码,那么我已经制作了一个修补程序,该修补程序从gtk + 3.22.7起可以结合ubuntu修补程序并将其更新为最新版本的GTK。
另外,我为我的debian系统制作了一个脚本,该脚本会自动在软件包管理器中下载最新版本的源代码,然后对其进行修补和编译。在Debian Sid上可以正确运行,并且也可以在其他Debian发行版上正常工作。