2009-05-20 2 views
2

вот мой сценарийКак развернуть самодельные приложения с rpm?

  • наша команда развивается на AIX
  • десятки приложений, в основном Perl, скрипты оболочки, пакетный Java, C
  • я хотел бы упростить процедуры развертывания/отката - в настоящее время используя простые старые архивы с резервными копиями
  • Я посмотрел на installp против rpm для упаковки (см. my SO question) и решил пойти с rpm - лучшие документы, плюс IBM включила его, имея свой собственный pa ckaging tool, так что это действительная причина для меня
  • Я бы хотел использовать отдельный rpm db, а не основной - у меня нет root доступа, и я также считаю, что было бы полезно разделить ОС приложений из нашего материала.

рабочий будет выглядеть так:

  • каждое приложение имеет соответствующую rpm.spec - проверенного в в управление
  • источника построить обороты в домашней директории
  • установка/обновление при использовании наших собственных packages.rpm

ПРИМЕЧАНИЯ: Я буду использовать этот вопрос как примечания к себе, как я продолжу


ответ

1

здание оборотов в моем доме:

.

Мне нужен .rpmmacros файл в корне моего пользователя, который переопределяет некоторые системные настройки оборотов в минуту

.

это создаст структуру каталогов, необходимых для сборки оборотов в минуту, он также будет обновлять .rpmmacros

#!/bin/sh 

[ "x$1" = "x-d" ] && { 
DEBUG="y" 
export DEBUG 
shift 1 
} 

IAM=`id -un` 
PASSWDDIR=`grep ^$IAM: /etc/passwd | awk -F":" '{print $6}'` 
HOMEDIR=${HOME:=$PASSWDDIR} 

[ ! -d $HOMEDIR ] && { 
echo "ERROR: Home directory for user $IAM not found in /etc/passwd." 
exit 1 
} 

RHDIR="$HOMEDIR/rpmbuild" 
RPMMACROS="$HOMEDIR/.rpmmacros" 
touch $RPMMACROS 

TOPDIR="%_topdir" 
ISTOP=`grep -c ^$TOPDIR $RPMMACROS` 
[ $ISTOP -lt 1 ] && { 
echo "%_topdir  $HOMEDIR/rpmbuild" >> $RPMMACROS 
} 

TMPPATH="%_tmppath" 
ISTMP=`grep -c ^$TMPPATH $RPMMACROS` 
[ $ISTMP -lt 1 ] && { 
echo "%_tmppath $HOMEDIR/rpmbuild/tmp" >> $RPMMACROS 
} 

[ "x$DEBUG" != "x" ] && { 
echo "$IAM  $HOMEDIR $RPMMACROS" 
echo "$RHDIR  $TOPDIR  $ISTOP" 
} 

[ ! -d $RHDIR ] && mkdir -p $RHDIR 

cd $RHDIR 
for i in RPMS SOURCES SPECS SRPMS BUILD tmp ; do 
[ ! -d ./$i ] && mkdir ./$i 
done 

exit 0 

вы можете проверить, если обороты поднял изменения с:

rpm --showrc | grep topdir 

3.

укажите местоположение базы данных RPM, отличное от значения по умолчанию, например следующее:

rpm --dbpath /location/of/your/rpm/database --initdb 
0

Обычно я проверяю свои файлы спецификаций на то же место, что и мой код.

Я запускаю сервер сборки (я использую Хадсон), чтобы начать сборку каждую ночь (может быть непрерывной, но я выбрал ночной). Сервер сборки проверяет код, строит его и запускает rpmbuild. Хадсон устанавливает папку рабочего пространства, которая может быть удалена после каждой сборки, поэтому, если вы установите% _topdir для указания на эту область, тогда вы можете гарантировать, что не будет сбор артефактов, оставшихся после предыдущей сборки. В конце сборки я проверяю свои rpms на контроль версий с комментарием, содержащим номер сборки.

Откат назад - это вопрос вытягивания последних хороших оборотов от контроля версий, стирание текущих оборотов и установка старых оборотов.

Похоже, что у вас уже есть хорошая ручка для использования вашего собственного пакета db.