Переменная или определение среды архитектуры linux?

Я создаю свои собственные файлы rpm. Теперь я пишу скрипт bash, который автоматически добавит эти rpm в структуру репозитория:

distribution/arch/rpm

например:

openSUSE13.1/i586/product-0.1.0-0.i586.rpm

Я обнаружил, что в /etc/os-release я могу найти имя дистрибутива, который у меня есть и т. Д.; но не моя архитектура. Итак, как мне получить архитектуру моего компьютера? Я знаю, что смогу в конечном итоге разобрать его из rpm-имени (что выглядит так: product-0.1.0-0.i586.rpm), но, вероятно, есть файл, описывающий мою компьютерную архитектуру, которая легко даст мне i586?

РЕДАКТИРОВАТЬ, что у меня получается rpm, у меня есть архитектура i586. Однако:

  • uname -m дает мне i686
  • uname -i дает мне i386
1 ответ

благодаря Jord, я нашел эту строку в файле /usr/lib/rpm/rpmrc:

buildarchtranslate: i686: i586

поэтому, очевидно, это rpmbuild, который делает перевод с моей архитектуры "uname -m" i686 до i586. Поэтому теоретически можно было бы использовать uname -m и посмотреть в файле rpmrc для перевода, но это было бы очень трудоемко.

вкратце синтаксический разбор названного количества оборотов, которое было произведено, является наиболее эффективным способом получения архитектуры. Кажется, что макрос или переменная не определена, которая соответствует той, которая была создана rpmbuild (поскольку включен шаг перевода)

licensed under cc by-sa 3.0 with attribution.