Да что ж вы, только rpm видевшие, спорить про deb берётесь?
> Как в debian/rules прописать путь к директории с корнем будущего пакета, почему
> его нужно угадать и почему он не вынесен в переменную окрудения
> (env)? В rpm это макрос %buildroot или эквивалентная переменная окружения RPM_BUILD_ROOT.Зачем тебе его явно прописывать? И в rpm-спеках так уже лет 10 никто не делает. А если нужно запаковать содержимое конкретного каталога, то для этого вообще никакой rules не нужен. dpkg-deb -b в руки и пакуй что хошь. Вот это называется гибкость, а не возможность переопределить макрос в спеке.
> Как прописать путь к стандартному расположению библиотек? Нужно вручную прописать /usr/lib/x86_64-linux-gnu
> и понадеяться, что не ошибся, да еще и для каждой архитектуры
> отдельный вариант сделать вручную, когда как в rpm просто макрос %_libdir.
> А задача упаковывать deb в обход dpkg-buildpackage весьма странная, попахивает корявой
> сборкой пакета, но иногда может быть полезно, согласен.
Вручную писать? Серьёзно?
На, любуйся. Надеюсь, с синтаксисом GNU make знаком хоть немножко? Не только %define в спеках умеешь?
$ cat /usr/share/dpkg/architecture.mk
# This Makefile snippet defines all the DEB_HOST_* / DEB_BUILD_* variables
# that dpkg-architecture can return. Existing values of those variables
# are preserved as per policy.dpkg_lazy_eval ?= $$(or $$(value DPKG_CACHE_$(1)),$$(eval DPKG_CACHE_$(1) := $$(shell $(2)))$$(value DPKG_CACHE_$(1)))
dpkg_architecture_setvar = export $(1) ?= $(call dpkg_lazy_eval,$(1),dpkg-architecture -q$(1))
$(foreach machine,BUILD HOST TARGET,\
$(foreach var,ARCH ARCH_ABI ARCH_LIBC ARCH_OS ARCH_CPU ARCH_BITS ARCH_ENDIAN GNU_CPU GNU_SYSTEM GNU_TYPE MULTIARCH,\
$(eval $(call dpkg_architecture_setvar,DEB_$(machine)_$(var)))))