Как заставить PKGBUILD установить в /usr/bin/ с зависимостями?

Я пишу PKGBUILD для https://meetalva.io/, чтобы я мог отправить его в AUR, чтобы другие могли установить его через yaourt,

Бинарный Alva имеет две библиотечные зависимости, libnode.so а также libffmpeg.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 ответ

Решение

Это электронное приложение, поэтому вам нужно скопировать весь linux-unpacked/ каталог для /opt/alva/, затем сделайте символическую ссылку на "${pkgdir}"/usr/bin/Alva для самого двоичного файла, который просто переименован electron двоичный файл.

Весь фактический код альва будет в resources/app/ каталог (или файл app.asar в некоторых случаях). Идеальным методом упаковки было бы просто использовать системный электронный пакет (доступен в репозитории [community]).

Установите этот каталог / файл ресурсов приложения, например, в /usr/share/alva/ или же /usr/share/alva.asar (если нет скомпилированных узловых модулей) или /usr/lib/alva/ (если есть скомпилированные модули), то создайте оболочку сценария оболочки для /usr/bin/alva который выглядит так:

#!/bin/sh

exec electron /usr/share/alva/ "$@"
Другие вопросы по тегам