Мы создаем RPM нашего продукта для 32-битных и 64-битных платформ. Название продукта в спецификации оборотов определяется примерно так:
Name: foo
Мы передаем --target i586
в командную строку rpmbuild для создания 32-битных оборотов в минуту и --target x86_64
для создания 64-битных оборотов в минуту. Мы кодируем rpm-архив в установочном каталоге продукта, поэтому у нас может быть одновременно установлена как 32-битная, так и 64-битная версии продукта.
Мы можем просто установить RPM. Например: установка 32-битного и 64-битного вариантов продукта foo
, версия v4.1:
rpm -i foo-4.1-i586.rpm
rpm -i foo-4.1-x86_64.rpm
Но когда мы пытаемся обновить 32-битный вариант установленного продукта до версии 4.2:
rpm -U foo-4.2-i586.rpm
rmp удаляет как 32-битные, так и 64-битные варианты установленных продуктов. Это нежелательно. Возникает вопрос: как нам настроить файл спецификации или командную строку rpm, чтобы получить обновление только для выбранной архитектуры? Очевидным решением было бы закодировать арку в имени пакета в файле спецификации, например:
Name: foo-%{_arch}
Но это не похоже на обычный подход к именам пакетов. Пожалуйста, порекомендуйте.