[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