场景

最近是比较特别的时期,ss不能用了。今天想想用yay -S安装expressvpn,由于该软件的特殊性,其依赖文件部分无法下载,遂而手动安装

AUR.git分析

从AUR把git下载下来,结合每个项目的介绍,我们可以知道,每个项目大概由PKGBUILD.SRCINFO,以及若干SourcesDependencies组成。

PKGBUILD分析

PKGBUILD是脚本文件,主要定义了临时环境、源码地址、sha1检查等变量,包含了一些shell脚本。

# Maintainer: Kyle Manna <kyle(at)kylemanna(dot)com>
# Co-Maintainer: WorMzy Tykashi <wormzy.tykashi@gmail.com>

pkgname=expressvpn
pkgver=2.2.0_1
pkgrel=1
pkgdesc="Proprietary VPN client for Linux"
arch=('x86_64' 'i686' 'armv7h')
url="https://expressvpn.com"
license=('custom')
# net-tools is needed for old skool ifconfig
depends=('net-tools')
_date=$(date +%Y%m%d)
options=(!strip)
install=expressvpn.install
source=("license-${_date}.html::https://www.expressvpn.com/vpn-software/vpn-linux/open-source")
_url="https://download.expressvpn.xyz/clients/linux"
source_x86_64=("${_url}/${pkgname}_${pkgver/_/-}_amd64.deb"{,.asc})
source_i686=("${_url}/${pkgname}_${pkgver/_/-}_i386.deb"{,.asc})
source_armv7h=("${_url}/${pkgname}_${pkgver/_/-}_armhf.deb"{,.asc})

sha512sums=('SKIP')
sha512sums_x86_64=('a013c82aa6ae79a849ec3b04f4d041c9b5fa9b695734ee4ad2a0c3964faa5c9e3e76ee2c4221ff377f929d47a5e9fce16f0c2dce660a5cb88300cca042404277'
                   'SKIP')
sha512sums_i686=('d6495bbf58c3c5b2af8a5866fecb6f9d9d5eb5a0701878dadcf4f007c48f1e0dfab407726fb628ffd3226ebda825989ea967e524e64bd2b9267dcdb4b24ef9cf'
                 'SKIP')
sha512sums_armv7h=('ccf7c1a3526eeb3e0653411006caee69b04116effc87850930b9d3e77a7cbbdf7c3a358de53ff61a8ebd53b5982f63a7040248c34e9927552b85d798a227b8fd'
                   'SKIP')
validpgpkeys=('1D0B09AD6C93FEE93FDDBD9DAFF2A1415F6A3A38')

package() {
    # /usr/sbin is a symlink to /usr/bin, rewrite it
    bsdtar -C "${pkgdir}" -xf "${srcdir}/data.tar.gz" -s ":/usr/sbin:/usr/bin:"

    # Install service file to correct place
    install -Dm644 "${pkgdir}/usr/lib/expressvpn/expressvpn.service" "${pkgdir}/usr/lib/systemd/system/expressvpn.service"

    # Install bash-completion to correct place
    install -Dm644 "${pkgdir}/usr/lib/expressvpn/bash-completion" "${pkgdir}/usr/share/bash-completion/completions/expressvpn"

    install -Dm644 "${srcdir}/license-${_date}.html" "${pkgdir}/usr/share/licenses/${pkgname}/license.html"
    install -dm755 "$pkgdir/var/lib/expressvpn/certs"

    # Remove unused /etc
    rm -r "$pkgdir/etc/"

    # Remove sysv script
    rm "$pkgdir/usr/lib/expressvpn/expressvpn.init"
}

从能够科学上网的设备下载好Source文件expressvpn_2.2.0-1_amd64.deb,根据package() {...}内的shell命令,进行操作即可。

最后修改日期: 2019年9月24日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。