製作automake-1.9.6的RPM包過程如下:
1.下載automake-1.9.6的源代碼包$ wget http://ftp.gnu.org/gnu/automake/automake-1.9.6.tar.gz
解壓automake-1.9.6.tar.gz,更名爲automake-1.9.6.patched,
$ tar zxvfautomake-1.9.6.tar.gz $ mv automake-1.9.6 automake-1.9.6.patched
按照下面的變化修改config.guess(文件位置automake-1.9.6.patched/lib/config.guess)
@@ -527,7 +527,7 @@ echo rs6000-ibm-aix3.2 fi exit ;; - *:AIX:*:[456]) + *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -cprocessor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} |grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000
再解壓一個原始的automake-1.9.6, 並生成patch文件:
$ tar zxvfautomake-1.9.6.tar.gz $ diff -urNautomake-1.9.6 automake-1.9.6.patched > automake-1.9.6-aix6.patch
檢查patch文件:
$ catautomake-1.9.6-aix6.patch diff -urN automake-1.9.6/lib/config.guessautomake-1.9.6.patched/lib/config.guess ---automake-1.9.6/lib/config.guess 2005-07-10 17:16:04.000000000 +0000 +++automake-1.9.6.patched/lib/config.guess 2013-07-17 01:16:48.000000000 +0000 @@ -527,7 +527,7 @@ echo rs6000-ibm-aix3.2 fi exit ;; - *:AIX:*:[45]) + *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -cprocessor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} |grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000
編寫spec文件,可以參照下面的資料:
http://www.redbooks.ibm.com/redbooks/pdfs/sg246033.pdf
編寫完的spec文件內容如下:
# cat automake-1.9.6-3.spec Summary: A GNU tool forautomatically creating Makefiles. Name: automake Version: 1.9.6 Release: 3 License: GPL Group: Development/Tools Source:ftp://ftp.gnu.org/gnu/automake/%{name}-%{version}.tar.gz URL:http://www.gnu.org/software/automake Patch0: automake-1.9.6-aix6.patch BuildRoot:/var/tmp/%{name}-root %define _prefix/opt/freeware Buildrequires: autoconf>= 2.58, flex, bison Requires: perl, autoconf>= 2.58 BuildArchitectures:noarch %define DEFCC cc %description Automake is a tool forautomatically generating `Makefile.in' files compliant with theGNU Coding Standards. You should installAutomake if you are developing software and would like to use its abilityto automatically generate GNU standard Makefiles. If youinstall Automake, you will also need to install GNU's Autoconf package. %prep exportPATH=/opt/freeware/bin:$PATH rm -rf $RPM_BUILD_ROOT %setup -q if test x$PATCH = x ;then PATCH=patch ; fi $PATCH -p1 -s <%{_sourcedir}/automake-1.9.6-aix6.patch %build # Use the defaultcompiler for this platform - gcc otherwise if [[ -z "$CC"]] then if test "X`type %{DEFCC}2>/dev/null`" != 'X'; then export CC=%{DEFCC} else export CC=gcc fi fi if [[ "$CC" !="gcc" ]] then export RPM_OPT_FLAGS=`echo$RPM_OPT_FLAGS | sed 's:-fsigned-char::'` fi exportCFLAGS=$RPM_OPT_FLAGS %configure--prefix=%{_prefix} makeCFLAGS="$RPM_OPT_FLAGS" LDFLAGS=-s %install ["${RPM_BUILD_ROOT}" != "/" ] && rm -rf${RPM_BUILD_ROOT} makeDESTDIR=${RPM_BUILD_ROOT} install cd $RPM_BUILD_ROOT mkdir -p usr/bin || true for file in automakeaclocal do ln -sf ../..%{_bindir}/$fileusr/bin/$file done %clean ["${RPM_BUILD_ROOT}" != "/" ] && rm -rf${RPM_BUILD_ROOT} %files %defattr(-,root,system) %doc AUTHORS COPYINGINSTALL NEWS README THANKS TODO %{_bindir}/* %{_prefix}/share/* %{_prefix}/info/*.info* /usr/bin/* %changelog * Tue May 16 2006 BULL - Release 3 * Tue Nov 15 2005 BULL - Release 2 * Mon Nov 14 2005 BULL - Release 1 - New version version: 1.9.6
將上面準備的文件拷貝到下面的目錄中:
# cp automake-1.9.6.tar.gz /opt/freeware/src/packages/SOURCES/ # cp automake-1.9.6-aix6.patch /opt/freeware/src/packages/SOURCES/ # cp automake-1.9.6-3.spec /opt/freeware/src/packages/SPECS/
然後用下面的命令打包。如果有rpmbuild 命令,應該用rpmbuild -bs --target=i686 xxx.spec而不是rpm。
rpm -ba/opt/freeware/src/packages/SPECS/automake-1.9.6-3.spec
當看到如下內容的時候,就成功了。
Wrote:/opt/freeware/src/packages/SRPMS/automake-1.9.6-3.src.rpm Wrote:/opt/freeware/src/packages/RPMS/noarch/automake-1.9.6-3.aix6.1.noarch.rpm
將生成的兩個包拷貝出來。
mkdir mypackages cp /opt/freeware/src/packages/RPMS/noarch/automake-1.9.6-3.aix6.1.noarch.rpm. cp /opt/freeware/src/packages/SRPMS/automake-1.9.6-3.src.rpm.
通過下面的命令查看rpm內容,確定下src包中是否包含了patch,看看二進制rpm包的內容。
rpm -qpl automake-1.9.6-3.aix6.1.noarch.rpm rpm -qpl automake-1.9.6-3.src.rpm
先清理一下垃圾
# rm -fr/opt/freeware/src/packages/BUILD/automake-1.9.6/ # rm -fr/opt/freeware/src/packages/SOURCES/automake-1.9.6-aix6.patch # rm -fr/opt/freeware/src/packages/SOURCES/automake-1.9.6.tar.gz # rm -fr/opt/freeware/src/packages/SRPMS/automake-1.9.6-3.src.rpm # rm -fr/opt/freeware/src/packages/RPMS/noarch/automake-1.9.6-3.aix6.1.noarch.rpm # rm -fr/opt/freeware/src/packages/SPECS/automake-1.9.6-3.spec
通過下面的命令安裝測試:
#rpm -ivh --testautomake-1.9.6-3.aix6.1.noarch.rpm #rpm -ivh --testautomake-1.9.6-3.src.rpm
如果上面的命令沒有出錯,可以用下面的命令真正安裝:
#rpm -ivh automake-1.9.6-3.aix6.1.noarch.rpm automake ################################################## # rpm -ivhautomake-1.9.6-3.src.rpm automake ##################################################
運行完第二個命令後可以查看到下面的文件:
# ls/opt/freeware/src/packages/SPECS/ automake-1.9.6-3.spec # ls/opt/freeware/src/packages/SOURCES/ automake-1.9.6-aix6.patch automake-1.9.6.tar.gz
現在可以再次編譯運行,測試src包是否正確:
rpm -ba/opt/freeware/src/packages/SPECS/automake-1.9.6-3.spec
現在與剛開始的時候一樣了,可以查看執行結果中是否有下面的兩行:
Wrote:/opt/freeware/src/packages/SRPMS/automake-1.9.6-3.src.rpm Wrote:/opt/freeware/src/packages/RPMS/noarch/automake-1.9.6-3.aix6.1.noarch.rpm
如果有,恭喜你,可以發佈了。
http://download.csdn.net/download/leanderlee/5768731
http://download.csdn.net/download/leanderlee/5768717