как построить RPM, используя только исходные коды вместо tarball - PullRequest
2 голосов
/ 09 января 2012

У меня есть этот процесс сборки, который создает rpms для набора дистрибутивов Linux.

Это создание занимает так много времени, и для этого я его оптимизирую.Я изучил rpmbuild и понял, что rpmbuild берет tarball и извлекает его для запуска процесса сборки.

Есть способ избежать использования tarball ??Потому что я уже начинаю процесс с исходниками, затем сжимаю его в tarball, и это кажется бесполезным, так как rpmbuild работает с исходниками, а не с tarballs

1 Ответ

5 голосов
/ 09 января 2012

Три основных способа сделать это:

  1. Используйте переключатель --short-circuit на rpmbuild, чтобы перейти непосредственно к шагу сборки.
  2. Список всех файлов в ваших источникахкак SourceXX: в файле спецификации, и поместите все эти файлы в каталог rpmbuild/SOURCES/
  3. Оберните макрос %setup некоторым интеллектом

Опция 1 позволяет вам временноОбойти необходимость извлечения tarball каждый раз, что идеально подходит для разработки.Вариант 2 обходит понятие наличия тарбола для начала, но становится громоздким, когда у вас много-много файлов.Вариант 3, когда происходят регулярные сборки пакета, и это большой исходный файл, такой как ядро ​​Linux.Файл .spec ядра EL6 делает это:

if [ ! -d kernel-%{kversion}/vanilla-%{kversion}/ ]; then
    %setup -q -n kernel-%{kversion} -c
    mv linux-2.6.32 vanilla-%{kversion};
else
    cd kernel-%{kversion}/;
fi

cp -rl vanilla-%{kversion} linux-%{KVERREL}

cd linux-%{KVERREL}

По сути, извлеките исходные коды ядра и назовите его как-нибудь еще.При следующей сборке проверьте это.Если он есть, не извлекайте источник, просто сделайте копию.

...