教程[13] Arch Linux 制作空包解决依赖(以 linux-firmware 为例)

开篇废话

前几天在滚 ArchLinux ARM(以下简称 alarm )的时候发现滚了 linux-firmware 包,而 linux-firmware 在 ArchLinux 是可选依赖,但是在 alarm 上使用的时候,linux-aarch64 就成了必要依赖,然后占用了 700M+ 的空间。
terminal break

在云厂商(也就是虚拟化的机器上)基本上是不需要 linux-firmware 包的,一般只是浪费空间。

喜闻乐见的是在我写这篇文章后几星期后官方就把包拆了,可以按需安装节省、空间

解决

第一下我想到的是重新打包 linux-aarch64,剔除其中的 linux-firmware 依赖,不过要更新得自己做个源出来,或者每次更新的时候重新打包,还要安排打包机以及相关脚本,更麻烦了。

然后问了下群友,有制作空包方案,还有忽略依赖 pacman -Sd linux-aarch64 安装的方案。

最终选了制作空包,用 PKGBUILD 弄个空包出来,补上 provides 即可。
其它包也可以举一反三(炸了自己处理)

参考 wiki/PKGBUILD 制作个空包

# 名称随意
pkgname=linux-firmware-empty
pkgver=1.0
pkgrel=1
pkgdesc="Empty linux-firmware package to solve dependency"
arch=('any')
# 这里标志自己能提供 linux-firmware 相关功能,也就解决依赖了
provides=('linux-firmware')

package() {
  echo 'ok'
}

命名成 PKGBUILD 然后 makepkg -i 即可制作 & 安装这个空包。

最终效果: terminal ok
linux-firmware 已经被我的空包 linux-firmware-empty 提供了,所以就可以 remove 了

后记

凭着这个机会终于做了个包出来,不过根本不算一个正常的包。
不管怎么样,还算是学习了一下 用了三四年 Arch 居然连个包都没打过

上传到 AUR 和意料中的一样,24h内就被删了(因为根本称不上是一个软件,如果这也能上架的话那么所有包都能这样)

另外跟踪 blame 了下 alarm linux-aarch64 的 PKGBUILD 历史,是从一开始就这样的,感觉在 IRC/forum 上问也估计不会把 linux-firmwaredepends 扔到 optdepends 去,就没有打算去问了。