[devel] rpm: некорректные макросы
Alexey V. Vissarionov
gremlin на altlinux.org
Пн Дек 16 03:46:13 MSK 2019
On 2019-12-15 18:06:45 +0300, Victor Wagner wrote:
>> Прорезюмирую результат обсуждения IRL: значения этих и многих
>> других макросов нужно брать из rpmbuild. Из rpm их лучше в
>> дальнейшем удалить во избежание недоразумений.
> Тут есть одна тонкость - нету у юзера на production сервере
> rpmbuild. И не должно быть. Ибо средства разработки это
> толстенная дыра в безопасности.
И не нужны они там.
> А у меня проблема возникла именно из задачи - "прописать юзеру
> в /etc/apt/sources.list.d правильный репозиторий, не полагаясь
> на то, что юзер знает, какая у него архитектура и версия платформы".
В смысле, репу добавить? А откуда в sources.list.d/ новый файл
попадет? По уму - из пакета. Но тогда при сборке этого пакета вся
необходимая информация уже доступна.
> Поэтому нужен способ точно определить архитектуру установленной
> системы. Именно системы, а не ядра, так как никто не обещал в
> нашу эпоху контейнеров, что они совпадают.
Дык `uname -m` внутри контейнера вполне говорит i686 - даже когда
хост x86_64 (у меня других уже давно нет).
> Правда, видимо, лучше это делать не посредством rpm, поскольку
> вызов rpm изнутри %post скрипта вообще говоря недопустим.
rpm -q или rpm --eval можно. Пруф:
Name: checkpostrpm
Version: 20191216
Release: alt1
BuildArch: noarch
Summary: try to run rpm in the postinstall script
Group: System/Base
License: WTFPL
Source: %name-%version.tar.xz
%description
%summary
%post
rpm -q glibc
rpm --eval %%_arch
%files
Собственно, для решения объявленной задачи здесь достаточно чуть
переписать %post (создавать файлы на ходу прямо там) и добавить в
секцию %files строчку наподобие
%ghost %config(noreplace) %_sysconfdir/apt/sources.list.d/%name.list
> Либо тогда надо передеелывать логкику работы apt, чтобы там,
> как и в Debian, не требовалось явно указывать архитектуру в
> URL-ках.
Если я правильно понимаю, вышеприведенного примера вполне достаточно.
> Вот у yum или zypper, например я могу в url-ке на репозиторийй
> написать $releasever и $basearch и он мне сам подставит то, что
> надо.
Ну да, удобно... впрочем, они и появились попозже.
--
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net
Подробная информация о списке рассылки Devel