»õ·Î¿î 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µéÀÇ
ÀÌÀü ¹öÀüµéÀÌ ´Ù½Ã ´Ù¿î·Îµå µÉ °ÍÀ̸ç, ¾÷µ¥ÀÌÆ®µéÀº Áö¿öÁú °ÍÀÌ´Ù.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;