PKGBUILD:

PKGBUILD:

我正在写一个 PKGBUILDmeetalva.io这样我就可以将其提交给 AUR — — 以便其他人可以通过安装它yaourt

该二进制文件Alva有两个库依赖项libnode.solibffmpeg.so,我需要包含它们,否则我会得到alva: error while loading shared libraries: libnode.so: cannot open shared object file: No such file or directory

我无法简单地将这两个.so文件复制到 中/usr/bin,那么这里的最佳做法是什么?我觉得我想将二进制文件和.so文件复制到 中,/usr/lib然后创建一个符号链接/usr/lib/alva-git/Alva->/usr/bin/Alva但我无法使符号链接正常工作。

提前致谢。


PKGBUILD

_pkgname="alva"
pkgname="${_pkgname}-git"
pkgver=v0.8.0
pkgrel=1
pkgdesc="Create living prototypes with code components."
arch=("i686" "x86_64")
url="https://meetalva.io"
license=('MIT')
groups=()
depends=(gconf libxss nss gtk3)
makedepends=(git npm nodejs)
optdepends=()
provides=(alva)
conflicts=(alva)
replaces=()
backup=()
options=()
install=
changelog=
source=("${pkgname}::git+http://github.com/meetalva/${_pkgname}.git")
noextract=()
md5sums=(SKIP)

# https://wiki.archlinux.org/index.php/VCS_package_guidelines
pkgver() {
  cd "$srcdir/$pkgname"
# Use latest tag
  git tags|tail -n 1
}

build() {
  cd "$pkgname"
  last_tag=$( git tags|tail -n 1 )
  git checkout $last_tag
  npm install
  npm run build
  npm run build:electron || true
}

package() {
  cd "$pkgname" # enter git repo
  install -D -m 644 LICENSE "${pkgdir}/usr/share/licenses/$pkgname/LICENSE"
  mkdir -p "${pkgdir}/usr/bin/"
  cp -f dist/linux-unpacked/Alva "${pkgdir}/usr/bin/alva"
}

答案1

这是一个 Electron 应用程序,因此你需要复制全部的 linux-unpacked/目录,然后为二进制文件本身(仅仅是一个重命名的二进制文件/opt/alva/)创建一个符号链接。"${pkgdir}"/usr/bin/Alvaelectron

所有实际的 alva 代码都将位于resources/app/目录中(或在某些情况下是 app.asar 文件中)。理想的打包方法是简单地使用系统电子包(可在 [community] 存储库中找到)。

将此应用程序资源目录/文件安装到例如/usr/share/alva//usr/share/alva.asar(如果没有编译的节点模块)或/usr/lib/alva/(如果有编译模块),然后创建一个 shell 脚本包装器,如下/usr/bin/alva所示:

#!/bin/sh

exec electron /usr/share/alva/ "$@"

相关内容