Obecnie pracuję nad GNU Octave PPA . Mój octave.install
plik (który według mojej wiedzy jest zgodny z tymi samymi konwencjami formatowania plików reguł) musi zawierać pliki z:
usr/lib/${DEB_HOST_MULTIARCH}/octave/${DEB_VERSION_UPSTREAM}/exec/x86_64-pc-linux-gnu/*
dla wersji 64-bitowej (lub amd64) i:
usr/lib/${DEB_HOST_MULTIARCH}/octave/${DEB_VERSION_UPSTREAM}/exec/i386-pc-linux-gnu/*
dla wersji 32-bitowej. Jak napisać plik instalacyjny, aby zawierał te pliki w odpowiednich systemach? Próbowałem:
ARCH=$(uname -m)
usr/lib/${DEB_HOST_MULTIARCH}/octave/${DEB_VERSION_UPSTREAM}/exec/$ARCH-pc-linux-gnu/*
w nadziei, że podobieństwa między plikami reguł a skryptem powłoki, pod względem ich składni, pozwolą tej linii działać. Ale $ARCH
zmienna pozostała nieoceniona (tj. Pozostała jako $ARCH
i nie zastąpiła wartości, którą wcześniej zdefiniowałem w linii) i kompilacja nie powiodła się ( tutaj jest dziennik kompilacji).
EDYCJA : Launchpad właśnie zakończył próbę zbudowania sugestii do użycia ${ARCH}
zamiast $ARCH
we wspomnianej wcześniej poprawce. Oto błąd:
find debian/tmp -name '*.la' -delete
make[1]: Leaving directory `/<<PKGBUILDDIR>>'
dh_install -a -O--parallel
install -d debian/octave//usr/bin
cp -a debian/tmp/usr/bin/octave-4.2.0 debian/octave//usr/bin/
cp -a debian/tmp/usr/bin/octave-cli debian/octave//usr/bin/
cp -a debian/tmp/usr/bin/octave-cli-4.2.0 debian/octave//usr/bin/
cp -a debian/tmp/usr/share/applications debian/octave//usr/share/
install -d debian/octave/-m\)
cp -a debian/tmp/ARCH=\$\(uname debian/octave/-m\)/
cp: cannot stat ‘debian/tmp/ARCH=$(uname’: No such file or directory
dh_install: cp -a debian/tmp/ARCH=$(uname debian/octave/-m)/ returned exit code 1
make: *** [binary-arch] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary-arch gave error exit status 2
--------------------------------------------------------------------------------
Build finished at 20161117-1936
${ARCH}
?