开篇废话
前几天在滚 ArchLinux ARM(以下简称 alarm )的时候发现滚了 linux-firmware
包,而 linux-firmware
在 ArchLinux 是可选依赖,但是在 alarm 上使用的时候,linux-aarch64 就成了必要依赖,然后占用了 700M+ 的空间。
在云厂商(也就是虚拟化的机器上)基本上是不需要
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
即可制作 & 安装这个空包。
最终效果:
linux-firmware
已经被我的空包 linux-firmware-empty
提供了,所以就可以 remove 了
后记
凭着这个机会终于做了个包出来,不过根本不算一个正常的包。
不管怎么样,还算是学习了一下 用了三四年 Arch 居然连个包都没打过
上传到 AUR 和意料中的一样,24h内就被删了(因为根本称不上是一个软件,如果这也能上架的话那么所有包都能这样)
另外跟踪 blame 了下 alarm linux-aarch64
的 PKGBUILD 历史,是从一开始就这样的,感觉在 IRC/forum 上问也估计不会把 linux-firmware
从 depends
扔到 optdepends
去,就没有打算去问了。
完