Я в настоящее время работаю над Октавой GNU PPA. Мой octave.install
файл (чтобы к моему знанию следует тем же конвенциям форматирования файлов правил) должен включать файлы от:
usr/lib/${DEB_HOST_MULTIARCH}/octave/${DEB_VERSION_UPSTREAM}/exec/x86_64-pc-linux-gnu/*
для 64-разрядного (или amd64) сборка и:
usr/lib/${DEB_HOST_MULTIARCH}/octave/${DEB_VERSION_UPSTREAM}/exec/i386-pc-linux-gnu/*
для 32-разрядной сборки. Как я пишу свой файл установки так, чтобы он включал эти файлы в эти соответствующие системы? Я попробовал:
ARCH=$(uname -m)
usr/lib/${DEB_HOST_MULTIARCH}/octave/${DEB_VERSION_UPSTREAM}/exec/$ARCH-pc-linux-gnu/*
в надежде, что общие черты между файлами правил и сценарием оболочки, с точки зрения их синтаксиса, позволили бы этой строке работать. Но $ARCH
переменную оставили неоцененной (т.е. это оставили как $ARCH
, и не замененный значение я определил в строке, прежде чем) и отказавшая сборка (вот будет журнал сборки).
Править: Панель запуска только что закончила пытаться создать предложение для использования ${ARCH}
вместо $ARCH
в предпринятом вышеупомянутом фиксируют. Вот ошибка:
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
Как ${DEB_HOST_MULTIARCH}
, существуют другие переменные для деталей информации об архитектуре. Как зарегистрировано ниже из руководства политики Debian:
4,9 Основных сценария здания:
debian/rules
архитектура мы основываемся и создаем для, определяются
make
переменные с помощью утилитыdpkg-architecture
. Можно определить архитектуру Debian и строку спецификации архитектуры стиля GNU для архитектуры сборки, а также для архитектуры хоста. Архитектура сборки является архитектурой, на которойdebian/rules
выполняется, и сборка пакета выполняется. Архитектура хоста является архитектурой, на которой получающийся пакет будет установлен и выполнен. Они обычно - то же, но могут отличаться в случае кросс-компиляции (создающий пакеты для одной архитектуры на машинах другой архитектуры).Вот список поддерживаемых, делают переменные:
DEB_*_ARCH (the Debian architecture) DEB_*_ARCH_CPU (the Debian CPU name) DEB_*_ARCH_OS (the Debian System name) DEB_*_GNU_TYPE (the GNU style architecture specification string) DEB_*_GNU_CPU (the CPU part of DEB_*_GNU_TYPE) DEB_*_GNU_SYSTEM (the System part of DEB_*_GNU_TYPE)
, где
*
илиBUILD
для спецификации архитектуры сборки илиHOST
для спецификации архитектуры хоста.Обратная совместимость может быть обеспечена в файле правил путем установки необходимых переменных на подходящие значения по умолчанию; обратитесь к документации
dpkg-architecture
для деталей.важно понять, что
DEB_*_ARCH
строка только определяет, для какой архитектуры Debian мы основываемся или. Это не должно использоваться для получения информации о системе или ЦП;DEB_*_ARCH_CPU
иDEB_*_ARCH_OS
переменные должны использоваться для этого. Переменные стиля GNU должны обычно только использоваться с восходящими системами сборки.Источник: https://www.debian.org/doc/debian-policy/ch-source.html
тот, который Вы ищете, DEB_HOST_GNU_CPU
. Таким образом, новая строка установки должна быть:
usr/lib/${DEB_HOST_MULTIARCH}/octave/${DEB_VERSION_UPSTREAM}/exec/${DEB_HOST_GNU_CPU}-pc-linux-gnu/*
можно взглянуть на значения этих переменных в локальной машине путем выполнения:
~$ dpkg-architecture
DEB_BUILD_ARCH=amd64
DEB_BUILD_ARCH_BITS=64
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_ARCH_ENDIAN=little
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=x86_64-linux-gnu
DEB_BUILD_MULTIARCH=x86_64-linux-gnu
DEB_HOST_ARCH=amd64
DEB_HOST_ARCH_BITS=64
DEB_HOST_ARCH_CPU=amd64
DEB_HOST_ARCH_ENDIAN=little
DEB_HOST_ARCH_OS=linux
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=x86_64-linux-gnu
DEB_HOST_MULTIARCH=x86_64-linux-gnu
DEB_TARGET_ARCH=amd64
DEB_TARGET_ARCH_BITS=64
DEB_TARGET_ARCH_CPU=amd64