<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>Burning a RedHat CD mini-HOWTO: $B:G?7HG$rAH$_9~$`(B</TITLE> <LINK HREF="RedHat-CD-HOWTO-6.html" REL=next> <LINK HREF="RedHat-CD-HOWTO-4.html" REL=previous> <LINK HREF="RedHat-CD-HOWTO.html#toc5" REL=contents> </HEAD> <BODY> <A HREF="RedHat-CD-HOWTO-6.html">$B<!$N%Z!<%8(B</A> <A HREF="RedHat-CD-HOWTO-4.html">$BA0$N%Z!<%8(B</A> <A HREF="RedHat-CD-HOWTO.html#toc5">$BL\<!$X(B</A> <HR> <H2><A NAME="sec-updates"></A> <A NAME="s5">5. $B:G?7HG$rAH$_9~$`(B</A></H2> <P> <P>$B:G?7HG$rAH$_9~$`$K$O!"(B <A HREF="http://www.rpm.org">rpm</A> $B%3%^%s%I(B $B$NF0:n$9$k(BLinux$B%^%7%s$+$i!"%G%#%9%H%j%S%e!<%7%g%s$N$"$k%G%#%l%/%H%j$X$N(B $B=q$-9~$_8"$,I,MW$G$9!#(B $B<!$N#3$D$N%9%F%C%W$rF'$s$G$$$-$^$9(B - <P> <OL> <LI>$B%Q!<%_%C%7%g%s$N=$@5(B</LI> <LI>$B99?7$5$l$?(BRPM $B$HCV$-49$($k(B</LI> <LI>$B?7$7$$(Bhdlist $B%U%!%$%k$N@8@.(B</LI> </OL> <P><CODE>updates</CODE> $B%G%#%l%/%H%j$N%_%i!<$r0];}$7$F$$$k$J$i!"$3$N%9%F%C%W$r(B $BF'$`$3$H$G(B $B$$$D$G$b:G?7HG$r4^$s$@(B CD$B$r:n@.$9$k$3$H$,2DG=$G$9!#(B <P> <P> <H2><A NAME="ss5.1">5.1 $B%Q!<%_%C%7%g%s$N=$@5(B</A> </H2> <P> <P> <P>$BIT9,$K$b!"(BFTP$B%W%m%0%i%`$O(B $B%U%!%$%k$d%G%#%l%/%H%j$N%Q!<%_%C%7%g%s$r(B $B$=$N$^$^$K$7$F$/$l$J$$>l9g$,$"$j$^$9!#%$%s%9%H!<%k:n6HCf!"$$$/$D$+$N(B $B%W%m%0%i%`$O(B CD $B>e$GD>@\<B9T$5$l$k$?$a!"(BCD $B$r>F$/$^$($K(B $B%W%m%0%i%`!"%7%'%k%9%/%j%W%H!"$=$7$F(B $B6&M-%i%$%V%i%j$K$-$A$s$H<B9T5v2D$,(B $BM?$($i$l$F$$$k$3$H$r(B $B3NG'$9$kI,MW$,$"$j$^$9!#$3$N:n6H$K$O(B $B<!$N$h$&$J(B <CODE>updatePerm</CODE> $B%9%/%j%W%H(B $B$r;H$$$^$9!#(B- <P> <HR> <PRE> #!/bin/bash RHVERSION=5.2 LIST=/tmp/er3hd3w25 CDDIR=/jaz/redhat-${RHVERSION} # Find all directories, and make sure they have +x permission find $CDDIR -type d -exec chmod -c 755 {} \; # Find all files that are executables, shell or perl scripts find $CDDIR -type f | file -f - | grep -v RPM \ | egrep -i 'executable|perl|bourne|shell' | cut -f1 -d: > $LIST # Find shared libraries find $CDDIR -name \*.so >> $LIST # Make them executable while read file do if [ ! -x $file ] ; then chmod -c 755 $file fi done < $LIST /bin/rm $LIST exit 0 </PRE> <HR> <P> <H2><A NAME="sec-updates"></A> <A NAME="ss5.2">5.2 $B99?7$5$l$?(BRPM $B$HCV$-49$($k(B</A> </H2> <P> <P>$B<!$N(B <CODE>updateCD</CODE> $B$H$$$&%9%/%j%W%H$O(B updates $B%G%#%l%/%H%j$NA4$F$N(B $B%U%!%$%k$r(B RPMS $B%G%#%l%/%H%j$K%3%T!<$7$^$9!#$3$N%9%/%j%W%H$O(B rpm $B$N(B $B$$$/$D$+$N%+%i%/%j$r;H$C$F!"(Bupdates $B%G%#%l%/%H%j$NCf$N$h$j?7$7$$(B $B%U%!%$%k$r?dDj$7$^$9!#8E$/$J$C$?%U%!%$%k$O(B <CODE>${OLD}</CODE> $B%G%#%l%/%H%j$K(B $B0\$5$l$^$9!#(B <P> <HR> <PRE> #! /bin/bash # This script updates rpms in a RedHat distribution found in $RPMDIR. # The old rpms will be placed in $OLDDIR. # The new rpms should be located in $UPDDIR. # The architechture is $ARCH. RHVERSION=5.2 ARCH=i386 CDDIR=/jaz/redhat-${RHVERSION} RPMDIR=${CDDIR}/${ARCH}/RedHat/RPMS UPDDIR=${CDDIR}/updates/${ARCH} OLDDIR=${CDDIR}/old if [ ! -d $OLDDIR ] ; then echo making directory $OLDDIR mkdir $OLDDIR fi allow_null_glob_expansion=1 for rpm in ${UPDDIR}/*.rpm ; do NAME=`rpm --queryformat "%{NAME}" -qp $rpm` unset OLDNAME for oldrpm in ${RPMDIR}/${NAME}*.rpm ; do if [ `rpm --queryformat "%{NAME}" -qp $oldrpm` = "$NAME" ]; then OLDNAME=$oldrpm; break fi done if [ -z "$OLDNAME" ]; then echo $NAME is new cp -pv $rpm $RPMDIR else if [ `basename $rpm` != `basename $OLDNAME` ]; then mv $OLDNAME $OLDDIR cp -pv $rpm $RPMDIR fi fi done # Copy new boot image files to the right place... for newfile in ${UPDDIR}/images/* ; do file=${CDDIR}$/${ARCH}/images/$(basename ${newfile}) if [ $newfile -nt $file ] ; then cp -pv $newfile $file fi done exit 0 </PRE> <HR> <P> <H2><A NAME="sec-new-hdlist"></A> <A NAME="ss5.3">5.3 $B?7$7$$(Bhdlist $B%U%!%$%k$N@8@.(B</A> </H2> <P> <P>CD $B$+$i%$%s%9%H!<%k$9$k:]!"(BCD $B>e$N(B $B%$%s%9%H!<%k%W%m%0%i%`$O(B CD $B>e$K$"$k(B <CODE>RedHat/base/hdlist</CODE> $B$H$$$&(B RPM $B%Q%C%1!<%8$N>pJs$r5-=R$7$?%U%!%$%k$r;2>H$7$^$9!#$3$N(B <CODE>hdlist</CODE> $B$O(B <CODE>misc/src/install/genhdlist</CODE> $B$H$$$&%W%m%0%i%`$K(B $B$h$C$F(B $B?7$?$K@8@.$9$k;v$,$G$-$^$9!#<!$K$"$2$k$N$,(B genhdlist$B$r8F$S=P$9(B <CODE>updateHdlist</CODE> $B%9%/%j%W%H$G$9!#!v$3$N%9%/%j%W%H$O!"(Broot $B$G(B $B<B9T$7$J$1$l$P$$$1$^$;$s!#(B- <P> <HR> <PRE> #!/bin/bash RHVERSION=5.2 ARCH=i386 echo generating hdlist... CDDIR=/jaz/redhat-${RHVERSION} GENHDDIR=${CDDIR}/${ARCH}/misc/src/install chmod u+x ${GENHDDIR}/genhdlist chmod 644 ${CDDIR}/${ARCH}/RedHat/base/hdlist ${GENHDDIR}/genhdlist ${CDDIR}/${ARCH} || echo "*** GENHDLIST FAILED ***" exit 0 </PRE> <HR> <P>$BCm0U!'%a%$%s%G%#%l%/%H%j!J(B<CODE>RedHat/RPMS</CODE>$B!K$K99?7$5$l$?(B $B%U%!%$%k$rAH$_9~$s$G$7$^$($P!"$"$J$?$N%G%#%9%H%j%S%e!<%7%g%s$O$b$O$d(B Red Hat FTP $B%5%$%H$N%_%i!<$G$O$"$j$^$;$s!#!J$h$j?7$7$$$b$N$K$J$C$F$$$^$9!K(B $B$7$?$,$C$F!"$3$3$G4V0c$($F!":F$S!J(Bmirror$B%3%^%s%I$G!K%G%#%9%H%j%S%e!<%7%g%s$N(B $B%_%i!<$r(B $B<B9T$7$F$7$^$&$H!"$b$H$b$H$N8E$$%P!<%8%g%s$N(BRPM $B$,(B $B%@%&%s%m!<%I$7D>$5$l!"$;$C$+$/CV$-49$($??7$7$$(BRPM$B$O>C$5$l$F$7$^$$$^$9!#(B <P> <P> <H3>$B=EMW!'(BRedHat5.2$B$K4X$7$F(B</H3> <P> <P> <P>RedHat $B%P!<%8%g%s(B 5.2 $B0JA0$N$b$N$KIUB0$9$k(B <CODE>genhdlist</CODE> $B$O!"(B <CODE>RedHat/RPMS</CODE> $B%G%#%l%/%H%j$K(B RPM$B%U%!%$%k(B <EM>$B0J30(B</EM> $B$N%U%!%$%k$,4^$^$l$F$$$k$H(B $B%/%i%C%7%e$7$^$9!#(B RedHat 5.2$B$N(B <CODE>RedHat/RPMS</CODE> $B$K$O!"#2$D$N(BRPM$B$G$O$J$$%U%!%$%k(B (<CODE>ls-lR</CODE> $B$H(B <CODE>ls-lR.gz</CODE> ) $B$,4^$^$l$F$$$k$?$a!"LdBj$,5/$3$j$^$9!#BP:v$H$7$F!"(B $B$3$N%G%#%l%/%H%j$+$i(BRPM$B0J30$N%U%!%$%k$rA4$F:o=|$9$k$+!"(B <CODE>misc/src/install/genhdlist.c</CODE> $B$K<!$N%Q%C%A$r(B $BEv$F$F(B make $B$9$kI,MW$,$"$j$^$9!#(B $B$3$N%Q%C%A$rEv$F$k$3$H$G(B <CODE>genhdlist</CODE> $B$O(B RPM $B0J30$N%U%!%$%k$rL5;k$9$k$h$&$K$J$j$^$9!#(B <P> <P> <PRE> *** genhdlist.c.orig Fri Nov 27 12:08:13 1998 --- genhdlist.c Fri Nov 27 12:08:20 1998 *************** *** 12,23 **** --- 12,26 ---- #define FILENAME_TAG 1000000 + /* Not used apparently... + int tags[] = { RPMTAG_NAME, RPMTAG_VERSION, RPMTAG_RELEASE, RPMTAG_SERIAL, RPMTAG_FILENAMES, RPMTAG_FILESIZES, RPMTAG_GROUP, RPMTAG_REQUIREFLAGS, RPMTAG_REQUIRENAME, RPMTAG_REQUIREVERSION, RPMTAG_DESCRIPTION, RPMTAG_SUMMARY, RPMTAG_PROVIDES, RPMTAG_SIZE, RPMTAG_OBSOLETES }; int numTags = sizeof(tags) / sizeof(int); + */ int main(int argc, char ** argv) { char buf[300]; *************** *** 26,34 **** --- 29,39 ---- struct dirent * ent; int fd, rc, isSource; Header h; + /* not used int count, type; int i; void * ptr; + */ if (argc != 2) { fprintf(stderr, "usage: genhdlist <dir>\n"); *************** *** 74,79 **** --- 79,85 ---- rc = rpmReadPackageHeader(fd, &h, &isSource, NULL, NULL); + if (!rc) { headerRemoveEntry(h, RPMTAG_POSTIN); headerRemoveEntry(h, RPMTAG_POSTUN); headerRemoveEntry(h, RPMTAG_PREIN); *************** *** 110,115 **** --- 116,122 ---- headerWrite(outfd, h, HEADER_MAGIC_YES); headerFree(h); close(fd); + } } errno = 0; </PRE> <P> <HR> <A HREF="RedHat-CD-HOWTO-6.html">$B<!$N%Z!<%8(B</A> <A HREF="RedHat-CD-HOWTO-4.html">$BA0$N%Z!<%8(B</A> <A HREF="RedHat-CD-HOWTO.html#toc5">$BL\<!$X(B</A> </BODY> </HTML>