3.

»õ·Î¿î hdlist ÆÄÀÏ »ý¼ºÇϱâCD·ÎºÎÅÍ ¼³Ä¡ÇÒ ¶§ CD¿¡ ÀÖ´Â ¼³Ä¡ ÇÁ·Î±×·¥Àº ¾î¶² RPM ÆÐŰÁöµéÀÌ »ç¿ë°¡´ÉÇÑÁö¸¦ ±â¼úÇÏ´Â RedHat/base/hdlist ÆÄÀÏ¿¡ ÀÇÁ¸ÇÑ´Ù. hdlist ÆÄÀÏÀº misc/src/install/genhdlist ·Î »ý¼ºÇÒ ¼ö ÀÖ´Ù. ÀÌ ÇÁ·Î±×·¥À» ½ÇÇà½Ãų ¶§¿¡´Â ´Ü ÇϳªÀÇ Àμö¸¦ ÁÖ¾î¾ß Çϴµ¥ ±×°ÍÀº ¹èÆ÷ÆÇÀÇ ·çÆ® µð·ºÅ丮ÀÇ Àý´ë°æ·ÎÀÌ´Ù. ±× ÇÁ·Î±×·¥À» È£ÃâÇÏ´Â updateHdlist ½ºÅ©¸³Æ®´Â ¾Æ·¡¿Í °°´Ù:#!/bin/bash RHVERSION=6.0 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 0NOTE: RedHat/RPMS µð·ºÅ丮¿¡ ¾÷µ¥ÀÌÆ®¸¦ ¹Ý¿µÇÑ ÈÄ¿¡´Â ´ç½ÅÀÇ ¹èÆ÷ÆÇ º¹»çº»Àº ´õ ÀÌ»ó ·¹µåÇÞ ¹èÆ÷ÆÇ »çÀÌÆ®ÀÇ ¹Ì·¯°¡ ¾Æ´Ï´Ù. »ç½Ç, ±×°ÍÀº ´õ¿í ÃÖ½ÅÀÇ °ÍÀÌ´Ù! µû¶ó¼­ ¹èÆ÷ÆÇÀ» ¹Ì·¯ÇÏ·Á°í ½ÃµµÇÑ´Ù¸é ¾÷µ¥ÀÌÆ®µÈ RPMµéÀÇ ÀÌÀü ¹öÀüµéÀÌ ´Ù½Ã ´Ù¿î·Îµå µÉ °ÍÀ̸ç, ¾÷µ¥ÀÌÆ®µéÀº Áö¿öÁú °ÍÀÌ´Ù.

3.1.

RedHat 5.2¸¦ À§ÇÑ Áß¿äÇÑ note·¹µåÇÞ 5.2 ÀÌÀüºÎÅÍ ¹èÆ÷µÈ genhdlist ´Â RedHat/RPMS µð·ºÅ丮¿¡ RPM ÆÄÀÏÀÌ ¾Æ´Ñ ÆÄÀÏÀÌ ÀÖÀ¸¸é Ãæµ¹À» ÀÏÀ¸Å²´Ù. 5.2 ¹èÆ÷ÆÇ¿¡´Â ls-lR °ú ls-lR.gz ¶ó´Â RPM ÀÌ ¾Æ´Ñ ÆÄÀÏÀÌ Àֱ⠶§¹®¿¡ ¹®Á¦¸¦ ÀÏÀ¸Å°°Ô µÈ´Ù. µû¶ó¼­ RPM ÀÌ ¾Æ´Ñ ÆÄÀÏÀ» ¸ðµÎ ±× µð·ºÅ丮·ÎºÎÅÍ Á¦°ÅÇØ¾ß ÇÑ´Ù. ±× ´ë½Å¿¡ ´ÙÀ½ÀÇ ÆÐÄ¡¸¦ misc/src/install/genhdlist.c ¿¡ Àû¿ëÇÏ°í »õ·Î ÄÄÆÄÀÏÇØµµ µÈ´Ù. ¾Æ·¡ÀÇ ÆÐÄ¡´Â genhdlist °¡ RPMÀÌ ¾Æ´Ñ ÆÄÀÏÀ» ¹«½ÃÇϵµ·Ï ¸¸µç´Ù.*** 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;