2009-05-20 172 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。

听起来像你已经有了使用自己的包数据库的好处理。

相关问题