Как развернуть домашние приложения с помощью rpm? - PullRequest
2 голосов
/ 21 мая 2009

вот мой сценарий

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

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

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

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


Ответы [ 2 ]

1 голос
/ 21 мая 2009

оборотов в моем доме:

1 .

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

%_signature gpg
%_gpg_name {yourname}
%_gpg_path ~/.gnupg
%distribution AIX 5.3
%vendor {Northwind? :)}
%make   make

2 .

это создаст структуру каталогов, необходимую для сборок rpm, а также обновит .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 голосов
/ 15 октября 2009

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

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

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

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

...