Archlinux修改PKGBUILD以使用本地文件编译
恩……一段时间没有更新这个站点了,已经将使用的发行版从Deepin更换到了Manjaro,这个站点的关于页面也要改一下了。
Manjaro是基于Arch linux的发行版,所以和Arch linux一样,使用pacman作为包管理器,当然也能通过yaourt来利用Arch linux丰富的aur资源。
大概是出于兼容性的考虑,Manjaro官方源中并不包含Google chrome,而是以[extra]/chromium代替,然而我并不想使用chromium,于是一直在使用aur中的chrome。但是假期回到家中发现chrome已经更新了版本,右下角的Octopi一直在不断地闪烁着通知着我,好吧~于是yaourt -Syyu --aur更新之,结果在下载chrome的deb包时出错,显示无法下载,原因自然是众所周知的。
于是开启sslocal,再次执行更新,还是报错……原来终端并不支持socks5代理。在经过一番搜索之后找到了polipo这个软件,安装之后编辑/etc/polipo/config(通过复制config.sample得到),指定ParentProxy:
# Uncomment this if you want to use a parent SOCKS proxy:
socksParentProxy = "localhost:1080"
socksProxyType = socks5
然后执行:
[sapphire@sapphire-pc polipo]$ polipo -c config
即可启动polipo。
之后只要在需要的命令之前加上http_proxy=http://localhost:8123
即可,为了方便起见,在~./bashrc中添加
alias hp="http_proxy=http://localhost:8123"
即可使用hp来代替之前的一长串命令。
但是执行hp yaourt -Syyu --aur
后发现依然无法下载,猜测hp命令仅仅为yaourt命令添加了代理,但是构建软件包时的下载过程依然没有得到代理,看来代理的方法是行不通的。
于是参考 https://wiki.archlinux.org/index.php/PKGBUILD ,想到了修改PKGBUILD来指定使用本地软件包,在下载过所需要的deb包后,从aur手动下载了snapshot,解压之后进入目录, 编辑PKGBUILD文件,修改source数组中的文件位置(相对PKGBUILD)如下:
source=("eula_text.html"
"google-chrome-stable_current_amd64.deb"
'google-chrome-stable.sh')
md5sums=('SKIP'
'SKIP'
'99fa93d5e7fb5d622cef0f9621f3ffa3')
注意eula_text.html的md5值由于语言差异会不同,需要在后面的md5sum中取消验证。
保存并退出,然后就可以愉快的makepkg -sri了,这次没有遇到任何问题。
后续更新:使用proxychains可以保证全程代理。