嫌弃arch仓库的二进制文件编译选项
前言
偶然机会从archlinuxcn升级了polybar,
发现新的polybar不能再使用i3和alsa的插件.
经查询发现 polybar -vvv
的输出中,
新的版本编译时没有选择i3和alsa.
遂决定查一下arch上如何自行选择编译选项.
前提知识
- pacman下载的都是编译好的
*.pkg.tar.xz
文件 - 想要自己编译需要使用ABS(Arch Build System)
- 人性化的软件会在检测到以来满足时自动打开编译的选项
- 使用
pacman -Si <pkg-name>
查看一下仓库中该软件的编译依赖,看满足没 - 使用
pacman -Qi <pkg-name>
查看本地安装着的该软件的详细信息 - 可能其他人并不满足依赖,所以其他人编译的自己可能用不了
- 使用
ABS的编译方式
Arch上的一套类port系统
(port为*BSD上的称呼,表示一个文件夹结构,
当配置好所有文件后可以用一个命令进行下载,解压缩,打补丁,编译,安装)
当中包含了一个重要的文件 PKGBUILRD
包含了该软件包需要依赖什么,版本是什么等等,可以根据需要编辑
在包含PKGBUILD文件下执行 makepkg
即可打包生成 *.pkg.tar.xz
(在 /etc/makepkg.conf
文件中定义了编译时的一些选项, 可以在编译前编辑)
然后使用 pacman -U *.pkg.tar.xz
安装
何处下载成套的文件夹
如果是官方的软件包,可以使用 asp checkout package
来方便地安装整个文件结构
(官方原先有abs可以使用,由于服务器维护成本增加,放弃了abs转向asp)
如果在asp找不到,可以在aur网站上寻找,
具体为 git clone https://aur.archlinux.org/package.git
来下载
防止被系统更高版本覆盖
在 PKGBUILD 文件中添加
1 | groups=('modified') |
在 /etc/pacman.conf
文件中将名为modified的group加入IgnoreGroup 中
1 | IgnoreGroup = modified |
polybar的解决方式
1 | git clone https://aur.archlinux.org/polybar.git |