2009-05-20 207 views
2

這裏是我的方案如何使用rpm部署本地生成的應用程序?

  • 我們的團隊開發的AIX
  • 幾十個應用,大多的Perl,shell腳本,批處理的Java,C
  • 我想簡化部署/回滾程序 - 目前使用普通的舊tarball與備份
  • 我看着進入installp與rpm的包裝(見my SO question),並決定去rpm - 更好的文檔,再加上IBM包括它,同時有自己的pa ckaging工具,所以這是我的一個合理的理由
  • 我想要使用一個單獨的rpm數據庫,而不是主要的 - 因爲我沒有訪問,我也覺得這將有利於單獨的操作系統我們的東西的應用程序

工作流程會是什麼樣子:

  • 每個應用程序都有相應的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

我通常檢查我的規格文件到我的代碼是相同的地方。我運行一個生成服務器(我使用Hudson)每天晚上啓動一個構建(可能是連續的,但我選擇每晚)。構建服務器檢出代碼,構建它並運行rpmbuild。 Hudson設置了一個工作空間文件夾,每次構建後都可以刪除,所以如果您將%_topdir設置爲指向該區域,那麼您可以保證不會存在以前構建遺留的構建工件。在構建結束時,我使用包含內部版本號的註釋來檢查我的rpms版本控制。

回滾是從版本控制中拔出最後一個良好的rpm,擦除當前的rpm並安裝舊的rpm。

聽起來像你已經有了使用自己的包數據庫的好處理。

相關問題