2

これが私のシナリオです

  • 私たちのチームはAIXで開発しています
  • 数十のアプリケーション、主にPerl、シェルスクリプト、バッチJava、C
  • 展開/ロールバック手順を簡素化したいと思います-現在、バックアップ付きのプレーンな古いtarballを使用しています
  • 私はパッケージングのためにinstallpとrpmを調べ(私のSOの質問を参照)、 rpmを使用することにしました-より良いドキュメントに加えて、IBMは独自のパッケージングツールを持っている間にそれを含めたので、これは私にとって正当な理由です
  • 私はメインのものではなく、別のrpmデータベースを使用したいと思います-私にはrootアクセスがなく、OSアプリを私たちのものから分離することも有益だと思います。

ワークフローは次のようになります。

  • 各アプリには対応するrpm.specがあります-ソース管理にチェックインされています
  • ホームディレクトリにrpmを構築する
  • 独自のpackages.rpmを使用しながらインストール/アップグレード

注:この質問は、先に進むときに自分自身へのメモとして使用します


4

2 に答える 2

1

私の家でrpmを構築する:

1

ユーザーのルートに.rpmmacrosファイルが必要です。これは、システム全体のrpm設定を上書きします。

%_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が変更を取得したかどうかを確認できます:

rpm --showrc | grep topdir

3.3。

次のように、RPMデータベースのデフォルト以外の場所を指定します。

rpm --dbpath /location/of/your/rpm/database --initdb
于 2009-05-20T21:36:24.617 に答える
0

私は通常、自分のコードと同じ場所にスペックファイルをチェックインします。

ビルドサーバー(Hudsonを使用)を実行して、毎晩ビルドを開始します(継続することもできますが、毎晩選択しました)。ビルドサーバーはコードをチェックアウトしてビルドし、rpmbuildを実行します。Hudsonは、各ビルド後に削除できるワークスペースフォルダーを設定するため、%_ topdirをその領域を指すように設定すると、前のビルドからのビルドアーティファクトが残っていないことを保証できます。ビルドの最後に、ビルド番号を含むコメントを付けて、rpmをバージョン管理にチェックインします。

ロールバックは、バージョン管理から最後の適切なrpmを引き出し、現在のrpmを消去し、古いrpmをインストールすることです。

独自のパッケージデータベースを使用することについては、すでに十分に理解しているようです。

于 2009-10-15T15:14:07.370 に答える