¸®´ª½º¿ë ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¸¦ ÄÄÆÄÀÏÇÏ°í ÀνºÅçÇϱâ <author> <em><url url="mailto:thegrendel@theriver.com" name="Mendel Cooper"></em> --- <url url="http://personal.riverusers.com/~thegrendel/" name="http://personal.riverusers.com/~thegrendel/"> <date>v1.91, 27 July 1999 <trans>¹ø¿ª: ¹Ú¹Î¼® <tt/mpark@hrl.hitachi.co.jp/ <abstract> ÀÌ ±ÛÀº ¸®´ª½º¿¡¼­ "ÀϹÝÀûÀÎ" À¯´Ð½º ¼ÒÇÁÆ®¿þ¾î ¹èÆ÷º»À» ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ ¾È³»¼­ÀÌ´Ù. ¾Æ¿ï·¯ "rpm"°ú "deb" Çü½ÄÀ¸·Î ¹Ì¸® ÆÐÅ°ÁöÈ­µÈ ¹ÙÀ̳ʸ®µé¿¡ ´ëÇؼ­µµ Á¶±Ý ´Ù·é´Ù. </abstract> <!-- Table of contents --> <toc> <!-- Begin the document --> <sect>µµÀÔ <p> À¯´Ð½º¿Í ¸®´ª½º¿ëÀÇ ¸¹Àº ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö°¡ ¾ÐÃàµÈ ¼Ò½º ÆÄÀÏ »óÅ·Π¹èÆ÷µÈ´Ù. ¶È°°Àº ÆÐÅ°Áö°¡ ¼­·Î ´Ù¸¥ Á¾·ùÀÇ ÄÄÇ»ÅÍ¿¡¼­ µ¹¾Æ°¡µµ·Ï ÄÄÆÄÀ쵃 ¼ö ÀÖ°í, µû¶ó¼­ ¼ÒÇÁÆ®¿þ¾î Á¦ÀÛÀÚ´Â ¿©·¯ ¹öÁ¯À» ¸¸µå´Â ¼ö°í¸¦ ´ú ¼ö ÀÖ´Ù. ÀÌ·¸°Ô Çؼ­, ÇÑ ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°ÁöÀÇ ¹èÆ÷º»ÀÌ ÀÎÅÚÀ» ºñ·ÔÇØ DECÀÇ ¾ËÆÄ, RISC ¿öÅ©½ºÅ×À̼ǿ¡¼­ ¸ÞÀÎ ÇÁ·¹ÀÓ¿¡ À̸£´Â ÄÄÇ»ÅÍ¿¡¼­ ÄÄÆÄÀÏµÇ°í »ç¿ëµÈ´Ù. ÇÏÁö¸¸ ºÒÇàÇÏ°Ôµµ ÀÌ·± ¹æ½Ä¿¡¼­´Â »ç¿ëÀÚ -- ¹Ù·Î ´ç½Å -- ¿¡°Ô ¼ÒÇÁÆ®¿þ¾î¸¦ ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÒ Ã¥ÀÓÀ» Á®¾ß ÇÑ´Ù. ÇÏÁö¸¸, ÀÌ °úÁ¤À» ÀÌÇØÇÏ´Â °ÍÀº º¸±âº¸´Ù ¾î·Æ°Å³ª ½Åºñ·Î¿î ÀÏÀÌ ¾Æ´Ï´Ù. ÀÌ ¾È³»¼­°¡ º¸¿©ÁÖµíÀÌ ¸»ÀÌ´Ù. <sect>ÆÄÀÏÀ» Ç®±â <p> ´ç½ÅÀº ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¸¦ ´Ù¿î¹Þ´Â µîÀÇ ¹æ¹ýÀ¸·Î ±¸Çß´Ù. ´ë°³ ±× ÆÐÅ°Áö´Â <tt>.tar.gz</tt> À̳ª <tt>.tgz</tt> À̶ó´Â ÇüÅ·ΠÇÑ ÆÄÀÏ·Î ¸ð¾Æ¼­(<em>tarred</em>) ¾ÐÃàÇÑ(<em>gzipped</em>) °ÍÀÌ´Ù. (ÈçÈ÷ "tarball"À̶ó°í ¾Ë·ÁÁ®ÀÖ´Ù) ¿ì¼± ÀÌ ÆÄÀÏÀ» Àû´çÇÑ ÀÛ¾÷ µð·ºÅ͸®·Î º¹»çÇÑ´Ù. ´ÙÀ½¿£ ¾ÐÃàÀ» Ç®°í(<em>gunzip</em>) ¿ø·¡ÀÇ ¿©·¯ ÆÄÀÏ·Î Ç®¾î³õ´Â´Ù(<em>untar</em>). <bf>tar xzvf <em>ÆÄÀÏÀ̸§</em></bf> À̶ó°í ÇÏ¸é µÈ´Ù. ¹°·Ð <em>ÆÄÀÏÀ̸§</em> À̶õ ¼ÒÇÁÆ®¿þ¾î ÆÄÀÏÀÇ À̸§ÀÌ´Ù. tar¸¦ Ç®¸é º¸Åë ÇÏÀ§ µð·ºÅ͸®µéÀ» ¸¸µé°í °Å±â¿¡ Àû´çÈ÷ ÆÄÀϵéÀ» ¼³Ä¡ÇÑ´Ù. Ȥ½Ã ÆÐÅ°Áö ÆÄÀÏÀÇ È®ÀåÀÚ°¡ <em>.Z</em> ¶ó°í Çصµ À§ÀÇ ¹æ¹ýÀ» ¾µ ¼ö ÀÖ´Ù. <bf>uncompress</bf>¸¦ ¼öÇàÇÑ ´ÙÀ½ <bf>tar xvf</bf> ¶ó°í Çصµ µÈ´Ù. <bf>tar tzvf ÆÄÀÏÀ̸§</bf>À̶ó°í Çϸé ÀÌ °úÁ¤À» ¹Ì¸® º¼ ¼ö ÀÖ´Ù. ÀÌ ¸í·ÉÀº ½ÇÁ¦·Î ¾ÐÃàÀ» ÇØÁ¦Çϰųª ÇÏÁö´Â ¾Ê°í ÆÐÅ°Áö ¾ÈÀÇ ÆÄÀÏ ¸ñ·ÏÀ» º¸¿©ÁØ´Ù. "tarball"À» Ç®¾î³»´Â À§ ¹æ¹ýÀº ´ÙÀ½ÀÇ µÎ °¡Áö¿Í µ¿µîÇÏ´Ù. <itemize> <item>gzip -cd filename | tar xvf - <item>gunzip -c filename | tar xvf - </itemize> ('-'´Â <em>tar</em> ¸í·ÉÀÇ ÀÔ·ÂÀ» <tt>Ç¥ÁØÀÔ·Â</tt>À¸·ÎºÎÅÍ ÀÐ°Ô ÇÑ´Ù.) »õ·Î¿î <em>bzip2</em>(<tt>.bz2</tt>) Çü½ÄÀÇ ¼Ò½º ÆÄÀÏÀº <bf>bzip2 -cd ÆÄÀÏÀ̸§ | tar xvf -</bf> ·Î Ç® ¼ö ÀÖ´Ù. ¶Ç tar¿¡ ÀûÀýÇÑ ÆÐÄ¡¸¦ Çß´Ù¸é (ÀÚ¼¼ÇÑ °ÍÀº <htmlurl url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/mini/Bzip" name="Bzip2 HOWTO"> ¸¦ Âü°í) °£´ÜÈ÷ <bf>tar xyvf ÆÄÀÏÀ̸§</bf> À̶ó´Â ¸í·ÉÀ¸·Î ÇÒ ¼öµµ ÀÖ´Ù. µ¥ºñ¾È ¸®´ª½º´Â È÷·Î½Ã ´ÙÄÉÄ«¿Í°¡ ¸¸µç ´Ù¸¥ <tt>tar</tt> ÆÐÄ¡¸¦ ¾²¹Ç·Î <em>-I, --bzip2, --bunzip2</em> °°Àº ¿É¼ÇÀ» »ç¿ëÇÑ´Ù. [ À§ Á¤º¸¸¦ Á¤Á¤ÇÏ°í ¾÷µ¥ÀÌÆ®Çϵµ·Ï ÇØÁØ °Í¿¡ ´ëÇØ R. Lynn°ú Fabrizio Stefani¿¡°Ô °¨»çÇÑ´Ù.] ÆÐÅ°ÁöÀÇ ¼³Á¤ Á¤º¸¿¡ ÁöÁ¤µÈ °Í ¶§¹®¿¡, ¾î¶² ¶§´Â ¾ÐÃàµÈ ÆÄÀÏÀ» »ç¿ëÀÚÀÇ È¨ µð·ºÅ͸®³ª <tt>/</tt>, <tt>/usr/src</tt>, <tt>/opt</tt> µîÀÇ ´Ù¸¥ µð·ºÅ͸®¿¡ Ç®¾î ¼³Ä¡ÇØ¾ß ÇÑ´Ù. ¾ÐÃàÀ» Ç® ¶§(untar) ¿¡·¯ ¸Þ½ÃÁö°¡ ³ª¿Â´Ù¸é, ÀÌ µð·ºÅ͸® ÁöÁ¤ ¶§¹®ÀÏ ¼ö ÀÖ´Ù. ÆÐÅ°ÁöÀÇ ¹®¼­ ÆÄÀÏ, ƯÈ÷ <tt>README</tt>¿Í Ȥ½Ã ÀÖ´Ù¸é <tt>INSTALL</tt> ÆÄÀÏÀ» ÀÐ¾î º¸¶ó. ±×¸®°í ¼³Ä¡ ¿ä·É¿¡ ¸Â°Ô config ÆÄÀÏ°ú <tt>Makefile</tt>µéÀ» ÇÊ¿ä¿¡ µû¶ó °íÄ¡µµ·Ï ÇÏÀÚ. <tt>Imake</tt> ÆÄÀÏÀº ´ë°³ °Çµå·Á¼­´Â <tt>¾ÈµÈ´Ù</tt>´Â Á¡¿¡ ÁÖÀÇÇ϶ó. °ÑÀ¸·Î µå·¯³ªÁö ¾Ê´Â °á°ú¸¦ °¡Áö°í ÀÖÀ» ¼ö Àֱ⠶§¹®ÀÌ´Ù. ´ëºÎºÐÀÇ ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö´Â <tt>make install</tt> À» ¼öÇàÇÏ¸é ¹ÙÀ̳ʸ® ÆÄÀϵéÀ» ½Ã½ºÅÛÀÇ ÀûÀýÇÑ ÀÚ¸®¿¡ °®´ÙµÎµµ·Ï ÇÏ¿© ¼³Ä¡ µð·ºÅ͸® ¹®Á¦¸¦ ÀÚµ¿ÀûÀ¸·Î ó¸®ÇÑ´Ù. <itemize> <item>ÀÎÅͳÝÀÇ ´º½º±×·ì °°Àº °÷¿¡¼­´Â <tt>shar</tt> ÆÄÀÏÀ̳ª <em>shell archive</em> ÇüÅÂÀÇ ¼Ò½ºÆÄÀϵéÀ» º¼ ¼ö ÀÖ´Ù. ÀÌ Çü½ÄµéÀº »ç¶÷ÀÌ ÀÐÀ» ¼ö ÀÖ´Ù´Â Á¡ ¶§¹®¿¡ »ç¿ëµÇ°í ÀÖ´Ù. ´º½º±×·ìÀÇ °ü¸®ÀÚ°¡ ¼Ò½ºÆÄÀÏÀ» Àаí Á¤¸®Çϰųª, ºÎÀûÀýÇÑ °ÍÀÏ °æ¿ì¿¡´Â »èÁ¦ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ÀÌ Çü½ÄÀº <bf>unshar ÆÄÀÏÀ̸§.shar</bf> ¸í·ÉÀ¸·Î Ç®¾î¾ß ÇÑ´Ù. ´Ù¸¥ °ÍÀº "tarball"°ú °°´Ù. </itemize> <itemize> <item>¾î¶² ¼Ò½º ÆÄÀϵéÀº <em>zip</em>, <em>arc</em>, <em>lha</em>, <em>arj</em>, <em>zoo</em>, <em>rar</em>, <em>shk</em>¿Í °°ÀÌ DOS, Mac, Amiga ÀÇ ºñÇ¥ÁØÀûÀÎ ¾ÐÃà À¯Æ¿¸®Æ¼·Î 󸮵Ǿî ÀÖ´Ù. ´ÙÇàÈ÷ ÀÌµé ´ëºÎºÐÀ» ó¸®ÇÒ ¼ö ÀÖ´Â ¸®´ª½º¿ë À¯Æ¿¸®Æ¼°¡ <url url="http://metalab.unc.edu" name="sunsite"> µî¿¡ ÀÖ´Ù. </itemize> ¶§·Î´Â Ç®¾î³õÀº ¼Ò½º ÆÄÀÏÀ» ¾÷µ¥ÀÌÆ®Çϰųª ¹ö±× ¼öÁ¤»çÇ×À» Àû¿ëÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ÀÌ·² ¶§´Â º¯°æ »çÇ×À» ³ª¿­ÇÑ <tt>patch</tt>³ª <tt>diff</tt> ÆÄÀÏÀ» »ç¿ëÇÑ´Ù. ÀÌ°ÍÀº <tt>README</tt>³ª ±âŸ ¹®¼­¸¦ ÅëÇØ ¾Ë ¼ö ÀÖ´Ù. Larry WallÀÇ ¸·°­ÇÑ À¯Æ¿¸®Æ¼ <em>patch</em>¸¦ »ç¿ëÇÏ´Â º¸Åë ¹æ¹ýÀº <bf>patch < patchfile</bf> ÀÌ´Ù. ÀÌÁ¦´Â ¼³Ä¡ °úÁ¤ °¡¿îµ¥ ÄÄÆÄÀÏ ´Ü°è·Î ³Ñ¾î°¥ ¼ö ÀÖÀ» °ÍÀÌ´Ù. <sect>make ¾²±â <p> <tt>Makefile</tt>Àº ÄÄÆÄÀÏ °úÁ¤ÀÇ ¿­¼è´Ù. °¡Àå °£´ÜÇÑ ÇüÅ·Πº¸¸é, MakefileÀº ÆÐÅ°ÁöÀÇ ½ÇÇà °¡´ÉÇÑ ºÎºÐÀÎ "¹ÙÀ̳ʸ® ÆÄÀÏ"À» ÄÄÆÄÀÏÇϱâ À§ÇÑ ÇϳªÀÇ ½ºÅ©¸³Æ®´Ù. MakefileÀº ¼Ò½º ÆÄÀÏÀ» ¸ðµÎ ´Ù½Ã ÄÄÆÄÀÏÇÏÁö ¾Ê°í ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¸¦ °»½ÅÇÏ´Â ¹æ¹ýÀ» Á¦°øÇÒ ¼öµµ ÀÖÁö¸¸, ±×°ÍÀº ¶Ç ´Ù¸¥ À̾߱â(ȤÀº ¶Ç ´Ù¸¥ ±Û)ÀÌ´Ù. ¾î´À ½ÃÁ¡¿¡ MakefileÀº <tt>cc</tt>³ª <tt>gcc</tt>¸¦ ½ÇÇà½ÃŲ´Ù. <tt>cc</tt>³ª <tt>gcc</tt>´Â »ç½ÇÀº ¼ø¼­¿¡ µû¶ó È£ÃâµÈ Àü󸮱â¿Í C(ȤÀº C++) ÄÄÆÄÀÏ·¯, ¸µÄ¿ÀÇ ÁýÇÕÀÌ´Ù. ÀÌ °úÁ¤À» ÅëÇØ ¼Ò½º´Â ½ÇÁ¦·Î ½ÇÇà½Ãų ¼ö ÀÖ´Â ¹ÙÀ̳ʸ®·Î º¯È¯µÈ´Ù. ´ë°³ <bf>make</bf> ¶ó°í Ä¡±â¸¸ Çϸé <em>make</em>¸¦ ½ÃÀÛÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô Çϸé ÀϹÝÀûÀ¸·Î ¼³Ä¡ÇÏ·Á°í ÇÏ´Â ÆÐÅ°Áö¿¡ ÇÊ¿äÇÑ ¸ðµç ½ÇÇà ÆÄÀϵéÀ» ÄÄÆÄÀÏÇÑ´Ù. ÇÏÁö¸¸ make´Â ÆÄÀϵéÀ» Àû´çÇÑ µð·ºÅ͸®¿¡ ¼³Ä¡ÇѴٰųª (<bf>make install</bf>), ¹¬Àº object ÆÄÀÏÀ» »èÁ¦ÇÏ´Â µî(<bf>make clean</bf>), ´Ù¸¥ ÀÛ¾÷µéµµ ÇÒ ¼ö ÀÖ´Ù. <bf>make -n</bf> À̶ó°í Çϸé make¿¡ ÀÇÇØ ¼öÇàµÉ ¸ðµç ¸í·ÉµéÀ» ½ÇÇàÇÏÁö´Â ¾Ê°í º¸¿©Áֱ⸸ ÇϹǷΠÄÄÆÄÀÏ °úÁ¤À» ¹Ì¸® º¼ ¼ö ÀÖ´Ù. ÀϹÝÀûÀÎ MakefileÀ» ¾²´Â °ÍÀº ¸Å¿ì °£´ÜÇÑ ¼ÒÇÁÆ®¿þ¾î »ÓÀÌ´Ù. Á»´õ º¹ÀâÇÑ ¼³Ä¡ °úÁ¤¿¡´Â ¶óÀ̺귯¸®¿Í include ÆÄÀϵéÀÇ À§Ä¡, °³º° ÄÄÇ»ÅÍÀÇ ÀÚ¿ø µî¿¡ µû¶ó MakefileÀ» ¸ÂÃâ ÇÊ¿ä°¡ ÀÖ´Ù. ƯÈ÷ ÄÄÆÄÀÏ¿¡ <tt>X11</tt> ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÒ °æ¿ì°¡ ÀÌ¿¡ ÇØ´çµÈ´Ù. ÀÌ ÀÛ¾÷Àº <em>Imake</em>¿Í <em>xmkmf</em>°¡ ó¸®ÇÑ´Ù. man ÆäÀÌÁö¿¡¼­´Â <tt>Imakefile</tt>Àº MakefileÀÇ "ÅÛÇø´"À̶ó ÇÏ°í ÀÖ´Ù. imake À¯Æ¿¸®Æ¼´Â Imakefile·ÎºÎÅÍ ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ ¸Â´Â MakefileÀ» ±¸¼ºÇÑ´Ù. ÇÏÁö¸¸ ´ëºÎºÐÀÇ °æ¿ì ´ç½ÅÀº imake À¯Æ¿¸®Æ¼ÀÇ ÇÁ·±Æ® ¿£µå(front end)·Î¼­ imake¸¦ ºÒ·¯³»´Â ½© ½ºÅ©¸³Æ®ÀÎ <bf>xmkmf</bf>¸¦ ¼öÇà½Ãų °ÍÀÌ´Ù. ±¸Ã¼ÀûÀÎ Áö½Ã´Â ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¿¡ µé¾îÀÖ´Â README³ª INSTALL ÆÄÀÏÀ» Àо¾Æ¶ó. (Ȥ½Ã ¼Ò½º ÆÄÀϵéÀÇ ¾ÐÃàÀ» Ǭ ´ÙÀ½¿¡ ±âº» µð·ºÅ͸®¿¡ <tt>Imake</tt> ÆÄÀÏÀÌ ÀÖ´Ù¸é, <bf>xmkmf</bf>¸¦ ¼öÇàÇ϶ó´Â ¾ê±â´Ù.) ÀÌ °úÁ¤¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ ºÐ¼®Àº <tt>Imake</tt>¿Í <tt>xmkmf</tt>ÀÇ man ÆäÀÌÁö¸¦ Àо¾Æ¶ó. <tt>xmkmf</tt>¿Í <tt>make</tt>´Â root°¡ ½ÇÇà½ÃÄÑ¾ß ÇÒ ¼öµµ ÀÖ´Ù´Â Á¡¿¡ À¯ÀÇÇ϶ó. ƯÈ÷ ¹ÙÀ̳ʸ® ÆÄÀϵéÀ» <tt>/usr/bin</tt>À̳ª <tt>/usr/local/bin</tt> µð·ºÅ͸®·Î ¿Å±â±â À§Çؼ­ <bf>make install</bf>À» ½ÇÇà½Ãų ¶§ ±×·¸´Ù. rootÀÇ ±ÇÇÑÀÌ ¾ø´Â ÀÏ¹Ý »ç¿ëÀڷμ­ make¸¦ »ç¿ëÇϸé <em>write access denied</em> ¶ó´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ º¸°Ô µÇ±â ½±´Ù. ½Ã½ºÅÛ µð·ºÅ͸®¿¡ ¾²±â Çã°¡±ÇÀ» °®°í ÀÖÁö ¾Ê±â ¶§¹®ÀÌ´Ù. ¸¸µé¾îÁø ¹ÙÀ̳ʸ® ÆÄÀϵéÀÌ ´ç½Å°ú ´Ù¸¥ ÀûÀýÇÑ »ç¿ëÀڵ鿡°Ô ÀûÇÕÇÑ ½ÇÇà Çã°¡±ÇÀ» °®°í ÀÖ´ÂÁöµµ È®ÀÎÇØ¾ß ÇÑ´Ù. <bf>xmkmf</bf>´Â ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ ¸Â´Â »õ·Î¿î MakefileÀ» ¸¸µé±â À§Çؼ­ <tt>Imake</tt> ÆÄÀÏÀ» »ç¿ëÇÑ´Ù. º¸Åë <bf>xmkmf</bf>´Â <bf>-a</bf> ¿É¼Ç°ú ÇÔ²² »ç¿ëÇÑ´Ù. <em>make Makefiles, make includes, make depend</em> ¸¦ ÀÚµ¿ÀûÀ¸·Î ½ÇÇàÇϱâ À§Çؼ­´Ù. ÀÌ·¸°Ô Çϸé ÄÄÆÄÀÏ·¯¿Í ¸µÄ¿¸¦ À§ÇØ º¯¼öµéÀ» ¼³Á¤ÇÏ°í ¶óÀ̺귯¸®ÀÇ À§Ä¡¸¦ Á¤ÀÇÇÑ´Ù. ¶§·Î´Â <tt>Imake</tt> ÆÄÀÏÀÌ ¾ø°í ´ë½Å °°Àº ¿ªÇÒÀ» ÇÏ´Â <tt>INSTALL</tt> À̳ª <tt>configure</tt> ¶ó´Â ½© ½ºÅ©¸³Æ®°¡ ÀÖÀ» ¼öµµ ÀÖ´Ù. <tt>configure</tt>¸¦ ½ÇÇà½ÃÅ°·Á¸é <bf>./configure</bf> ¶ó°í ÇØ¾ß ÇÑ´Ù´Â Á¡¿¡ ÁÖÀÇÇØ¾ß ÇÑ´Ù. ÇöÀç µð·ºÅ͸®ÀÇ Á¤È®ÇÑ <tt>configure</tt> ½ºÅ©¸³Æ®¸¦ È£ÃâÇϱâ À§Çؼ­´Ù. ´ëºÎºÐÀÇ °æ¿ì ¹èÆ÷º»ÀÇ <tt>README</tt> ÆÄÀÏ¿¡ ¼³Ä¡ °úÁ¤¿¡ ´ëÇÑ ¼³¸íÀÌ µé¾î ÀÖ´Ù. º¸Åë <tt>xmkmf</tt>³ª ¼³Ä¡ ½ºÅ©¸³Æ®°¡ ¸¸µé¾î³½ <tt>Makefile</tt> ¼ÓÀ» Á÷Á¢ »ìÆ캸´Â °ÍÀÌ ÁÁ´Ù. ´ë°³ MakefileÀº ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ ÀûÇÕÇÏÁö¸¸, °æ¿ì¿¡ µû¶ó¼­´Â MakefileÀ» º¯°æÇϰųª, ¿¡·¯¸¦ ¼ÕÀ¸·Î ¼öÁ¤ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¼öµµ ÀÖ´Ù. ´ë°³ ·çÆ®·Î¼­ <bf>make install</bf>À» Çϸé, »õ·Î ¸¸µç ¹ÙÀ̳ʸ® ÆÄÀϵéÀ» ÀûÀýÇÑ ½Ã½ºÅÛ µð·ºÅ͸®¿¡ ¼³Ä¡ÇÏ°Ô µÈ´Ù. ¿äÁòÀÇ ¸®´ª½º ¹èÆ÷º»ÀÇ °æ¿ì, ½Ã½ºÅÛ Àüü¿ëÀÇ ¹ÙÀ̳ʸ® ÆÄÀϵéÀº º¸Åë <tt>/usr/bin</tt>, <tt>/usr/X11R6/bin</tt>, <tt>/usr/local/bin</tt>¿¡ ¼³Ä¡µÈ´Ù. ¿ø·¡ ¼³Ä¡Çß´ø ¸®´ª½ºÀÇ ÀϺΰ¡ ¾Æ´Ï±â ¶§¹®¿¡ º°µµÀÇ ¹ÙÀ̳ʸ® ÆÄÀÏ·Î ³²°ÜµÎ±â À§Çؼ­ »õ·Î¿î ÆÐÅ°Áö´Â <tt>/usr/local/bin</tt>¿¡ ¼³Ä¡ÇÏ´Â °ÍÀÌ ÁÁ´Ù. ¿ø·¡ »ó¾÷¿ë UNIX¸¦ À§ÇØ ¸¸µé¾îÁø ÆÐÅ°Áö´Â <tt>/opt</tt>³ª ±âŸ ³¸¼± µð·ºÅ͸®¿¡ ¼³Ä¡µÇµµ·Ï µÇ¾î ÀÖÀ» ¼öµµ ÀÖ´Ù. ÀÌ °æ¿ì, ÁöÁ¤µÈ µð·ºÅ͸®°¡ ¾ø´Ù¸é, ´ç¿¬È÷ ¼³Ä¡ ¿¡·¯ ¸Þ½ÃÁö°¡ ³ª¿À°Ô µÈ´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â °¡Àå °£´ÜÇÑ ¹æ¹ýÀº root ·Î¼­ <tt>/opt</tt> µð·ºÅ͸®¸¦ ¸¸µé¾î¼­ ÆÐÅ°Áö¸¦ ¼³Ä¡ÇÏ°í, ÇØ´ç µð·ºÅ͸®¸¦ <tt>PATH</tt> ȯ°æº¯¼ö¿¡ ³Ö´Â °ÍÀÌ´Ù. ¶Ç´Â <tt>/usr/local/bin</tt> µð·ºÅ͸®·Î ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µé ¼öµµ ÀÖ´Ù. ÀϹÝÀûÀÎ ¼³Ä¡ ¼ø¼­¸¦ Á¤¸®ÇÏ¸é ´ÙÀ½°ú °°´Ù. <itemize> <item><tt>README</tt> ÆÄÀÏ ¹× ±×¹ÛÀÇ °¡´ÉÇÑ ¹®¼­¸¦ Àд´Ù. <item><bf>xmkmf -a</bf>³ª, <tt>INSTALL</tt>, <tt>configure</tt>¸¦ ½ÇÇàÇÑ´Ù. <item><tt>Makefile</tt>À» È®ÀÎÇÑ´Ù. <item>ÇÊ¿äÇϸé, <bf>make clean</bf>, <bf>make Makefiles</bf>, <bf>make includes</bf>, <bf>make depend</bf>¸¦ ½ÇÇàÇÑ´Ù. <item><bf>make</bf>¸¦ ½ÇÇàÇÑ´Ù. <item>ÆÄÀÏÀÇ Çã°¡±ÇÀ» È®ÀÎÇÑ´Ù. <item>ÇÊ¿äÇϸé <bf>make install</bf>¸¦ ½ÇÇàÇÑ´Ù. </itemize> <em>ÁÖÀÇÁ¡:</em> <itemize> <item>º¸Åë ÆÐÅ°ÁöÀÇ ÄÄÆÄÀÏÀº root·Î¼­ ÇÏÁö ¾Ê´Â´Ù. root·Î <bf>su</bf>¸¦ ÇÏ´Â °ÍÀº ÄÄÆÄÀÏµÈ ¹ÙÀ̳ʸ® ÆÄÀϵéÀ» ½Ã½ºÅÛ µð·ºÅ͸®¿¡ ¼³Ä¡ÇÒ ¶§¿¡¸¸ ÇÊ¿äÇÏ´Ù. <item><em>make</em>¿Í ±× »ç¿ë¹ý¿¡ Àͼ÷ÇØÁø ´ÙÀ½¿¡´Â, ¼³Ä¡ÇÏ·Á´Â ÆÐÅ°Áö¿¡ Æ÷ÇÔµÈ È¤Àº »õ·Î ¸¸µé¾îÁø Ç¥ÁØ <tt>Makefile</tt>¿¡ <tt>gcc</tt>¸¦ À§ÇÑ ÃÖÀûÈ­ ¿É¼ÇÀ» Ãß°¡ÇÏ°í ½ÍÀ» ¼öµµ ÀÖ´Ù. ÈçÇÑ ¿É¼ÇÀº <em>-O2</em>, <em>-fomit-frame-pointer</em>, <em>-funroll-loops</em>, (ÆæƼ¾ö cpu¶ó¸é) <em>-mpentium</em> µîÀÌ´Ù. <em>Makefile</em>À» º¯°æÇÒ ¶§¿¡´Â ÁÖÀÇÇØ¾ß ÇÑ´Ù. <item><em>make</em>·Î ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ¸¸µç ´ÙÀ½¿¡´Â <bf>strip</bf>À» ÇÏ°í ½ÍÀ» ¼ö°¡ ÀÖ´Ù. <bf>strip</bf>À̶õ ¹ÙÀ̳ʸ® ÆÄÀÏ¿¡¼­ ½Éº¼¸¯ µð¹ö±ë Á¤º¸¸¦ Á¦°ÅÇؼ­ ±× Å©±â¸¦ »ó´çÈ÷ ÁÙ¿©ÁÖ´Â ¸í·ÉÀÌ´Ù. ¹°·Ð ÀÌ·¸°Ô ÇÏ¸é µð¹ö±ëÀº ºÒ°¡´ÉÇÏ´Ù. <item><url url="http://sunsite.auc.dk/pack/" name="Pack Distribution Project">´Â º°µµÀÇ <em>Ä÷º¼Ç µð·ºÅ͸®</em>¿¡ ¼³Ä¡µÈ ÆÄÀÏµé »çÀÌÀÇ ½Éº¼¸¯ ¸µÅ©¸¦ ó¸®Çϵµ·Ï Python ½ºÅ©¸³Æ®·Î ÀÛ¼ºµÈ µµ±¸µé¿¡ ±â¹ÝÇϴµ¥, ¾ÐÃàµÈ ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¸¦ ¸¸µå´Â ¶Ç´Ù¸¥ ¹æ¹ýÀ» Á¦°øÇÑ´Ù. ÀÌ ¾ÐÃà ÆÐÅ°ÁöµéÀº º¸ÅëÀÇ <em>tarball</em>ÀÌÁö¸¸, <tt>/coll</tt>°ú <tt>/pack</tt> µð·ºÅ͸®¿¡ ¼³Ä¡µÈ´Ù. ÀÌ ¹èÆ÷º»µéÀ» ¾²·Á¸é À§ÀÇ »çÀÌÆ®¿¡¼­ <em>Pack-Collection</em> À» ´Ù¿î¹Þ¾Æ¾ß ÇÑ´Ù. </itemize> <sect>¹Ì¸® ÆÐÅ°ÁöÈ­µÈ ¹ÙÀ̳ʸ® ÆÄÀÏ <p> <sect1>rpms, ¹«¾ùÀÌ À߸øµÇ¾ú³ª? <p> ¼Ò½º·ÎºÎÅÍ ¼öµ¿À¸·Î ÆÐÅ°Áö¸¦ ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÏ´Â °ÍÀº ºÐ¸íÈ÷ ¾î¶² ¸®´ª½º »ç¿ëÀڵ鿡°Ô´Â ¸Å¿ì °Ì³ª´Â ÀÏÀÌ´Ù. ±×·¡¼­ ÀαâÀÖ´Â <em>rpm</em>°ú <em>deb</em> ȤÀº ´õ »õ·Î¿î Stampede <em>slp</em> ÆÐÅ°Áö Æ÷¸ËÀ» »ç¿ëÇÏ°ï ÇÑ´Ù. <em>rpm</em> ¼³Ä¡°¡ º¸ÅëÀº ºÎµå·´°í ºü¸¦ ¼ö ÀÖ´Ù. ¾î´À ¾Ç¸í³ôÀº ¿î¿µ üÁ¦¿¡¼­ ¼ÒÇÁÆ®¿þ¾î¸¦ ¼³Ä¡ÇÏ´Â °Í ¸¸Å­À̳ª ¸»ÀÌ´Ù. ÇÏÁö¸¸ ÀÚµ¿À¸·Î ¼³Ä¡µÇ´Â ¹Ì¸® ÆÐÅ°ÁöÈ­µÈ ¹ÙÀ̳ʸ® ÆÄÀÏÀÇ ¾àÁ¡¿¡ ´ëÇؼ­µµ ºÐ¸íÈ÷ »ý°¢ÇØ º¸¾Æ¾ß ÇÑ´Ù. ù°, ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö°¡ º¸ÅëÀº ¸ÕÀú "tarball"·Î ¹èÆ÷µÇ¸ç, ¹Ì¸® ÆÐÅ°ÁöÈ­µÈ ¹ÙÀ̳ʸ® ÆÄÀÏÀº ¸çÄ¥¿¡¼­ ¸îÁÖ ½ÉÁö¾î´Â ¸î´Þ µÚ´Ê°Ô ³ª¿Â´Ù´Â °ÍÀ» ¾Ë¾Æ¾ß ÇÑ´Ù. ÇöÀçÀÇ <em>rpm</em> ÆÐÅ°Áö´Â ÃÖ½ÅÀÇ "tarball"¿¡ ºñÇØ Àû¾îµµ ¸¶ÀÌ³Ê ¹öÁ¯ 2 Á¤µµ ´Ê´Â °ÍÀÌ ÀϹÝÀûÀÌ´Ù. µû¶ó¼­ ¼ÒÇÁÆ®¿þ¾îÀÇ Ã·´ÜÀ» µû¶ó°¡°í ½ÍÀº »ç¶÷À̶ó¸é, <em>rpm</em>À̳ª <em>deb</em>°¡ ³ª¿À±â¸¦ ±â´Ù¸± ¼ö ¾øÀ» °ÍÀÌ´Ù. ´ú ÀαâÀÖ´Â ÆÐÅ°Áö¶ó¸é ¾Æ¿¹ <em>rpm</em>À¸·Î ¸¸µé¾îÁöÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù. µÑ°, "tarball" ÆÐÅ°Áö°¡ º¸´Ù ¿ÏÀüÇϸç, ´õ ¸¹Àº ¿É¼ÇÀ» °¡Áö°í ÀÖ°í, ´õ ÃÖÀûÈ­½ÃÅ°±â ½±´Ù. ¹ÙÀ̳ʸ® ÆÄÀÏÀÇ rpm ¹èÆ÷º»Àº ¿ø·¡ ¹èÆ÷º»ÀÇ ±â´É °¡¿îµ¥ ÀϺθ¦ °¡Áö°í ÀÖÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù. ¼Ò½º <em>rpm</em>Àº Àüü ¼Ò½º Äڵ带 Æ÷ÇÔÇÏ°í ÀÖÀ¸¸ç, <bf>rpm --recompile ÆÐÅ°ÁöÀ̸§.rpm</bf> À̳ª <bf>rpm --rebuild ÆÐÅ°ÁöÀ̸§.rpm</bf> ¿É¼ÇÀ¸·Î ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÏ¿©¾ß ÇÑ´Ù. ¼Â°, ¾î¶² ¹Ì¸® ÆÐÅ°ÁöÈ­µÈ ¹ÙÀ̳ʸ® ÆÄÀϵéÀº Á¦´ë·Î ¼³Ä¡µÇÁö ¾ÊÀ¸¸ç, ¼³Ä¡°¡ µÇ¾ú´Ù°í Çصµ Á¤»óÀûÀ¸·Î Á¾·áµÇÁö ¸øÇÏ°í core-dump¸¦ ³¾ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº ÀÇÁ¸ÇÏ°í ÀÖ´Â ¶óÀ̺귯¸®ÀÇ ¹öÁ¯ÀÌ ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ ÀÖ´Â °Í°ú ´Ù¸£±â ¶§¹®ÀÏ ¼öµµ ÀÖ°í, Á¦´ë·Î ÆÐÅ°ÁöÈ­µÇÁö ¾Ê¾ÒÀ» ¼öµµ ÀÖÀ¸¸ç, ȤÀº ±×Àú ½ÇÇà¿¡ ½ÇÆÐÇÑ °Í(plain broken)ÀÏ ¼öµµ ÀÖ´Ù. ¾î¶² °æ¿ì°Ç, <em>rpm</em>À̳ª <em>deb</em>¸¦ ¼³Ä¡Çß´Ù¸é, ´ç½ÅÀº ±× <em>rpm</em>À̳ª <em>deb</em> ÆÐÅ°Áö¸¦ ¸¸µç »ç¶÷ÀÇ ¼÷·Ãµµ¸¦ ¹Ï¾î¾ß¸¸ ÇÑ´Ù. ³¡À¸·Î, ¼Ò½º¸¦ ¸¸Áö°í ±×°ÍÀ¸·ÎºÎÅÍ ¹è¿ì±â À§Çؼ­´Â, ¼Ò½º Äڵ带 ¼Õ À§¿¡ °®°í ÀÖ´Â ÆíÀÌ ÁÁ´Ù. ¼Ò½º Äڵ带 ¾ÐÃà ÆÄÀÏ·Î °®°í ÀÖ´Â ÆíÀÌ º°µµÀÇ ¼Ò½º <em>rpm</em>À¸·Î °®°í ÀÖ´Â Æí¿¡ ºñÇØ ÈξÀ ´õ ¼ö¿ùÇÏ´Ù. <em>rpm</em> ÆÐÅ°Áö¸¦ ¼³Ä¡ÇÏ´Â °ÍÀÌ ²À ¾Æ¹« »ý°¢¾øÀÌ °¡´ÉÇÑ °ÍÀº ¾Æ´Ï´Ù. ÀÇÁ¸¼º¿¡ ¹®Á¦°¡ ÀÖÀ¸¸é <em>rpm</em> ¼³Ä¡´Â ½ÇÆÐÇÒ °ÍÀÌ´Ù. ºñ½ÁÇÑ °æ¿ì·Î, <em>rpm</em>ÀÌ ´ç½Å ½Ã½ºÅÛ¿¡ ÀÖ´Â °Í°ú ´Ù¸¥ ¹öÁ¯ÀÇ ¶óÀ̺귯¸®¸¦ ¿ä±¸ÇÑ´Ù¸é, ¼³Ä¡´Â Á¦´ë·Î µÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ´ç½ÅÀÌ Áö±Ý ÀÖ´Â ¶óÀ̺귯¸®¿¡¼­ ¾ø´Â ¶óÀ̺귯¸®·ÎÀÇ ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µé¾îÁØ´Ù Çصµ ¸»ÀÌ´Ù. <em>rpm</em> ¼³Ä¡°¡ Æí¸®Çϱâ´Â ÇÏÁö¸¸, "tarball" ¼³Ä¡°¡ ½ÇÆÐÇÏ´Â °Í°ú °°Àº ÀÌÀ¯·Î ½ÇÆÐÇÏ´Â °æ¿ì°¡ ÀÚÁÖ ÀÖ´Ù. ´ç½ÅÀº ÇÊ¿äÇÑ ¾²±â Çã°¡±ÇÀ» °®±â À§Çؼ­ <em>rpm</em>°ú <em>deb</em>ÀÇ ¼³Ä¡¸¦ root·Î¼­ Çؾ߸¸ Çϴµ¥, ÀÌ°ÍÀº ½É°¢ÇÑ ÀáÀçÀû º¸¾È ¹®Á¦¸¦ ¾ß±âÇÑ´Ù. ´ç½ÅÀÌ »ý°¢¾øÀÌ ½Ã½ºÅÛÀÇ ¹ÙÀ̳ʸ® ÆÄÀÏ°ú ¶óÀ̺귯¸®µéÀ» ¸ÁÃĹö¸®°Å³ª, ½ÉÁö¾î ´ç½Å ½Ã½ºÅÛÀ» Æı«ÇÒ <em>Æ®·ÎÀÌ ¸ñ¸¶</em>¸¦ ¼³Ä¡ÇÒ ¼öµµ Àֱ⠶§¹®ÀÌ´Ù. µû¶ó¼­ <em>rpm</em>°ú deb ÆÐÅ°Áö¸¦ "¹ÏÀ» ¼ö ÀÖ´Â ÀÚ·á¿ø"À¸·ÎºÎÅÍ ¾ò´Â °ÍÀÌ Áß¿äÇÏ´Ù. ¾î¶² °æ¿ì¿¡³ª ´ç½ÅÀº <em>rpm</em> ÆÐÅ°Áö¸¦ ¼³Ä¡Çϱâ Àü¿¡, <bf>rpm --cecksig ÆÐÅ°ÁöÀ̸§.rpm</bf> ¸í·ÉÀ¸·Î (MD5 checksum°ú ´ëÁ¶ÇÏ¿©) '¼­¸í È®ÀÎ'À» Çؾ߸¸ ÇÑ´Ù. ¸¶Âù°¡Áö·Î <bf>rpm -K --nopgp ÆÐÅ°ÁöÀ̸§.rpm</bf>À» ¼öÇàÇÒ °ÍÀ» °­·ÂÇÏ°Ô ±ÇÇÑ´Ù. <em>deb</em> ÆÐÅ°Áö¿¡¼­ ÀÌ¿¡ ÇØ´çÇÏ´Â ¸í·ÉÀº <bf>dpkg -I | --info ÆÐÅ°ÁöÀ̸§.deb</bf> ¿Í <bf>dpkg -e | --control ÆÐÅ°ÁöÀ̸§.deb</bf> ÀÌ´Ù. <itemize> <item><tt>rpm --checksig gnucash-1.1.23-4.i386.rpm</tt> <tscreen><verb> </verb></tscreen> <tt>gnucash-1.1.23-4.i386.rpm: size md5 OK</tt> </itemize> <itemize> <item><tt>rpm -K --nopgp gnucash-1.1.23-4.i386.rpm</tt> <tscreen><verb> </verb></tscreen> <tt>gnucash-1.1.23-4.i386.rpm: size md5 OK</tt> </itemize> ÁøÂ¥ ÆíÁýÁõ ȯÀÚ(ÀÌ Á¤µµ¶ó¸é ÆíÁý±¤À̶ó°í ºÎ¸£´Â °æ¿ì°¡ ´õ ¸¹´Ù)¶ó¸é, ÆÐÅ°Áö¸¦ Ç®¾î¼­ ±× ±¸¼º¿ä¼Ò¸¦ È®ÀÎÇϱâÀ§ÇÑ <em>unrpm</em>°ú <em>rpmunpack</em> À¯Æ¿¸®Æ¼¸¦ <htmlurl url="ftp://metalab.unc.edu/pub/Linux/utils/package" name="Sunsite utils/package directory">ÀÇ utils/package µð·ºÅ͸®¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù. <url url="mailto:klee@debian.org" name="Klee Diene">Àº ¼³Ä¡µÈ <em>.deb</em> ÆÄÀÏ¿¡ ¹®Á¦°¡ ÀÖ´ÂÁö MD5 checksum°ú ºñ±³ÇÏ¿© È®ÀÎÇÏ´Â <em>dpkgcert</em>¶ó´Â ½ÇÇèÀûÀÎ ÆÐÅ°Áö¸¦ ÀÛ¼ºÇß´Ù. <htmlurl url="ftp://ftp.debian.org/pub/debian/project/experimental" name="Debian ftp archive">¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù. ÇöÀçÀÇ ÆÐÅ°Áö À̸§ ¹× ¹öÁ¯Àº <em>dpkgcert_0.2-4.1_all.deb</em> ÀÌ´Ù. <htmlurl="http://dpkgcert.jimpick.com" name="Jim Pick Software">»çÀÌÆ®´Â <em>dpkgcert</em>°¡ ÀüÇüÀûÀÎ µ¥ºñ¾È ½Ã½ºÅÛ ³»ÀÇ ÆÐÅ°ÁöµéÀ» °ËÁõÇϵµ·Ï ÇÏ´Â ½ÇÇèÀûÀÎ ¼­¹ö µ¥ÀÌÅͺ£À̽º¸¦ ¿î¿µÇÏ°í ÀÖ´Ù. °¡Àå ´Ü¼øÇÏ°Ô´Â, <bf>rpm -i ÆÐÅ°ÁöÀ̸§.rpm</bf> °ú <bf>dpkg --install ÆÐÅ°ÁöÀ̸§.deb</bf> ¸í·ÉÀ¸·Î ÀÚµ¿ÀûÀ¸·Î ¼ÒÇÁÆ®¿þ¾î¸¦ Ç®¾î¼­ ¼³Ä¡ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ÀÌ ¸í·ÉÀ» ¸Í¸ñÀûÀ¸·Î ¾²¸é ´ç½Å ½Ã½ºÅÛÀ» ÇØÄ¥ ¼öµµ ÀÖÀ¸¹Ç·Î ÁÖÀÇÇØ¾ß ÇÑ´Ù. À§ÀÇ °æ°í´Â Á¤µµ´Â ´ú ÇÏÁö¸¸ ½½·¢¿þ¾îÀÇ <em>pkgtool</em> ¼³Ä¡ À¯Æ¿¸®Æ¼¿¡µµ ¿ª½Ã Àû¿ëµÈ´Ù. ¸ðµç "ÀÚµ¿È­µÈ" ¼ÒÇÁÆ®¿þ¾î ¼³Ä¡´Â ÁÖÀǸ¦ ¿äÇÏ´Â °ÍÀÌ´Ù. <url url="http://www.people.cornell.edu/pages/rc42/program/martian.html" name="martian">¿Í <url url="http://kitenet.net/programs/alien/" name ="alien"> ÇÁ·Î±×·¥Àº <em>rpm</em>, <em>deb</em>, StampedeÀÇ <em>slp</em>, <em>tar.gz</em> ÆÐÅ°Áö Çü½ÄÀ» ¼­·Î º¯È¯ÇØÁØ´Ù. ÀÌ ÇÁ·Î±×·¥µéÀ» ¾²¸é ÀÌ ÆÐÅ°ÁöµéÀ» ¸ðµç ¸®´ª½º ¹èÆ÷º»¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸°¡ ÇÊ¿äÇϸé <em>rpm</em>°ú <em>dpkg</em> ¸í·ÉÀÇ man ÆäÀÌÁö¸¦ ÁÖÀÇÇؼ­ Àаí, <htmlurl url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/RPM-HOWTO" name="RPM HOWTO">¿Í TFUGÀÇ <url url="http://www.tfug.org/helpdesk/linux/rpm.html" name="Quick Guide to Red Hat's Package Manager">, <url url="http://www.debian.org/doc/FAQ/debian-faq-7.html" name="The Debian Package Management Tools">¸¦ ÂüÁ¶Ç϶ó. <sect1>rpmsÀÇ ¹®Á¦: ÇÑ °¡Áö ¿¹ <p> <url url="mailto:hubicka@paru.cas.cz" name="Jan Hubicka">´Â <em>xaos</em>¶ó´Â ¸Å¿ì ÈǸ¢ÇÑ ÇÁ·¢Å» ÆÐÅ°Áö¸¦ ¸¸µé¾ú´Ù. <url url="http://www.paru.cas.cz/~hubicka/XaoS" name="±×ÀÇ È¨ÆäÀÌÁö">¿¡¼­ <tt>.tar.gz</tt>°ú <tt>rpm</tt>·Î µÈ ÆÐÅ°ÁöµéÀ» ±¸ÇÒ ¼ö ÀÖ´Ù. ÆíÀǸ¦ À§Çؼ­ "tarball" º¸´Ù´Â rpm ¹öÁ¯À» »ç¿ëÇϱâ·Î ÇÏÀÚ. ºÒÇàÇÏ°Ôµµ rpm ¹öÁ¯ÀÇ <em>xaos</em>¸¦ ¼³Ä¡Çϴµ¥ ½ÇÆÐÇß´Ù. µÎ º°°³ÀÇ rpm ÆÇÀÌ ¸ðµÎ Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê¾Ò´Ù. <bf>rpm -i --test XaoS-3.0-1.i386.rpm</bf> <tscreen><verb> error: failed dependencies: libslang.so.0 is needed by XaoS-3.0-1 libpng.so.0 is needed by XaoS-3.0-1 libaa.so.1 is needed by XaoS-3.0-1 </verb></tscreen> <bf>rpm -i --test xaos-3.0-8.i386.rpm</bf> <tscreen><verb> error: failed dependencies: libaa.so.1 is needed by xaos-3.0-8 </verb></tscreen> ÀÌ»óÇÑ °ÍÀº <tt>libslang.so.0</tt>, <tt>libpng.so.0</tt>, <tt>libaa.so.1</tt>ÀÌ ¸ðµÎ ½ÃÇèµÈ ½Ã½ºÅÛÀÇ <tt>/usr/lib</tt> µð·ºÅ͸®¿¡ ÀÖ¾ú´Ù´Â °ÍÀÌ´Ù. <em>xaos</em>ÀÇ rpmµéÀº ¸±¸®Áî ¹øÈ£´Â °°¾Æµµ Á¶±Ý ´Ù¸¥ ¹öÁ¯ÀÇ ¶óÀ̺귯¸®¸¦ ¾²µµ·Ï ÄÄÆÄÀϵǾúÀ½ÀÌ Æ²¸²¾ø´Ù. ½ÃÇè»ï¾Æ <tt>xaos-3.0-8.i386.rpm</tt>À» <em>--nodeps</em> ¿É¼ÇÀ» ÁÖ¾î °­Á¦·Î ¼³Ä¡ÇØ º¸ÀÚ. <em>xaos</em>¸¦ ½ÇÇà½ÃÄÑ º¸Áö¸¸, ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù. <tscreen><verb> xaos: error in loading shared libraries: xaos: undefined symbol: __fabsl </verb></tscreen> ¿Ö ÀÌ·¸°Ô µÇ´ÂÁö ¾Ë¾Æº¸±â À§ÇØ, °è¼Ó ½ÃµµÇØ º¸±â·Î ÇÏÀÚ. <em>xaos</em> ½ÇÇàÆÄÀÏÀÌ ¾î¶² ¶óÀ̺귯¸®¿¡ ÀÇÁ¸ÇÏ°í ÀÖ´ÂÁö ã¾Æº¸±â À§ÇØ <em>ldd</em>¸¦ ½ÇÇà½ÃÄÑ º¸¸é, ÇÊ¿äÇÑ °øÀ¯ ¶óÀ̺귯¸®°¡ ¸ðµÎ ÀÖ´Ù´Â °ÍÀ» º¸¿©ÁØ´Ù. <tt>/usr/lib/libaa.so.1</tt> ¶óÀ̺귯¸®¿¡ <em>nm</em>À» ½ÇÇàÇؼ­ ±× ½Éº¼¸¯ ·¹ÆÛ·±½º ¸ñ·ÏÀ» º¸¸é, ÀÌ ¶óÀ̺귯¸®¿¡´Â Á¤¸» <em>__fabsl</em>ÀÌ ºüÁ®ÀÖ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ¹°·Ð ÀÌ ºüÁ®ÀÖ´Â ·¹ÆÛ·±½º´Â ´Ù¸¥ ¶óÀ̺귯¸®¿¡¼­ ºüÁø °ÍÀÏ <em>¼öµµ</em> ÀÖÁö¸¸... ¶óÀ̺귯¸®¸¦ ¹Ù²ÙÁö ¾Ê´Â ÇÑ, ´õ ÀÌ»ó ¾î¿ ¼ö°¡ ¾ø´Ù. rpmÀº ÀÌÁ¤µµ·Î ÃæºÐÇÏ´Ù. ÀÌÁ¦ "tarball" Áï <tt>XaoS-3.0.tar.gz</tt>À» Ȩ ÆäÀÌÁö³ª <url url="ftp://ftp.ta.jcu.cz/pub/linux/hubicka/XaoS/3.0" name="ftp »çÀÌÆ®">¿¡¼­ ´Ù¿î¹Þ´Â´Ù. ÀÌ ÆÐÅ°Áö¸¦ ÄÄÆÄÀÏÇغ¸±â·Î ÇÏÀÚ. <bf>./configure</bf>, <bf>make</bf>¸¦ ½ÇÇà½ÃÅ°°í, ¸¶Áö¸·À¸·Î (·çÆ®·Î¼­) <bf>make install</bf>À» ½ÇÇàÇÑ´Ù. ¹®Á¦¾øÀÌ ÀÛµ¿ÇÑ´Ù. ÀÌ°ÍÀº ¹Ì¸® ÄÄÆÄÀÏµÈ ÆÐÅ°Áö°¡ ±× ÀåÁ¡ º¸´Ù ´õ ¸¹Àº ¹®Á¦¸¦ ÀÏÀ¸Å°´Â ¸¹Àº ¿¹ ÁßÀÇ ÇϳªÀÏ »ÓÀÌ´Ù. <sect>Termcap °ú Terminfo¿¡ °ü·ÃµÈ À̽´ <p> man ÆäÀÌÁö¿¡ ÀÇÇϸé, <em>"terminfo´Â ½ºÅ©¸° ÁöÇâÀûÀÎ ÇÁ·Î±×·¥µé¿¡ ÀÇÇØ ÀÌ¿ëµÇ´Â, Å͹̳ÎÀ» ±â¼úÇÑ µ¥ÀÌÅÍ º£À̽º"</em>ÀÌ´Ù. terminfo´Â ÅؽºÆ®¸¦ Å͹̳ο¡ Ç¥½ÃÇϱâ À§ÇØ »ç¿ëµÇ´Â Á¦¾î ½ÃÄö½º (escape code)ÀÇ ÀϹÝÀûÀÎ ÁýÇÕÀ» Á¤ÀÇÇϸç, ƯÁ¤ÇÑ µå¶óÀ̹ö ÇÊ¿ä¾øÀÌ ¼­·Î ´Ù¸¥ Å͹̳ΠÇϵå¿þ¾î¸¦ Áö¿øÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. <em>terminfo</em> ¶óÀ̺귯¸®´Â ÇöÀçÀÇ ¸®´ª½º ¹èÆ÷º»¿¡¼­ <tt>/usr/share/terminfo</tt> ¿¡ À§Ä¡ÇÑ´Ù. <em>terminfo</em> µ¥À̹ö º£À̽º´Â ÀÌÀüÀÇ <em>termcap</em>°ú ÀÌÁ¨ Æó¹°ÀÌ µÈ <em>termlib</em>À» °ÅÀÇ ¹Ð¾î³Â´Ù. <em>termcap</em>À» ¿ä±¸ÇÏ´Â ÆÐÅ°Áö¸¦ ´Ù·ê ¶§¸¦ Á¦¿ÜÇÏ°í´Â, ÇÁ·Î±×·¥À» ¼³Ä¡Çϴµ¥ ÀÌ ¹®Á¦±îÁö ½Å°æ¾µ ÇÊ¿ä°¡ ¾ø´Ù. ÀÌÁ¦ ´ëºÎºÐÀÇ ¸®´ª½º ¹èÆ÷º»ÀÌ <em>terminfo</em>¸¦ »ç¿ëÇÏ°í ÀÖÁö¸¸, ¿À·¡µÈ ÀÀ¿ë ÇÁ·Î±×·¥µé°úÀÇ È£È¯¼ºÀ» À§ÇØ ¿À·¡µÈ termcap ¶óÀ̺귯¸®¸¦ À¯ÁöÇÏ°í ÀÖ´Ù. (<tt>/etc/termcapÀ» º¸¶ó.</tt>) °¡²û termcap¿¡ ¸µÅ©µÈ ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ½±°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ ¼³Ä¡µÇ¾î¾ß Çϴ Ưº°ÇÑ È£È¯¼º ÆÐÅ°Áö°¡ ÀÖ´Ù. ¸Å¿ì µå¹°°Ô´Â ¼Ò½º ÆÄÀÏ¿¡¼­ <em>#define termcap</em> À̶ó´Â ¹®ÀåÀ» ÁÖ¼®¹® ó¸®ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¼öµµ ÀÖ´Ù. ÀÌ¿¡ ´ëÇÑ ÃÖÁ¾ÀûÀÎ Á¤º¸´Â ´ç½ÅÀÌ »ç¿ëÇÏ´Â ¹èÆ÷º»ÀÇ ÀûÀýÇÑ ¹®¼­ ÆÄÀÏ¿¡¼­ È®ÀÎÇϵµ·Ï Ç϶ó. <sect>a.out ¹ÙÀ̳ʸ® ÆÄÀÏ°úÀÇ È£È¯¼º <p> ¸Å¿ì µå¹® °æ¿ìÀÌÁö¸¸, a.out ¹ÙÀ̳ʸ® ÆÄÀÏÀ» »ç¿ëÇؾ߸¸ ÇÒ ¼öµµ ÀÖ´Ù. ¼Ò½º Äڵ带 ¾òÀ» ¼ö ¾ø´Ù°Å³ª, ¾î¶² ÀÌÀ¯¿¡¼­µç ¼Ò½º·ÎºÎÅÍ »õ·Î¿î ELF ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø±â ¶§¹®ÀÌ´Ù. ÀÌ·² ¶§, ELF·Î ¼³Ä¡µÈ ¸®´ª½º ½Ã½ºÅÛÀº ´ë°³ <tt>/usr/i486-linuxaout/lib</tt> µð·ºÅ͸®¿¡ ¿Ïº®ÇÑ a.out ¶óÀ̺귯¸®µéÀ» °¡Áö°í ÀÖ´Ù. a.out ¶óÀ̺귯¸®´Â ELF ¶óÀ̺귯¸®¿ÍÀÇ È¥¶õÀ» ÇÇÇϱâ À§ÇØ ELF¿Í ´Ù¸£°Ô ¹öÁ¯À» ºÙÀδÙ. µû¶ó¼­ a.out ¹ÙÀ̳ʸ® ÆÄÀÏÀº ½ÇÇàµÉ ¶§ ¿Ã¹Ù¸¥ ¶óÀ̺귯¸®¸¦ ãÀ» ¼ö ÀÖ¾î¾ß ÇÏÁö¸¸, Ç×»ó ÀÌ·¸°Ô µÇÁö´Â ¾Ê´Â´Ù. Ä¿³ÎÀÌ a.out Áö¿ø ±â´ÉÀ» ÀÚü ³»¿¡³ª ¸ðµâ·Î¼­ °®µµ·Ï ÄÄÆÄÀϵǾú¾î¾ß ÇÑ´Ù´Â °Í¿¡ ÁÖÀÇÇ϶ó. ÇÊ¿äÇϸé Ä¿³ÎÀ» ´Ù½Ã ÄÄÆÄÀÏÇÒ ¼öµµ ÀÖ´Ù. ¾î¶² ¸®´ª½º ¹èÆ÷º»Àº Ưº°ÇÑ È£È¯¿ë À¯Æ¿¸®Æ¼¸¦ ¼³Ä¡ÇØ¾ß Çϱ⵵ ÇÑ´Ù. ¿¹¸¦ µé¾î a.outÀÇ X ÀÀ¿ë ÇÁ·Î±×·¥À» À§Çؼ­, µ¥ºñ¾È¿¡¼­´Â <tt>xcompat</tt>¸¦ ¼³Ä¡ÇØ¾ß ÇÑ´Ù. <sect1>¿¹ <p> Jerry Smith´Â ¸î ³â Àü¿¡ <em>rolodex</em>¶ó´Â ¸Å¿ì Æí¸®ÇÑ ÇÁ·Î±×·¥À» ®´Ù. ÀÌ ÇÁ·Î±×·¥Àº Motif ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏÁö¸¸, ´ÙÇàÈ÷µµ Á¤ÀûÀ¸·Î ¸µÅ©µÈ a.out Çü½ÄÀÇ ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ±¸ÇÒ ¼ö ÀÖ´Ù. ºÒÇàÇÑ °ÍÀº <em>lesstif</em> ¶óÀ̺귯¸®¸¦ ½á¼­ ´Ù½Ã ÄÄÆÄÀÏ ÇÏ·Á¸é ¼Ò½º¸¦ ¼ö¾øÀÌ ¶â¾î°íÃÄ¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. ´õ Å« ºÒÇàÀº a.outÀÌ ¾î¶² ELF ½Ã½ºÅÛ¿¡¼­´Â ´ÙÀ½°ú °°Àº ¿¡·¯ ¸Þ½ÃÁö¸¦ ÅͶ߸°´Ù´Â °ÍÀÌ´Ù. <tscreen><verb> xrolodex: can't load library '//lib/libX11.so.3' No such library </verb></tscreen> ÀÌ ¶§, <tt>/usr/i486-linuxaout/lib</tt>¿¡´Â ±×·± ¶óÀ̺귯¸®°¡ ÀÖÁö¸¸ xrolodex´Â ±× ¶óÀ̺귯¸®¸¦ ½ÇÇà Áß¿¡ ãÁö ¸øÇÑ °ÍÀÌ´Ù. °£´ÜÇÑ ÇØ°áÃ¥Àº <tt>/lib</tt> ¶óÀ̺귯¸®¿¡ ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µé¾îÁÖ´Â °ÍÀÌ´Ù. <tt>ln -s /usr/i486-linuxaout/lib/X11.so.3.1.0 libX11.so.3</tt> libXt.so.3°ú libc.so.4 ¶óÀ̺귯¸®µµ ºñ½ÁÇÑ ¸µÅ©¸¦ ¸¸µé¾îÁÖ¾î¾ß ÇÑ´Ù. ¹°·Ð ÀÌ·± ÀϵéÀº root·Î¼­ ÇØ¾ß ÇÑ´Ù. À̶§ ÀÌ¹Ì ÀÖ´Â ¶óÀ̺귯¸®¸¦ µ¤¾î¾²°Å³ª ¹öÁ¯ ¹øÈ£¿¡ Ãæµ¹À» ÀÏÀ¸Å°´Â °ÍÀÌ ¾Æ´ÑÁö ¾ÆÁÖ È®½ÇÈ÷ ÇØ¾ß ÇÑ´Ù´Â Á¡À» ¸í½ÉÇ϶ó. ´ÙÇàÈ÷µµ »õ·Î¿î ELF ¶óÀ̺귯¸®´Â ÀÌ·± ¹®Á¦¸¦ ¿¹»óÇÏ°í ¹Ì¸® a.out ¶óÀ̺귯¸® º¸´Ù ³ôÀº ¹öÁ¯ ¹øÈ£¸¦ °¡Áö°í ÀÖ´Ù. À§ÀÇ ¼¼ ¸µÅ©¸¦ ¸¸µé¾îÁÖ°í ³ª¸é, <em>xrolodex</em>´Â Àß ½ÇÇàµÈ´Ù. <em>xrolodex</em> ÆÐÅ°Áö´Â ¿ø·¡ <url url="http://www.spectro.com/" name="Spectro">¿¡ ¿Ã·ÁÁ³Áö¸¸, ±×°÷¿¡¼­´Â Áö¿öÁø °Í °°´Ù. Áö±ÝÀº <url url="http://metalab.unc.edu/pub/Linux/apps/reminder/xrolodex.tar.z" name="Sunsite">¿¡¼­ <em>tar.Z</em> Çü½ÄÀÇ ¼Ò½º ÆÄÀÏ[512k]·Î ´Ù¿î¹ÞÀ» ¼ö ÀÖ´Ù. <sect>¹®Á¦ÇØ°á <p> ¿¡·¯ ¾øÀÌ <em>xmkmf</em>¿Í <em>make</em>¿¡ ¼º°øÇß´Ù¸é, <ref id="finalsteps" name="´ÙÀ½ Àý">·Î ³Ñ¾î°¡µµ ÁÁ´Ù. ÇÏÁö¸¸ "½ÇÁ¦ »ýÈ°"¿¡¼­´Â ù¹ø¿¡ Á¦´ë·Î µÇ´Â ÀÏÀº °ÅÀÇ ¾ø´Ù. À̶§°¡ ´ç½ÅÀÇ ÀçÄ¡¸¦ ½ÃÇèÇÒ ¶§´Ù. <sect1>¸µÅ© ¿¡·¯ <p> <itemize> <item>xmkmf¸¦ ½ÇÇàÇßÀ½¿¡µµ <em>make</em>°¡ ´ÙÀ½°ú °°Àº ¸Þ½ÃÁö¸¦ ³»°í ½ÇÆÐÇß´Ù°í °¡Á¤ÇÏÀÚ. <tt>Ling error: -lX11: No such file or directory</tt> ÀÌ °æ¿ì <em>Imake</em> ÆÄÀÏÀÌ Á¦´ë·Î ¼³Á¤µÇÁö ¾Ê¾ÒÀ» °¡´É¼ºÀÌ Å©´Ù. <em>Makefile</em>ÀÇ Ã¹ºÎºÐ¿¡ ÀÖ´Â ´ÙÀ½°ú °°Àº ÁÙµéÀ» È®ÀÎÇØ º¸¶ó. <tscreen><verb> LIB= -L/usr/X11/lib INCLUDE= -I/usr/X11/include/X11 LIBS= -lX11 -lc -lm </verb></tscreen> <tt>-L</tt>°ú <tt>-I</tt> ½ºÀ§Ä¡´Â °¢°¢ ÄÄÆÄÀÏ·¯¿Í ¸µÄ¿¿¡°Ô <em>¶óÀ̺귯¸®</em>¿Í <em>include</em> ÆÄÀϵéÀ» ¾îµð¿¡¼­ ã¾Æ¾ß ÇÏ´ÂÁö ¾Ë·ÁÁÖ´Â °ÍÀÌ´Ù. ÀÌ ¿¹¿¡¼­´Â <em>X11 ¶óÀ̺귯¸®</em>´Â <tt>/usr/X11/lib</tt> µð·ºÅ͸®¿¡, <em>X11ÀÇ include ÆÄÀÏ</em>µéÀº <tt>/usr/X11/include/X11</tt> µð·ºÅ͸®¿¡ ÀÖ¾î¾ß ÇÑ´Ù. ´ç½ÅÀÇ ÄÄÇ»ÅÍ´Â ÀÌ¿Í ´Ù¸£´Ù¸é, <em>Makefile</em>¿¡ ÇÊ¿äÇÑ ¼öÁ¤À» °¡ÇÏ°í, <em>make</em>¸¦ ´Ù½Ã ÇØ º¸µµ·Ï Ç϶ó. </itemize> <itemize> <item>´ÙÀ½°ú °°ÀÌ ¼öÇÐ ¶óÀ̺귯¸® ÇÔ¼ö¿¡ ´ëÇÑ Á¤ÀǵÇÁö ¾ÊÀº ÂüÁ¶(undefined reference)°¡ ÀÖÀ» °æ¿ì: <tscreen><verb> /tmp/cca011551.o(.text+0x11): undefined reference to `cos' </verb></tscreen> ÀÌ ¹®Á¦¿¡ ´ëÇÑ ÇعýÀº <tt>Makefile</tt> ³»ÀÇ <em>LIB</em>À̳ª <em>LIBS</em> ºÎºÐ(À§ÀÇ ¿¹¸¦ º¸¶ó)¿¡ <bf>-lm</bf> À» ´õÇÔÀ¸·Î½á <tt>¼öÇÐ ¶óÀ̺귯¸®</tt>¸¦ ¸í½ÃÀûÀ¸·Î ¸µÅ©ÇÏ´Â °ÍÀÌ´Ù. </itemize> <itemize> <item><em>xmkmf</em>°¡ ½ÇÆÐÇßÀ» ¶§ ÇØ º¼ ¼ö ÀÖ´Â ¶Ç´Ù¸¥ °ÍÀº ´ÙÀ½ÀÇ ½ºÅ©¸³Æ®´Ù. <tscreen><verb> make -DUseInstalled -I/usr/X386/lib/X11/config </verb></tscreen> ÀÌ°ÍÀº <em>xmkmf</em>¿Í µ¿µîÇÑ Àú¼öÁØ ¸í·É(bare bone)ÀÇ ÀÏÁ¾ÀÌ´Ù. </itemize> <itemize> <item>¸Å¿ì µå¹® °æ¿ìÁö¸¸, <em>root</em>·Î¼­ <em>ldconfig</em>¸¦ ½ÇÇà½ÃÅ°´Â °ÍÀÌ ÇعýÀÌ µÉ ¼öµµ ÀÖ´Ù. <tscreen><verb> </verb></tscreen> <bf># ldconfig</bf> ´Â °øÀ¯ ¶óÀ̺귯¸®ÀÇ ½Éº¼¸¯ ¸µÅ©¸¦ °»½ÅÇÑ´Ù. <em>ÀÌ°ÍÀº ¹Ýµå½Ã ÇÊ¿äÇÑ °ÍÀº ¾Æ´Ò ¼öµµ ÀÖ´Ù.</em> </itemize> <itemize> <item>¾î¶² <tt>Makefile</tt>Àº ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ ÀÖ´Â ¶óÀ̺귯¸®¿¡ ´ëÇØ ÀνĵÇÁö ¾ÊÀº(unrecognized) º°¸í(alias)¸¦ »ç¿ëÇϱ⵵ ÇÑ´Ù. ¿¹¸¦ µé¾î, ÄÄÆÄÀÏÀº <tt>libX11.so.6</tt>À» ¿ä±¸ÇÏÁö¸¸ <tt>/usr/X11R6/lib</tt>¿¡´Â ±×·± ÆÄÀÏÀ̳ª ¸µÅ©°¡ ¾øÀ» ¼ö ÀÖ´Ù. ÇÏÁö¸¸ <tt>libX11.so.6.1</tt>Àº ÀÖ´Ù. ÇØ°áÃ¥Àº root·Î¼­ <bf>ln -s /usr/X11R6/lib/libX11.so.6.1 /usr/X11R6/lib/libX11.so.6</bf> À» ÇÏ´Â °ÍÀÌ´Ù. ÀÌ ´ÙÀ½¿¡´Â <bf>ldconfig</bf>¸¦ ½ÇÇà½ÃÄÑ¾ß ÇÒ ¼öµµ ÀÖ´Ù. </itemize> <itemize> <item>¶§·Î´Â ¼Ò½º¸¦ ÄÄÆÄÀÏÇϱâ À§ÇØ ¿À·¡µÈ X11R5ÀÇ ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÒ ¼öµµ ÀÖ´Ù. /usr/X11R6/lib¿¡ R5ÀÇ ¶óÀ̺귯¸®°¡ ÀÖ´Ù¸é(óÀ½ ¸®´ª½º¸¦ ¼³Ä¡ÇÒ ¶§ ÀÌ°ÍÀ» ¼³Ä¡Çϵµ·Ï ¿É¼ÇÀ» ÁÖ¾ú´Ù¸é), ¼ÒÇÁÆ®¿þ¾î¸¦ ÄÄÆÄÀÏÇϱâ À§ÇØ ÇÊ¿äÇÑ ¸µÅ©°¡ Á¦´ë·Î ÀÖ´ÂÁö¸¸ È®ÀÎÇÏ¸é µÈ´Ù. <tt>R5 ¶óÀ̺귯¸®</tt>ÀÇ À̸§Àº <tt>libX11.so.3.1.0</tt>, <tt>libXaw.so.3.1.0</tt>, <tt>libXt.so.3.1.0</tt> ÀÌ´Ù. º¸Åë <em>libX11.so.3 -> libX11.so.3.1.0</em>°ú °°Àº ¸µÅ©°¡ ÇÊ¿äÇÏ´Ù. ¼ÒÇÁÆ®¿þ¾î°¡ <em>libX11.so -> libX11.so.3.1.0</em> ÇüÅÂÀÇ ¸µÅ©¸¦ ÇÊ¿ä·Î ÇÒ ¼öµµ ÀÖ´Ù. ¹°·Ð "ºüÁ®ÀÖ´ø" ¸µÅ©¸¦ ¸¸µé·Á¸é, <em>root</em>·Î¼­ <bf>ln -s libX11.so.3.1.0 libX11.so</bf> ¸í·ÉÀ» ¾´´Ù. </itemize> <itemize> <item>¾î¶² ÆÐÅ°Áö´Â ¶óÀ̺귯¸®¸¦ ÃֽŠ¹öÁ¯À¸·Î ¼³Ä¡Çϵµ·Ï ¿ä±¸Çϱ⵵ ÇÑ´Ù. ¿¹¸¦ µé¾î, StarDivision GmbHÀÇ <em>StarOffice</em> ÆÐÅ°Áö 4.x ¹öÁ¯µéÀº 5.4.4 ÀÌ»óÀÇ ¹öÁ¯À» °¡Áø <tt>libc</tt>¸¦ ¿ä±¸Çϱâ·Î ¾Ç¸íÀÌ ³ô¾Ò´Ù. ±×º¸´Ù µÚ¿¡ ³ª¿Â <em>StarOffice</em> 5.0µµ »õ·Î¿î <tt>glibc 2.1</tt> ¶óÀ̺귯¸®¸¦ ¼³Ä¡ÇÏ°í ³ª¸é ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù. ´ÙÇàÈ÷µµ, ±× ´ÙÀ½¿¡ ³ª¿Â <em>StarOffice</em> 5.1Àº ÀÌ ¹®Á¦¸¦ ÇØ°áÇß´Ù. ¿À·¡µÈ ¹öÁ¯ÀÇ <em>StarOffice</em>¸¦ ½ÇÇà½ÃÅ°·Á¸é, <em>root</em>·Î¼­ ¶óÀ̺귯¸®µéÀ» ÀûÀýÇÑ µð·ºÅ͸®¿¡ º¹»çÇÏ°í, ¿À·¡µÈ ¶óÀ̺귯¸®¸¦ »èÁ¦ÇÑ ´ÙÀ½ ½Éº¼¸¯ ¸µÅ©¸¦ ´Ù½Ã ¼³Á¤ÇØ¾ß ÇÑ´Ù. (ÀÌ¿¡ ´ëÇÑ Á¤º¸°¡ ´õ ÇÊ¿äÇϸé ÃֽŠ¹öÁ¯ÀÇ <tt>StarOffice miniHOWTO</tt>¸¦ º¸¶ó.) <bf>ÁÖÀÇ: ½Ç¼öÇÏ¸é ´ç½ÅÀÇ ½Ã½ºÅÛÀÌ ÀÛµ¿ÇÏÁö ¾Êµµ·Ï ÇÒ ¼öµµ ÀÖÀ¸¹Ç·Î, ÀÌ °úÁ¤¿¡¼­´Â ±Øµµ·Î ÁÖÀÇÇÏ¿©¾ß ÇÑ´Ù. °»½ÅµÈ ÃֽŠ¶óÀ̺귯¸®´Â ´ë°³ Sunsite¿¡¼­ ãÀ» ¼ö ÀÖ´Ù.</bf> ÃֽŠ¶óÀ̺귯¸®´Â ´ë°³ <htmlurl url="ftp://metalab.unc.edu/pub/Linux/libs" name="Sunsite">¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. </itemize> <sect1>´Ù¸¥ ¹®Á¦µé <p> <itemize> <item>¼³Ä¡µÇ¾î ÀÖ´Â <em>Perl</em> À̳ª ±×¹ÛÀÇ ½© ½ºÅ©¸³Æ®°¡ <tt>No such file or directory</tt>¶ó´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ ³¾ ¼ö ÀÖ´Ù. ÀÌ °æ¿ì¿¡´Â ÆÄÀÏÀÌ ½ÇÇà °¡´ÉÇÏ°Ô µÇ¾î ÀÖ´ÂÁö Çã°¡±ÇÀ» È®ÀÎÇÏ°í, ½ºÅ©¸³Æ®°¡ È£ÃâÇÏ´Â ½©À̳ª ÇÁ·Î±×·¥ÀÌ ÁöÁ¤µÈ À§Ä¡¿¡ ÀÖ´ÂÁö ÆÄÀÏÀÇ Çì´õ ºÎºÐÀ» È®ÀÎÇϵµ·Ï ÇÑ´Ù. ¿¹¸¦ µé¾î ½ºÅ©¸³Æ®°¡ ¾Æ·¡¿Í °°ÀÌ ½ÃÀÛÇÑ´Ù°í ÇÏÀÚ. <tscreen><verb> #!/usr/local/bin/perl </verb></tscreen> <em>Perl</em>ÀÌ »ç½ÇÀº <tt>/usr/local/bin</tt>ÀÌ ¾Æ´Ï¶ó <tt>/usr/bin</tt> µð·ºÅ͸®¿¡ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é, ÀÌ ½ºÅ©¸³Æ®´Â ½ÇÇàµÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â µ¥¿¡´Â µÎ °¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. ½ºÅ©¸³Æ® ÆÄÀÏÀÇ Çì´õ¸¦ <tt>#!/usr/bin/perl</tt>·Î ¹Ù²Ù°Å³ª, <bf>ln -s /usr/bin/perl /usr/local/bin/perl</bf> ·Î Á¤È®ÇÑ µð·ºÅ͸®·ÎÀÇ ½Éº¼¸¯ ¸µÅ©¸¦ Ãß°¡ÇØ ÁÖ¸é µÈ´Ù. </itemize> <itemize> <item>¾î¶² X11 ¼ÒÇÁÆ®¿þ¾î¸¦ ÄÄÆÄÀÏÇÏ·Á¸é Motif ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÏ´Ù. Ç¥ÁØÀûÀÎ ¸®´ª½º ¹èÆ÷º»¿¡´Â Motif ¶óÀ̺귯¸®°¡ ¾øÀ¸¸ç, ÇöÀç Motif´Â 100-200 ´Þ·¯´Ù. (¸¹Àº °æ¿ì ÇÁ¸®¿þ¾îÀÎ <url url="http://www.lesstif.org/" name="Lesstif"> µµ ¾µ ¼ö ÀÖÁö¸¸.) ¾î¶² ÆÐÅ°Áö¸¦ ÄÄÆÄÀÏÇϱâ À§ÇØ Motif°¡ ÇÊ¿äÇѵ¥, Motif ¶óÀ̺귯¸®¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù¸é <em>Á¤ÀûÀ¸·Î ¸µÅ©µÈ</em> ¹ÙÀ̳ʸ®¸¦ ±¸ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. Á¤Àû ¸µÅ©´Â ¶óÀ̺귯¸® ·çƾµéÀ» ¹ÙÀ̳ʸ® ÀÚü¿¡ ³Ö´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô ÇÏ¸é ¹ÙÀ̳ʸ® ÆÄÀÏÀº ÈξÀ Ä¿ÁöÁö¸¸, ÇØ´ç ¶óÀ̺귯¸®°¡ ¾ø´Â ½Ã½ºÅÛ¿¡¼­µµ ¼öÇà½Ãų ¼ö ÀÖ´Ù. <tscreen><verb> </verb></tscreen> ÄÄÆÄÀÏÀ» À§ÇØ ´ç½Å ½Ã½ºÅÛ¿¡ ¾ø´Â ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÏ´Ù¸é, ±× ÆÐÅ°Áö´Â ¸µÅ© ¿¡·¯(<tt>undefined reference error</tt>)¸¦ ÀÏÀ¸Å³ °ÍÀÌ´Ù. ±×·± ¶óÀ̺귯¸®´Â ºñ½Ñ °ÍÀ̰ųª, ´Ù¸¥ ¾î¶² ÀÌÀ¯·Î ã±â ¾î·Á¿î °ÍÀÏ ¼ö ÀÖ´Ù. ±×·± °æ¿ì¿¡´Â <em>Á¤ÀûÀ¸·Î ¸µÅ©µÈ</em> ¹ÙÀ̳ʸ®¸¦ ÆÐÅ°Áö Á¦ÀÛÀÚ³ª ¸®´ª½º »ç¿ëÀÚ ±×·ì¿¡°Ô¼­ ±¸ÇÏ´Â °ÍÀÌ °¡Àå ½¬¿î ÇØ°áÃ¥ÀÌ´Ù. </itemize> <itemize> <em>configure</em> ½ºÅ©¸³Æ®¸¦ ¼öÇà½ÃÄ×´õ´Ï ´ç½ÅÀÌ ÄÄÆÄÀÏÇÏ·Á´Â ÆÐÅ°Áö¿Í´Â °ü°è¾ø¾î º¸ÀÌ´Â ÀÌ»óÇÑ MakefileÀ» ¸¸µå´Â °æ¿ì°¡ ÀÖ´Ù. ÀÌ°ÍÀº ´ç½ÅÀÇ path ÁßÀÇ ´Ù¸¥ ¾îµò°¡¿¡¼­ ¹ß°ßµÈ ¾û¶×ÇÑ <em>configure</em>¸¦ ¼öÇàÇß´Ù´Â ¶æÀÌ´Ù. ÀÌ·± ÀÏÀ» ÇÇÇÏ·Á¸é Ç×»ó <bf>./configure</bf>·Î ½ÇÇàÇϵµ·Ï ÇÏÀÚ. </itemize> <itemize> ´ëºÎºÐÀÇ ¸®´ª½º ¹èÆ÷º»Àº ¿¾³¯ÀÇ <tt>lib 5</tt>¿¡¼­ <tt>libc 6 /glibc 2</tt> ¶óÀ̺귯¸®·Î ¹Ù²î¾ú´Ù. ¿¾³¯ ¶óÀ̺귯¸®¿Í ÇÔ²² ÀÛµ¿Çϵµ·Ï ¹Ì¸® ÄÄÆÄÀÏµÈ ¹ÙÀ̳ʸ®¶ó¸é ´ç½ÅÀÌ ¶óÀ̺귯¸®¸¦ ¾÷±×·¹À̵åÇÒ °æ¿ì ¹®Á¦¸¦ ÀÏÀ¸Å³ ¼ö ÀÖ´Ù. ÇعýÀº ÇÁ·Î±×·¥À» ¼Ò½º¿¡¼­ºÎÅÍ ´Ù½Ã ÄÄÆÄÀÏÇϵçÁö, ¹Ì¸® ÄÄÆÄÀÏµÈ »õ·Î¿î ¹ÙÀ̳ʸ®¸¦ ¾ò´Â °ÍÀÌ´Ù. Ȥ½Ã ´ç½ÅÀÌ ½Ã½ºÅÛÀ» <tt>libc 6</tt>À¸·Î ¾÷±×·¹À̵åÇÏ´Â ÁßÀÌ°í ÀÌ·± ¹®Á¦¸¦ °æÇèÇß´Ù¸é Eric GreenÀÇ <em>Glibc 2 HOWTO</em>¸¦ Âü°íÇϵµ·Ï Ç϶ó. <tscreen><verb> </verb></tscreen> <tt>glibc</tt> ¹öÁ¯µé »çÀÌ¿¡´Â ¾à°£ÀÇ È£È¯µÇÁö ¾Ê´Â Á¡ÀÌ ÀÖ´Ù´Â °Í¿¡ ÁÖÀÇÇ϶ó. ÀÌ ¶§¹®¿¡ <tt>glibc 2.1</tt>¿¡¼­ ÄÄÆÄÀÏµÈ ¹ÙÀ̳ʸ®´Â <tt>glibc 2.0</tt>°ú´Â ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù°Å³ª ±× ¹Ý´ëÀÇ °æ¿ì°¡ ÀÖÀ» ¼ö ÀÖ´Ù. </itemize> <itemize> ¶§·Î´Â <tt>Makefile</tt> ¾ÈÀÇ ÄÄÆÄÀÏ ¿É¼Ç¿¡¼­ <em>-ansi</em> ¿É¼ÇÀ» Á¦°ÅÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¼öµµ ÀÖ´Ù. ÀÌ·¸°Ô Çϸé gcc°¡ °®°í ÀÖ´Â ANSI ÀÌ¿ÜÀÇ Æ¯Â¡µéÀ» È°¼ºÈ­½ÃÅ°¸ç, ÀÌ·± Ư¡µéÀ» ¿ä±¸ÇÏ´Â ÆÐÅ°ÁöµéÀ» ÄÄÆÄÀÏÇÒ ¼ö ÀÖ°Ô µÈ´Ù. (ÀÌ »ç½ÇÀ» ÁöÀûÇØ ÁØ Sebastien Blondeel¿¡°Ô °¨»çÇÑ´Ù.) </itemize> <itemize> <item>¾î¶² ÇÁ·Î±×·¥µéÀº <em>root ±ÇÇÑ</em>À¸·Î ½ÇÇàµÇµµ·Ï Çϱâ À§ÇØ <em>setuid root</em>¸¦ ÇØÁÖ¾î¾ß ÇÑ´Ù. ÀÌ·¸°Ô ÇÏ´Â ¸í·ÉÀº <em>root·Î¼­</em> <bf>chmod u+s ÆÄÀÏÀ̸§</bf> ÇÏ´Â °ÍÀÌ´Ù. (ÇÁ·Î±×·¥ÀÌ ±× ÀÌÀü¿¡ ¹Ì¸® root ¼ÒÀ¯·Î µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù´Â Á¡¿¡ ÁÖÀÇÇ϶ó.) ÀÌ ¸í·ÉÀº ÆÄÀÏ Çã°¡±Ç ³»ÀÇ <em>setuid</em> ºñÆ®¸¦ ¼³Á¤ÇÏ´Â ±â´ÉÀ» ÇÑ´Ù. ÀÌ ¹®Á¦´Â ÇÁ·Î±×·¥ÀÌ ¸ðµ©À̳ª cd-rom µå¶óÀÌºê °°Àº ½Ã½ºÅÛ Çϵå¿þ¾î¿¡ Á¢±ÙÇϰųª, ¾î´À ƯÈ÷ ¾Ç¸í³ôÀº ¿¡¹Ä·¹ÀÌ¼Ç ÆÐÅ°Áö ó·³ ÄÜ¼Ö ¸ðµå¿¡¼­ SVGA ¶óÀ̺귯¸®¸¦ È£ÃâÇÒ °æ¿ì ÀϾ´Ù. ÇÁ·Î±×·¥ÀÌ root·Î¼­´Â ½ÇÇàµÇÁö¸¸, ÀÏ¹Ý »ç¿ëÀÚ¿¡°Ô´Â <em>access denied</em> ¿¡·¯ ¸Þ½ÃÁö¸¦ ³»º¸³½´Ù¸é ÀÌ Çã°¡±Ç ¹®Á¦¸¦ ÀǽÉÇغ¸±â ¹Ù¶õ´Ù. <P> <bf>ÁÖÀÇ:</bf> root·ÎÀÇ <em>setuid</em>¸¦ °¡Áø ÇÁ·Î±×·¥Àº ½Ã½ºÅÛ¿¡ º¸¾È »óÀÇ À§Çè ¿äÀÎÀÌ µÉ ¼ö ÀÖ´Ù. ÀÌ·± ÇÁ·Î±×·¥Àº rootÀÇ ±ÇÇÑÀ» °®°í ½ÇÇàµÇ¸ç µû¶ó¼­ ½É°¢ÇÑ ¼Õ»óÀ» ³¢Ä¥ ÀáÀç·ÂÀ» °®°í ÀÖ´Ù. µû¶ó¼­ <em>setuid</em> ºñÆ®¸¦ ÁÖ±â Àü¿¡ ÇÁ·Î±×·¥ÀÌ ¹«¾ùÀ» ÇÏ´ÂÁö, °¡´ÉÇÏ´Ù¸é ¼Ò½º¸¦ »ìÆ캽À¸·Î½á, È®ÀÎÇϵµ·Ï Ç϶ó. </itemize> <sect1>º¯°æ(tweaking)°ú ¹Ì¼¼ÇÑ Á¶Á¤(fine tuning) <p> ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ °¡Àå ÁÁÀº ÄÄÆÄÀÏ ¿É¼ÇµéÀÌ ¼³Á¤µÇ¾î ÀÖ´ÂÁö È®ÀÎÇϱâ À§Çؼ­ <tt>Makefile</tt>À» µé¿©´Ùº¸°í ½ÍÀ» ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î <em>-O2</em> ¿É¼ÇÀ» ÁÖ¸é ÃÖ°í ¼öÁØÀÇ ÃÖÀûÈ­¸¦ ¼±ÅÃÇÏ°Ô µÇ°í, <em>-fomit-frame-pointer</em> ¿É¼ÇÀº (µð¹ö±ëÀº ºÒ°¡´ÉÇÏ°Ô µÇÁö¸¸) ¹ÙÀ̳ʸ®¸¦ ´õ ÀÛ°Ô ¸¸µé¾î ÁØ´Ù. <bf>ÀÚ½ÅÀÌ ¹«¾ùÀ» ÇÏ°í ÀÖ´ÂÁö ¸ð¸¥´Ù¸é ÀÌ·± °ÍµéÀ» °Çµå¸®Áö ¾Êµµ·Ï Ç϶ó. ±×¸®°í ¾î¶² °æ¿ì¿¡µç ½ÃÇè»ï¾Æ ±×³É ÄÄÆÄÀÏÇؼ­ Á¦´ë·Î µ¹¾Æ°¡´Â °ÍÀ» È®ÀÎÇÑ ´ÙÀ½¿¡ Çϵµ·Ï Ç϶ó.</bf> <sect1>´õ µµ¿òÀÌ ÇÊ¿äÇÒ ¶§ °¡ º¼ °÷ <p> ³» °æÇè¿¡ ÀÇÇϸé, ÀÀ¿ë ÇÁ·Î±×·¥ °¡¿îµ¥ ±×´ë·Î ¹®Á¦¾øÀÌ ÄÄÆÄÀϵǴ °ÍÀº ¾à 25% Á¤µµ¿´´Ù. 50% ³²ÁþÀº °£´ÜÇÏ°Ç ²ûÂïÇÒ Á¤µµ°Ç ³ë·ÂÇϸé ÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Ù. Áï »ó´ç¼öÀÇ ÆÐÅ°ÁöµéÀº ¾Æ¹«¸® Çصµ ÄÄÆÄÀÏÇÒ ¼ö°¡ ¾ø´Ù´Â ¶æÀÌ´Ù. ±×·¸´Ù°í Çصµ, ÀÌ ÆÐÅ°ÁöµéÀÇ ÀÎÅÚ <tt>ELF</tt> ¹× <tt>a.out</tt> ¹ÙÀ̳ʸ®¸¦ <htmlurl url="ftp://metalab.unc.edu" name="Sunsite">³ª <htmlurl url="ftp://tsx-11.mit.edu" name = "TSX-11 archive"> »çÀÌÆ®¿¡¼­ ãÀ» °¡´É¼ºµµ ÀÖ´Ù. <url url="http://redhat.com" name="·¹µå ÇÞ">°ú <url url="http://www.debian.org" name="µ¥ºñ¾È">µµ ÈçÈ÷ ¾²ÀÌ´Â ¸®´ª½º ¼ÒÇÁÆ®¿þ¾îÀÇ ´ëºÎºÐÀÌ ¹Ì¸® ÆÐÅ°ÁöÈ­µÈ ¹ÙÀ̳ʸ®·Î ÀúÀåµÇ¾î ÀÖ´Ù. ȤÀº ¼ÒÇÁÆ®¿þ¾îÀÇ Á¦ÀÛÀÚ°¡ ´ç½ÅÀÇ Æ¯º°ÇÑ ÃëÇâÀÇ ÄÄÇ»Å͸¦ À§ÇØ ÄÄÆÄÀÏµÈ ¹ÙÀ̳ʸ®¸¦ Á¦°øÇØ ÁÙ ¼öµµ ÀÖ´Ù. <tt>¹Ì¸® ÄÄÆÄÀÏµÈ ¹ÙÀ̳ʸ®¸¦ ¾ò¾ú´Ù¸é, ´ç½ÅÀÇ ½Ã½ºÅÛ°úÀÇ È£È¯¼ºÀ» È®ÀÎÇϱâ À§ÇØ ´ÙÀ½ »çÇ×µéÀ» Á¡°ËÇØ¾ß ÇÑ´Ù.</tt> <itemize> <item><tt>¹ÙÀ̳ʸ®°¡ ´ç½ÅÀÇ Çϵå¿þ¾î(¿¹¸¦ µé¾î ÀÎÅÚ x86)¿¡¼­ ÀÛµ¿ÇØ¾ß ÇÑ´Ù.</tt> <item><tt>¹ÙÀ̳ʸ®°¡ ´ç½ÅÀÇ Ä¿³Î°ú ȣȯµÇ´Â °ÍÀ̾î¾ß ÇÑ´Ù.(a.out À̳ª elf)</tt> <item><tt>´ç½ÅÀÇ ¶óÀ̺귯¸®°¡ ÃÖ½ÅÀÇ °ÍÀ̾î¾ß ÇÑ´Ù.</tt> <item><tt>´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ ÀûÀýÇÑ ¼³Ä¡ À¯Æ¿¸®Æ¼(rpmÀ̳ª deb)°¡ ÀÖ¾î¾ß ÇÑ´Ù.</tt> </itemize> ¸¸¾à ¸ðµç ½Ãµµ°¡ ½ÇÆÐÇÑ´Ù¸é, <htmlurl url="news://comp.os.linux.x" name="comp.os.linux.x">³ª <htmlurl url="news://comp.os.linux.development" name="comp.os.linux.development"> °°Àº ÀûÀýÇÑ ´º½º±×·ì¿¡¼­ µµ¿òÀ» ãÀ» ¼ö ÀÖ´Ù. Ȥ½Ã ¸ðµç ³ë·ÂÀÌ ¼öÆ÷·Î µ¹¾Æ°¬´Ù°í ÇÏ´õ¶óµµ, ÃÖ¼ÒÇÑ ´ç½ÅÀº ÃÖ¼±À» ´ÙÇßÀ¸¸ç ±× °úÁ¤¿¡¼­ ¸¹Àº °ÍÀ» ¹è¿üÀ» Å×´Ï ³Ê¹« ³«½ÉÇÒ ÇÊ¿ä´Â ¾ø´Ù. <sect>¸¶Áö¸· ´Ü°è<label id="finalsteps"> <p> (<tt>.bashrc</tt>³ª <tt>.cshrc</tt> ¾È¿¡) ¾î¶² ȯ°æ º¯¼ö¸¦ ¼³Á¤ÇØ¾ß ÇÏ´ÂÁö, ¶Ç <tt>.Xdefaults</tt>¿Í <tt>.Xresources</tt> ÆÄÀÏÀ» °íÃÄ¾ß ÇÏ´ÂÁö °áÁ¤Çϱâ À§ÇØ ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°ÁöÀÇ ¹®¼­¸¦ ÀÐ¾î º¸¾Æ¶ó. ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ±âº» ¼³Á¤ ÆÄÀÏÀÌ ÀÖÀ» ¼öµµ ÀÖ´Ù. ¿ø·¡ÀÇ ¹èÆ÷º»ÀÌ Xfoo ¶ó¸é º¸Åë <tt>Xfoo.ad</tt>¶ó´Â À̸§ÀÌ´Ù. ÀÌ·± ÆÄÀÏÀÌ ÀÖÀ¸¸é ´ç½ÅÀÇ ÄÄÇ»ÅÍ¿¡ ¸Âµµ·Ï Xfoo.ad ÆÄÀÏÀ» ÆíÁýÇؼ­, Xfoo ·Î ¹Ù²Û ´ÙÀ½(<bf>mv</bf>), <em>root·Î¼­</em> <tt>/usr/lib/X11/app-defaults</tt> µð·ºÅ͸®¿¡ ¼³Ä¡Çϵµ·Ï ÇÑ´Ù. ÀÌ·¸°Ô ÇÏÁö ¾ÊÀ¸¸é ¼ÒÇÁÆ®¿þ¾î°¡ ÀÌ»óÇÏ°Ô ÀÛµ¿Çϰųª ¾Æ¿¹ ÀÛµ¿ÇÏÁö ¾Ê°Ô µÉ ¼ö ÀÖ´Ù. ´ëºÎºÐÀÇ ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¿¡´Â Çϳª ÀÌ»óÀÇ ¹Ì¸® Æ÷¸ËµÈ man ÆäÀÌÁö°¡ ÀÖ´Ù. <em>root·Î¼­</em> Xfoo.man ÆÄÀÏÀ» <tt>/usr/man</tt>, <tt>/usr/local/man</tt>, <tt>/usr/X11R6/man</tt> ÀÇ Àû´çÇÑ µð·ºÅ͸®(<tt>man1</tt> - <tt>man9</tt>)¿¡ º¹»çÇÏ°í, ±×¿¡ ¸ÂÃç À̸§À» ¹Ù²Ù¾î ÁØ´Ù. ¿¹¸¦ µé¾î Xfoo.man À» /usr/man/man4¿¡ µÎ¾ú´Ù¸é, Xfoo.4 ·Î À̸§À» °íÃÄ¾ß ÇÑ´Ù. (mv Xfoo.man Xfoo.4) °ü·Ê¿¡ µû¸£¸é, »ç¿ëÀÚ°¡ ¾²´Â ±âº» ¸í·ÉÀº <tt>man1</tt>, °ÔÀÓÀº <tt>man6</tt>, °ü¸®¿ë ÆÐÅ°Áö´Â <tt>man8</tt>ÀÌ´Ù. (ÀÚ¼¼ÇÑ °ÍÀº <em>man docs</em>À» º¸¶ó.) ¹°·Ð ¿øÇÑ´Ù¸é ´ç½Å ½Ã½ºÅÛ¿¡¼­´Â ÀÌ¿Í ´Ù¸£°Ô ÇÒ ¼öµµ ÀÖ´Ù. ¾î¶² ÆÐÅ°Áö¿¡´Â <tt>Makefile</tt>¿¡ <em>install</em> ¿É¼ÇÀÌ ºüÁ® À־, ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ÀûÀýÇÑ ½Ã½ºÅÛ µð·ºÅ͸®¿¡ ¼³Ä¡ÇÏÁö ¾Ê´Â´Ù. ÀÌ·± °æ¿ì¿¡´Â ¼öµ¿À¸·Î <tt>/usr/bin</tt>, <tt>/usr/local/bin</tt>, <tt>/usr/X11R6/bin</tt> µîÀÇ ½Ã½ºÅÛ µð·ºÅ͸®¿¡ ¹ÙÀ̳ʸ®µéÀ» º¹»çÇؼ­ ¼³Ä¡ÇÒ ¼ö ÀÖ´Ù. ¹°·Ð <em>root·Î¼­</em>. ¸®´ª½º ¹èÆ÷º»ÀÌ ±âº»À¸·Î ¼³Ä¡ÇÏÁö ¾Ê´Â ¹ÙÀ̳ʸ®´Â <tt>/usr/local/bin</tt>ÀÌ ±ÇÀåµÈ´Ù´Â Á¡À» ¿°µÎ¿¡ µÎÀÚ. ´ëºÎºÐÀÇ °æ¿ì, À§ÀÇ ÀýÂ÷µéÀÇ ÀϺΠȤÀº ÀüºÎ°¡ <bf>make install</bf>·Î ÀÚµ¿ÀûÀ¸·Î 󸮵ȴÙ. ÆÐÅ°Áö¿¡ µû¶ó <bf>make install.man</bf> À̳ª <bf>make install_man</bf> ÀÌ ÀÖÀ» ¼öµµ ÀÖ´Ù. ÀÌ·± °æ¿ì¿¡´Â <tt>README</tt>³ª <tt>INSTALL</tt> ÆÄÀÏ¿¡ ¸í½ÃµÇ¾î ÀÖÀ» °ÍÀÌ´Ù. <sect>ù¹ø° ¿¹: Xscrabble <p> Matt ChapmanÀÇ <tt>Xscrabble</tt>À̶ó´Â ÇÁ·Î±×·¥ÀÌ ÀÖÀ¸¸é Àç¹ÌÀÖ°Ú´Ù°í »ý°¢Çß´Ù. ³ª´Â ÀÚÁÖ Scrabble<tt>TM</tt>¸¦ µè±â ¶§¹®ÀÌ´Ù. ³ª´Â ÀÌ ÇÁ·Î±×·¥À» ´Ù¿î¹Þ¾Æ¼­ ¾ÐÃàÀ» Ç®°í, README ÆÄÀÏ¿¡ ÀÖ´Â ¾Æ·¡ÀÇ ¼ø¼­´ë·Î ÄÄÆÄÀÏÇß´Ù. <tscreen><verb> xmkmf make Makefiles make includes make </verb></tscreen> <em>¹°·Ð ÀÌ·¸°Ô Çؼ­ Á¦´ë·Î µÈ °Ç ¾Æ´ÏÁö¸¸...</em> <tscreen><verb> gcc -o xscrab -O2 -O -L/usr/X11R6/lib init.o xinit.o misc.o moves.o cmove.o main.o xutils.o mess.o popup.o widgets.o display.o user.o CircPerc.o -lXaw -lXmu -lXExExt -lXext -lX11 -lXt -lSM -lICE -lXExExt -lXext -lX11 -lXpm -L../Xc -lXc BarGraf.o(.text+0xe7): undefined reference to `XtAddConverter' BarGraf.o(.text+0x29a): undefined reference to `XSetClipMask' BarGraf.o(.text+0x2ff): undefined reference to `XSetClipRectangles' BarGraf.o(.text+0x375): undefined reference to `XDrawString' BarGraf.o(.text+0x3e7): undefined reference to `XDrawLine' etc. etc. etc... </verb></tscreen> ³ª´Â ÀÌ¿¡ ´ëÇØ <htmlurl url="news://comp.os.linux.x" name="comp.os.linux.x"> ´º½º±×·ì¿¡ ¹°¾îº¸¾Ò°í, ¾î¶² »ç¶÷ÀÌ Xt, Xaw, Xmu, X11 ¶óÀ̺귯¸®°¡ ¸µÅ© ´Ü°è¿¡¼­ ¹ß°ßµÇÁö ¾Ê¾ÒÀ½ÀÌ Æ²¸²¾ø´Ù°í Ä£ÀýÇÏ°Ô °¡¸£ÃÄ ÁÖ¾ú´Ù. Èì... ÆÐÅ°Áö¿¡´Â µÎ °³ÀÇ ÁÖµÈ MakefileÀÌ ÀÖ¾ú°í, ±× Áß <tt>src</tt> µð·ºÅ͸®¿¡ ÀÖ´Â °ÍÀÌ ³» ÁÖÀǸ¦ ²ø¾ú´Ù. Makefile ³»ÀÇ ÇÑ ÁÙÀÌ LOCAL_LIBSÀ» ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÏ°í ÀÖ¾ú´Ù. LOCAL_LIBS = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) ¸µÅ©°¡ ãÁö ¸øÇÑ ¶óÀ̺귯¸®µé·ÎÀÇ ÂüÁ¶°¡ ¿©±â ÀÖ¾ú´Ù. LOCAL_LIBS ·ÎÀÇ ´ÙÀ½¹ø ÂüÁ¶¸¦ ã´Ù°¡, ³ª´Â ±× MakefileÀÇ 495 Çà¿¡¼­ ´ÙÀ½À» ¹ß°ßÇß´Ù. <tscreen><verb> $(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LOCAL_LIBS) $(LDLIBS) $(EXTRA_LOAD_FLAGS) </verb></tscreen> ÀÌÁ¦ ÀÌ LDLIBS´Â ¹«¾ùÀ̾úÀ»±î? <tscreen><verb> LDLIBS = $(LDPOSTLIB) $(THREADS_LIBS) $(SYS_LIBRARIES) $(EXTRA_LIBRARIES) </verb></tscreen> SYS_LIBRARIES Àº ´ÙÀ½°ú °°¾Ò´Ù. <tscreen><verb> SYS_LIBRARIES = -lXpm -L../Xc -lXc </verb></tscreen> ±×·¸´Ù! ¿©±â ãÀ» ¼ö ¾ø´ø ¶óÀ̺귯¸®µéÀÌ ÀÖ¾ú´Ù. ¸µÄ¿°¡ LOCAL_LIBS Àü¿¡ LDLIBS¸¦ º¸¾Æ¾ß ÇÏ´Â °ÍÀÏ °¡´É¼ºÀÌ ÀÖ¾ú´Ù. µû¶ó¼­ óÀ½À¸·Î ½ÃµµÇØ º¼ ÀÏÀº 495 ÇàÀÇ $(LOCAL_LIBS)¿Í $(LDLIBS)¸¦ ¹Ù²ã¼­ ¾Æ·¡¿Í °°ÀÌ ÇÏ´Â °ÍÀ̾ú´Ù. <tscreen><verb> $(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LDLIBS) $(LOCAL_LIBS) $(EXTRA_LOAD_FLAGS) ^^^^^^^^^^^^^^^^^^^^^^^ </verb></tscreen> ³ª´Â À§¿Í °°ÀÌ ¹Ù²ã¼­ ´Ù½Ã <em>make</em>¸¦ ½ÇÇàÇغ¸¾Ò°í, À̹ø¿¡´Â Á¦´ë·Î ½ÇÇàµÇ¾ú´Ù. ¹°·Ð XscrabbleÀº ¾ÆÁ÷ µð·ºÅ͸®ÀÇ À̸§À» ¹Ù²Û´Ù°Å³ª ¼Ò½º ÆÄÀÏ ÁßÀÇ Çϳª¿¡ ÀÖ´Â ¸î¸î ¼±¾ð¹®À» ÁÖ¼® ó¸®ÇÏ´Â µî, ¼¼ºÎÀûÀÎ Á¶Á¤°ú º¯°æÀÌ ÇÊ¿äÇßÁö¸¸, ÀÌ ÆÐÅ°Áö´Â ±× µÚ ¿À·§µ¿¾È ³ª¸¦ Áñ°Ì°Ô ÇØÁÖ¾ú´Ù. [»õ ¹öÁ¯ÀÇ XscrabbleÀº ÀÌÁ¦ rpm Çü½ÄÀ¸·Î ±¸ÇÒ ¼ö ÀÖÀ¸¸ç, ¹®Á¦¾øÀÌ ¼³Ä¡µÈ´Ù.] <em>Xscrabble</em>¸¦ ¾òÀ¸·Á¸é <url url="mailto:matt@belgarath.demon.co.uk" name="Matt Chapman">¿¡°Ô e-mailÀ» Çϰųª, ±×ÀÇ <url url="http://www.belgarath.demon.co.uk/programs/index.html" name="Ȩ ÆäÀÌÁö">¿¡¼­ ´Ù¿î¹ÞÀ» ¼ö ÀÖ´Ù. <tscreen><verb> ScrabbleÀº Milton Bradley Co., Inc.ÀÇ µî·ÏµÈ »óÇ¥ÀÌ´Ù. </verb></tscreen> <sect>µÎ¹ø° ¿¹: Xloadimage <p> ÀÌ ¿¹ÀÇ ¹®Á¦ ù¹ø°º¸´Ù ½±´Ù. <em>xloadimage</em> ÇÁ·Î±×·¥À» ³» ±×·¡ÇÈ µµ±¸ ¸ðÀ½¿¡ Ãß°¡Çϸé ÁÁ°Ú´Ù°í »ý°¢Çß´Ù. ³ª´Â <tt>xloadi41.gz</tt> ÆÄÀÏÀ» Mui¿Í Quercia°¡ ¾´ <ref id="refs" name="X User Tools">¶ó´Â ÈǸ¢ÇÑ Ã¥ÀÇ ºÎ·Ï CD¿¡ ÀÖ´Â ¼Ò½º µð·ºÅ͸®¿¡¼­ Á÷Á¢ º¹»çÇß´Ù. ±â´ëÇÑ ´ë·Î, <em>tar xzvf</em>·Î ÆÄÀÏÀ» Ç® ¼ö ÀÖ¾ú´Ù. ÇÏÁö¸¸ <em>make</em>´Â °í¾àÇØ º¸ÀÌ´Â ¿¡·¯¸¦ ³»°í´Â Áß´ÜµÇ¾î ¹ö·È´Ù. <tscreen><verb> gcc -c -O -fstrength-reduce -finline-functions -fforce-mem -fforce-addr -DSYSV -I/usr/X11R6/include -DSYSPATHFILE=\"/usr/lib/X11/Xloadimage\" mcidas.c In file included from /usr/include/stdlib.h:32, from image.h:23, from xloadimage.h:15, from mcidas.c:7: /usr/lib/gcc-lib/i486-linux/2.6.3/include/stddef.h:215: conflicting types for `wchar_t' /usr/X11R6/include/X11/Xlib.h:74: previous declaration of `wchar_t' make[1]: *** [mcidas.o] Error 1 make[1]: Leaving directory `/home/thegrendel/tst/xloadimage.4.1' make: *** [default] Error 2 </verb></tscreen> ¿¡·¯ ¸Þ½ÃÁö¿¡ °áÁ¤ÀûÀÎ ´Ü¼­°¡ µé¾îÀÖ´Ù. <tt>image.h</tt> ÆÄÀÏÀÇ 23° ÁÙÀ» º¸¸é... <tscreen><verb> #include <stdlib.h> </verb></tscreen> Aha, <em>xloadimage</em>ÀÇ ¼Ò½º ¾îµò°¡¿¡¼­ <em>wchar_t</em>°¡ Ç¥ÁØ include ÆÄÀÏÀÎ <tt>stdlib.h</tt>¿¡¼­ Á¤ÀÇµÈ °ÍÀ¸·Î ´Ù½Ã Á¤ÀǵǾú´Ù. ¸ÕÀú <em>stdlib.h</em>´Â Æ÷ÇÔ½Ãų ÇÊ¿ä°¡ ¾øÀ» µí ÇϹǷΠ<tt>image.h</tt>ÀÇ 23° ÁÙÀ» ÁÖ¼®¹®À¸·Î ¸¸µé¾î º¸ÀÚ. ÀÌÁ¦ ¼³Ä¡ °úÁ¤Àº ¾Æ¹«·± Ä¡¸íÀûÀÎ ¿¡·¯ ¾øÀÌ ÁøÇàµÈ´Ù. <em>xloadimage</em> ÆÐÅ°Áö´Â Áö±Ý Á¤È®È÷ ÀÛµ¿ÇÏ°í ÀÖ´Ù. <sect>¼¼¹ø° ¿¹: Fortune <p> ÀÌ ¿¹´Â C ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ Áö½ÄÀÌ Á¶±Ý ÇÊ¿äÇÏ´Ù. À¯´Ð½º³ª ¸®´ª½º¿ë ¼ÒÇÁÆ®¿þ¾îÀÇ ¸¹Àº ºÎºÐÀÌ C·Î ¾²¿©Á® ÀÖÀ¸¹Ç·Î, ¼ÒÇÁÆ®¿þ¾î ¼³Ä¡¿¡ ´ëÇؼ­ ÁøÁöÇÑ »ç¶÷À̶ó¸é ÃÖ¼ÒÇÑ Á¶±ÝÀº C¸¦ ¹è¿öµÎ´Â °ÍÀÌ ÁÁ´Ù. ¾Ç¸í³ôÀº <em>fortune</em> ÇÁ·Î±×·¥Àº ¸®´ª½º°¡ ¶ã ¶§¸¶´Ù "fortune cookie"¶ó°í ºÒ¸®´Â Àç¹ÌÀÖ´Â °Ý¾ðÀ» º¸¿©ÁØ´Ù. ºÒÇàÇÏ°Ôµµ(unfortunately, ¹ßÀ½°®°í ³ó´ãÇÏ´Â °Å´Ù), 2.0.30 Ä¿³ÎÀ» »ç¿ëÇÏ´Â ·¹µå ÇÞ ¹èÆ÷ÆÇ¿¡¼­ fortuneÀ» ÄÄÆÄÀÏÇÏ·Á°í ÇÏ¸é ½É°¢ÇÑ ¿¡·¯°¡ »ý±ä´Ù. <tscreen><verb> ~/fortune# make all gcc -O2 -Wall -fomit-frame-pointer -pipe -c fortune.c -o fortune.o fortune.c: In function `add_dir': fortune.c:551: structure has no member named `d_namlen' fortune.c:553: structure has no member named `d_namlen' make[1]: *** [fortune.o] Error 1 make[1]: Leaving directory `/home/thegrendel/for/fortune/fortune' make: *** [fortune-bin] Error 2 </verb></tscreen> <tt>fortune.c</tt>¸¦ »ìÆ캸¸é, ÇØ´çµÇ´Â ÁÙÀº ´ÙÀ½°ú °°´Ù. <tscreen><verb> if (dirent->d_namlen == 0) continue; name = copy(dirent->d_name, dirent->d_namlen); </verb></tscreen> ¿ì¸®´Â <tt>dirent</tt>¶ó´Â ±¸Á¶Ã¼¸¦ ã¾Æ¾ß ÇÏÁö¸¸, ÀÌ ±¸Á¶Ã¼´Â <em>fortune.c</em> ¾È¿¡ ¼±¾ðµÇ¾î ÀÖÁö ¾ÊÀ¸¸ç, <bf>grep dirent</bf>¸¦ ÇغÁµµ ´Ù¸¥ ¼Ò½º ÆÄÀϵ鿡¼­µµ ãÀ» ¼ö ¾ø´Ù. ÇÏÁö¸¸, <em>fortune.c</em>ÀÇ Á¦ÀÏ À§¿¡ ´ÙÀ½°ú °°Àº ÁÙÀÌ ÀÖ´Ù. <tscreen><verb> #include <dirent.h> </verb></tscreen> ÀÌ°ÍÀº ½Ã½ºÅÛ ¶óÀ̺귯¸®ÀÇ include ÆÄÀÏ·Î º¸À̹ǷÎ, <em>dirent.h</em>¸¦ ãÀ» ³í¸®ÀûÀÎ À§Ä¡´Â <em>/usr/include</em> ´Ù. ½ÇÁ¦·Î <em>/usr/include</em>¿¡´Â <em>dirent.h</em> ÆÄÀÏÀÌ ÀÖÁö¸¸, ±× ÆÄÀÏÀº <tt>dirent</tt> ±¸Á¶Ã¼ÀÇ Á¤ÀǸ¦ Æ÷ÇÔÇÏ°í ÀÖÁö ¾Ê´Ù. ÀÌ ÆÄÀÏÀº ±× ´ë½Å ¶Ç´Ù¸¥ <em>dirent.h</em> ÆÄÀÏÀ» ÂüÁ¶ÇÏ°í ÀÖ´Ù. <tscreen><verb> #include <linux/dirent.h> </verb></tscreen> ¸¶Ä§³», <em>/usr/include/linux/dirent.h</em>¿¡¼­, ¹Ù¶ó´ø ±¸Á¶Ã¼ ¼±¾ðÀ» ã¾Ò´Ù. <tscreen><verb> struct dirent { long d_ino; __kernel_off_t d_off; unsigned short d_reclen; char d_name[256]; /* We must not include limits.h! */ }; </verb></tscreen> ¹°·Ð ÀÌ ±¸Á¶Ã¼ ¼±¾ðÀº <em>d_namelen</em> À» Æ÷ÇÔÇÏ°í ÀÖÁö ¾ÊÁö¸¸, ±×¿¡ ÇØ´çµÉ ¸¸ÇÑ "Èĺ¸"´Â µÎ °³ ÀÖ´Ù. °¡Àå ±×·² µí ÇÑ °ÍÀº <em>d_reclen</em>Àε¥, ÀÌ ±¸Á¶Ã¼ ¸â¹ö´Â ¹«¾ùÀΰ¡ÀÇ ±æÀ̸¦ ³ªÅ¸³»´Â °Í °°°í ¶Ç short integer ÇüÀ̱⠶§¹®ÀÌ´Ù. ¶Ç ÇϳªÀÇ °¡´É¼ºÀº, <em>d_ino</em>Àε¥ ±× À̸§°ú ÀÚ·áÇüÀ¸·Î º¸¾Æ inodeÀÇ ¹øÈ£ÀÏ °Í °°´Ù. ¿ì¸®´Â ¾Æ¸¶µµ "directory entry" ±¸Á¶Ã¼¸¦ ´Ù·ç°í ÀÖ´Â µí ÇÏ´Ù. ±× ¿ø¼ÒµéÀº ÆÄÀÏÀÇ ¼Ó¼º, ±× À̸§, inode, ±æÀÌ(ºí·° ¼ö)¸¦ ³ªÅ¸³¾ °ÍÀÌ´Ù. À̰͵µ (d_reclen °ú d_ino ¿¡ ´ëÇÑ) ¿ì¸®ÀÇ ÃßÃøÀ» È®ÀÎÇØ ÁÖ´Â °ÍÀ¸·Î º¸ÀδÙ. <tt>fortune.c</tt> ÆÄÀÏÀ» ÆíÁýÇؼ­, 551°ÁÙ°ú 553°ÁÙÀÇ <em>d_namelen</em>¿¡ ´ëÇÑ ÂüÁ¶¸¦ <em>d_reclen</em>¿¡ ´ëÇÑ ÂüÁ¶·Î °íÄ¡µµ·Ï ÇÏÀÚ. ´Ù½Ã <em>make all</em> À» ÇØ º¸ÀÚ. <bf>¼º°øÀÌ´Ù.</bf> ¿¡·¯ ¾øÀÌ ÄÄÆÄÀϵǾú´Ù. ¿ì¸®´Â ÀÌÁ¦ fortuneÀ¸·ÎºÎÅÍ ½Ñ °ª¿¡ ½º¸±À» ´À³¥ ¼ö ÀÖ´Ù. <sect>³×¹ø° ¿¹: Hearts <p> À̹ø¿¡´Â 80³â´ë¿¡ Bob Ankeney°¡ À¯´Ð½º ½Ã½ºÅÛÀ» À§ÇØ ÀÛ¼ºÇß°í, 1992³â¿¡ Mike YangÀÌ °íÃÆÀ¸¸ç, Áö±ÝÀº <url url="mailto:badger@phylo.life.uiuc.edu" name="Jonathan Badger">°¡ °ü¸®ÇÏ°í ÀÖ´Â °í»ö⿬ÇÑ ¿¾ °ÔÀÓÀÎ Hearts´Ù. ±× ¼±Á¶´Â Oregon ¼ÒÇÁÆ®¿þ¾îÀÇ Don Backus°¡ ¾´ ÈξÀ ´õ ¿À·¡µÈ ÆĽºÄ® ÇÁ·Î±×·¥À¸·Î ³ªÁß¿¡ Jeff HemmerlingÀÌ °³Á¤Çß´Ù. ¿ø·¡´Â ´ÙÁß »ç¿ëÀÚ Å¬¶óÀ̾ðÆ®¸¦ ¿°µÎ¿¡ µÐ °ÍÀÌÁö¸¸, ÄÄÇ»Å͸¦ »ó´ë·Î ÇÑ ´ÜÀÏ »ç¿ëÀÚ ¸ðµåµµ °¡´ÉÇÏ´Ù. ¼¼·ÃµÈ ¸éÀÌ ºÎÁ·ÇÏ°í ÄÄÇ»ÅÍ »ó´ë°¡ º°·Î °­ÇÏÁö ¾ÊÁö¸¸, ±×·¡ÇÈÀº ÈǸ¢ÇÏ´Ù. À¯´Ð½º¿Í ¸®´ª½º¿¡¼­ °¡´ÉÇÑ °ÍÀº Áö±ÝÀ¸·Î¼­µµ Ä£ÀýÇÑ Hearts °ÔÀÓ ¹Û¿¡´Â ¾ø´Â µí ÇÏ´Ù. ±× ³ªÀÌ¿Í Ç÷Åë ¶§¹®¿¡, ÀÌ ÆÐÅ°Áö´Â ƯÈ÷ ¸®´ª½º ½Ã½ºÅÛ¿¡ ¼³Ä¡Çϱ⠾î·Æ´Ù. ¼³Ä¡¸¦ À§Çؼ­´Â ±æ°í °ñÄ¡¾ÆÇ ÀÏ·ÃÀÇ ÆÛÁñÀ» Ç®¾î¾ß ÇÑ´Ù. ÀÌ °úÁ¤Àº Àγ»¿Í °áÀÇÀÇ ÈÆ·ÃÀ̶ó ÇÒ ¼ö ÀÖ´Ù. <em>½ÃÀÛÇϱâ Àü¿¡, <tt>motif</tt> ³ª <tt>lesstif</tt> ¶óÀ̺귯¸®°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö È®ÀÎÇϵµ·Ï Ç϶ó.</em> <itemize> <item><bf></bf> </itemize> <bf>xmkmf</bf> <bf>make</bf> <tscreen><verb> client.c: In function `read_card': client.c:430: `_tty' undeclared (first use in this function) client.c:430: (Each undeclared identifier is reported only once client.c:430: for each function it appears in.) client.c: In function `scan': client.c:685: `_tty' undeclared (first use in this function) make: *** [client.o] Error 1 </verb></tscreen> <tt>client.c</tt>¿¡ ¹üÀÎÀÌ ÀÖ´Ù. <tscreen><verb> #ifndef SYSV (buf[2] != _tty.sg_erase) && (buf[2] != _tty.sg_kill)) { #else (buf[2] != CERASE) && (buf[2] != CKILL)) { #endif </verb></tscreen> <itemize> <item><bf></bf> </itemize> <tt>client.c</tt>ÀÇ 39° ÁÙ¿¡ <tscreen><verb> #define SYSV </verb></tscreen> ¸¦ ´õÇÑ´Ù. ÀÌ·¸°Ô Çϸé <em>_tty</em>·ÎÀÇ ÂüÁ¶¸¦ ¹«½ÃÇÑ´Ù. <bf>make</bf> <tscreen><verb> client.c:41: sys/termio.h: No such file or directory make: *** [client.o] Error 1 </verb></tscreen> <itemize> <item><bf></bf> </itemize> ¸®´ª½º ½Ã½ºÅÛ¿¡¼­´Â <tt>termio.h</tt> ÆÄÀÏÀÌ <tt>/usr/include</tt> ¿¡ ÀÖ´Ù. ´õ ¿À·¡µÈ À¯´Ð½º¿¡¼­´Â <tt>/usr/include/sys</tt>¿¡ ÀÖ´Ù. µû¶ó¼­, <tt>clinet.c</tt>ÀÇ 41° ÁÙÀ» <tscreen><verb> #include <sys/termio.h> </verb></tscreen> ¿¡¼­ <tscreen><verb> #include <termio.h> </verb></tscreen> ·Î ¹Ù²Û´Ù. <bf>make</bf> <tscreen><verb> gcc -o hearts -g -L/usr/X11R6/lib client.o hearts.o select.o connect.o sockio.o start_dist.o -lcurses -ltermlib /usr/bin/ld: cannot open -ltermlib: No such file or directory collect2: ld returned 1 exit status make: *** [hearts] Error 1 </verb></tscreen> <itemize> <item><bf></bf> </itemize> ¿äÁòÀÇ ¸®´ª½º ¹èÆ÷º»Àº ±¸½ÄÀÇ <em>termlib</em> µ¥ÀÌÅͺ£À̽º º¸´Ù´Â <em>terminfo</em>³ª <em>termcap</em>À» »ç¿ëÇÑ´Ù. <tt>Makefile</tt>ÀÇ 655° ÁÙ, <tscreen><verb> CURSES_LIBRARIES = -lcurses -ltermlib </verb></tscreen> ¸¦ <tscreen><verb> CURSES_LIBRARIES = -lcurses -ltermcap </verb></tscreen> ·Î ¹Ù²Û´Ù. <bf>make</bf> <tscreen><verb> gcc -o xmhearts -g -L/usr/X11R6/lib xmclient.o hearts.o select.o connect.o sockio.o start_dist.o gfx.o -lXm_s -lXt -lSM -lICE -lXext -lX11 -lPW /usr/bin/ld: cannot open -lXm_s: No such file or directory collect2: ld returned 1 exit status </verb></tscreen> <itemize> <item><bf></bf> </itemize> <em>lesstif</em>ÀÇ ÁÖ ¶óÀ̺귯¸®´Â <tt>libXm_s</tt>°¡ ¾Æ´Ï¶ó <tt>libXm</tt>ÀÌ´Ù. µû¶ó¼­ <tt>Makefile</tt>¸¦ °íÄ£´Ù. 653° ÁÙ: <tscreen><verb> XMLIB = -lXm_s $(XTOOLLIB) $(XLIB) -lPW </verb></tscreen> ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù. <tscreen><verb> XMLIB = -lXm $(XTOOLLIB) $(XLIB) -lPW </verb></tscreen> <bf>make</bf> <tscreen><verb> gcc -o xmhearts -g -L/usr/X11R6/lib xmclient.o hearts.o select.o connect.o sockio.o start_dist.o gfx.o -lXm -lXt -lSM -lICE -lXext -lX11 -lPW /usr/bin/ld: cannot open -lPW: No such file or directory collect2: ld returned 1 exit status make: *** [xmhearts] Error 1 </verb></tscreen> <itemize> <item><bf></bf> </itemize> ´Ã ÇÏ´ø ÀǽÉÀ» Çغ¸ÀÚ <tt>PW</tt>¶óÀ̺귯¸®°¡ ¾ø´Ù. <tt>Makefile</tt>¸¦ °íÄ£´Ù. 653° ÁÙ, <tscreen><verb> XMLIB = -lXm $(XTOOLLIB) $(XLIB) -lPW </verb></tscreen> ¸¦ ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù. <tscreen><verb> XMLIB = -lXm $(XTOOLLIB) $(XLIB) -lPEX5 </verb></tscreen> (The <tt>PEX5</tt> lib comes closest to <tt>PW</tt>.) <bf>make</bf> <tscreen><verb> rm -f xmhearts gcc -o xmhearts -g -L/usr/X11R6/lib xmclient.o hearts.o select.o connect.o sockio.o start_dist.o gfx.o -lXm -lXt -lSM -lICE -lXext -lX11 -lPEX5 </verb></tscreen> µåµð¾î <tt>make</tt>¿¡ ¼º°øÇß´Ù. (¸¸¼¼!) <itemize> <item><bf></bf> </itemize> <em>¼³Ä¡:</em> root·Î¼­ ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù. <tscreen><verb> [root@localhost hearts]# make install install -c -s hearts /usr/X11R6/bin/hearts install -c -s xmhearts /usr/X11R6/bin/xmhearts install -c -s xawhearts /usr/X11R6/bin/xawhearts install in . done </verb></tscreen> <itemize> <item><bf></bf> </itemize> <em>½ÃÇè»ï¾Æ µ¹·Áº¸ÀÚ.</em> <bf>rehash</bf> (¿ì¸®´Â <tt>tcsh</tt> ½©À» ¾²°í ÀÖ´Ù.) <bf>xmhearts</bf> <tscreen><verb> localhost:~/% xmhearts Can't invoke distributor! </verb></tscreen> <itemize> <item><bf></bf> </itemize> <tt>heats</tt> ÆÐÅ°ÁöÀÇ <tt>README</tt> ÆÄÀÏ¿¡ ´ÙÀ½°ú °°ÀÌ ÀûÇô ÀÖ´Ù. <tscreen><verb> heartsd, hearts_dist¿Í hearts.instr¸¦ local.h¿¡ Á¤ÀÇµÈ HEARTSLIB µð·ºÅ͸® ¾È¿¡ µÎ°í, ÀÌ ÆÄÀϵ鿡 ´©±¸³ª Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï Ç϶ó. </verb></tscreen> <tt>local.h</tt> ÆÄÀÏ ³»¿ë: <tscreen><verb> /* where the distributor, dealer and instructions live */ #define HEARTSLIB "/usr/local/lib/hearts" </verb></tscreen> ÀÌ°ÍÀº RTFMÀÇ °íÀüÀûÀÎ °æ¿ì´Ù. <em>root</em>·Î¼­ ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù. <bf>cd /usr/local/lib</bf> <bf>mkdir hearts</bf> <bf>cd !$</bf> <tt>¼³Ä¡µÉ</tt> ÆÄÀϵéÀ» ÀÌ µð·ºÅ͸®¿¡ º¹»çÇÑ´Ù. <bf>cp /home/username/hearts/heartsd .</bf> <bf>cp /home/username/hearts/hearts_dist .</bf> <bf>cp /home/username/hearts/hearts.instr .</bf> <itemize> <item><bf></bf> </itemize> <em>´Ù½Ã ÇÑ ¹ø ½ÃÇè»ï¾Æ µ¹·Áº¸ÀÚ.</em> <bf>xmhearts</bf> Çѵ¿¾È µ¹¾Æ°¡´Ù°¡ <tt>dealer died!</tt> ¶ó´Â ¸Þ½ÃÁö¸¦ ³»¸ç Á״´Ù. <itemize> <item><bf></bf> </itemize> "distributor"¿Í "dealer"´Â Çϵå¿þ¾îÀÇ Æ÷Æ®µéÀ» Á¶»ç(scan)ÇÑ´Ù. µû¶ó¼­ ¿ì¸®´Â ÀÌ ÇÁ·Î±×·¥µéÀÌ rootÀÇ ±ÇÇÑÀ» ÇÊ¿ä·Î ÇÏ´ÂÁö ÀǽÉÇØ¾ß ÇÑ´Ù. <em>root</em>·Î¼­ ´ÙÀ½°ú °°ÀÌ Çغ¸ÀÚ, <bf>chmod u+s /usr/local/lib/heartsd</bf> <bf>chmod u+s /usr/local/lib/hearts_dist</bf> (¾Õ¼­ À̾߱âÇßµíÀÌ, <em>suid</em>µÈ ¹ÙÀ̳ʸ®´Â º¸¾È »óÀÇ ÇãÁ¡À» ¸¸µé ¼öµµ ÀÖ´Ù´Â °Í¿¡ ÁÖÀÇÇ϶ó.) <bf>xmhearts</bf> <em>µåµð¾î µ¹¾Æ°£´Ù!</em> <tt><em>Hearts</em>´Â <htmlurl url="ftp://metalab.unc.edu/pub/Linux/games/multiplayer/hearts.tgz" name="¼±»çÀÌÆ®">¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù.</tt> <sect>´Ù¼¸¹ø° ¿¹: XmDipmon <p> <tscreen><verb> Bullwinkle: Hey Rocky, watch me pull a rabbit out of my hat. Rocky: But that trick never works. Bullwinkle: This time for sure. Presto! Well, I'm gettin' close. Rocky: And now it's time for another special feature. --- "Rocky and His Friends" </verb></tscreen> XmDipmon Àº ÀÎÅÍ³Ý ¿¬°á »óŸ¦ º¸¿©ÁÖ´Â ¹öÆ°À» Ç¥½ÃÇÏ´Â ÀÛ°í Àç¹ÌÀÖ´Â ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ´Ù. ³°Àº ÀüÈ­¼±¿¡¼­´Â ÈçÈ÷ ¿¬°áÀÌ ²÷¾îÁö°ï Çϴµ¥, ±×·± °æ¿ì¿¡´Â ¹Ý¦°Å¸®¸é¼­ °æ°íÀ½À» ³½´Ù. ºÒÇàÈ÷µµ, XmDipmonÀº <em>dip</em> °ú¸¸ ÀÛµ¿Çϴµ¥, À̶§¹®¿¡ ÀÎÅÍ³Ý ¿¬°á¿¡ <em>chat</em>¸¦ ¾²´Â ´ëºÎºÐÀÇ »ç¶÷µé¿¡°Ô´Â ¾µ¸ð°¡ ¾ø´Ù. XmDipmon À» ÄÄÆÄÀÏÇÏ´Â °ÍÀº ¹®Á¦°¡ ¾Æ´Ï´Ù. XmDipmonÀº <em>Motif</em> ¶óÀ̺귯¸®¿¡ ¸µÅ©µÇ¾î ÀÖÁö¸¸, <em>Lesstif</em>¿Íµµ Àß ÄÄÆÄÀϵǰí Àß ½ÇÇàµÈ´Ù. À̹ø µµÀüÀº <em>chat</em>¸¦ ¾µ ¶§µµ ÀÛµ¿µÇµµ·Ï ÆÐÅ°Áö¸¦ °íÄ¡´Â °ÍÀÌ´Ù. ÀÌ ÀÛ¾÷Àº ½ÇÁ¦·Î ¼Ò½º Äڵ带 ¶«ÁúÇÏ´Â °Í±îÁö Æ÷ÇÔÇÏ°í ÀÖÀ¸¸ç, µû¶ó¼­ ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ Áö½ÄÀÌ ¾î´À Á¤µµ ÇÊ¿äÇÏ´Ù. <tscreen><verb> "½ÇÇàµÇ¸é, xmdipmon Àº /etc/dip.pid ¶ó´Â ÆÄÀÏÀ» È®ÀÎÇÑ´Ù. (-pidfile ÀÇ ¸í·ÉÇà ÀÎÀÚ¸¦ ½á¼­ ´Ù¸¥ ÆÄÀÏÀ» ãµµ·Ï ÇÒ ¼öµµ ÀÖ´Ù.) ÀÌ ÆÄÀÏÀº dip µ¥¸óÀÇ PID ¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. (dip ´Â ÀÏ´Ü ¿¬°áÀÌ ÀÌ·ç¾îÁö¸é ÀÚ½ÅÀ» µ¥¸ó ¸ðµå·Î ÀüȯÇÑ´Ù.)" --- XmDipmon README ÆÄÀϷκÎÅÍ Àοë. </verb></tscreen> <em>-pidfile</em> ¿É¼ÇÀ» ÁÖ¾î ½ÇÇàÇϸé, XmDipmonÀÌ <em>chat</em> ·Î±×ÀÎÀÌ ¼º°øÇßÀ» ¶§¿¡¸¸ Á¸ÀçÇÏ´Â ´Ù¸¥ ÆÄÀÏÀ» È®ÀÎÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù. ¸í¹éÇÑ È帴 ¸ðµ©ÀÇ lock ÆÄÀÏÀÌ´Ù. µû¶ó¼­ <bf>xmdipmon -pidfile /var/lock/LCK..ttyS3</bf> ·Î ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄÑ º¸ÀÚ. (ÀÌ ¸í·ÉÀº ¸ðµ©ÀÌ 4¹ø com Æ÷Æ®, Áï ttyS3¿¡ ÀÖ´Ù°í °¡Á¤ÇÑ °ÍÀÌ´Ù.) ÇÏÁö¸¸ ÀÌ°ÍÀº ¹®Á¦ÀÇ ÀϺθ¦ Ǭ °ÍÀÏ »ÓÀÌ´Ù. ÇÁ·Î±×·¥Àº °è¼Ó <em>dip µ¥¸ó</em>À» °¨½ÃÇϸç, µû¶ó¼­ ¿ì¸®´Â <em>dip µ¥¸ó</em> ´ë½Å <em>chat</em>³ª <em>ppp</em>¿Í °ü·ÃµÈ ÇÁ·Î¼¼½º¸¦ °¨½ÃÇϵµ·Ï ¹Ù²ã¾ß ÇÑ´Ù. ¼Ò½º ÆÄÀÏÀº Çϳª ¹Û¿¡ ¾øÀ¸¸ç, ´ÙÇàÈ÷µµ ÁÖ¼®¹®ÀÌ Àß ´Þ·ÁÀÖ´Ù. <tt>xmdipmon.c</tt> ÆÄÀÏÀ» º¸¸é, Çì´õ°¡ ¾Æ·¡¿Í °°ÀÌ µÇ¾î ÀÖ´Â <em>getProcFile</em> ÇÔ¼ö¸¦ ãÀ» ¼ö ÀÖ´Ù. <tscreen><verb> /***** * Name: getProcFile * Return Type: Boolean * Description: tries to open the /proc entry as read from the dip pid file. <snip> *****/ </verb></tscreen> °áÁ¤ÀûÀÎ ´Ü¼­´Ù. ÇÔ¼ö ³»ºÎ¸¦ ã¾Æº¸ÀÚ. <tscreen><verb> /* we watch the status of the real dip deamon */ sprintf(buf, "/proc/%i/status", pid); procfile = (String)XtMalloc(strlen(buf)*sizeof(char)+1); strcpy(procfile, buf); procfile[strlen(buf)] = '\0'; </verb></tscreen> ¹üÀÎÀº 2383° ÁÙÀÌ´Ù. <tscreen><verb> sprintf(buf, "/proc/%i/status", pid); ^^^^^^^^^^^^^^^^^^^^^ </verb></tscreen> ÀÌ ÇÔ¼ö°¡ dip µ¥¸ó ÇÁ·Î¼¼½º°¡ ½ÇÇàµÇ°í ÀÖ´ÂÁö °Ë»çÇÏ´Â °ÍÀÌ´Ù. ±×·¯¸é, ´ë½Å pppd µ¥¸óÀ» °¨½ÃÇϵµ·Ï ÇÏ·Á¸é ÀÌ ºÎºÐÀ» ¾î¶»°Ô °íÄ¡¸é µÉ±î? <em>pppd</em> ÀÇ ¸ÇÆäÀÌÁö¸¦ º¸ÀÚ. <tscreen><verb> FILES /var/run/pppn.pid (BSD or Linux), /etc/ppp/pppn.pid (others) Process-ID for pppd process on ppp interface unit n. </verb></tscreen> <tt>xmdipmon.c</tt>ÀÇ 2383° ÁÙÀ» ¾Æ·¡¿Í °°ÀÌ °íÄ¡ÀÚ. <tscreen><verb> sprintf(buf, "/var/run/ppp0.pid" ); </verb></tscreen> °íÄ£ ÆÐÅ°Áö¸¦ ´Ù½Ã ÄÄÆÄÀÏÇÏÀÚ. ¹®Á¦¾øÀÌ ÄÄÆÄÀϵȴÙ. ÀÌÁ¦ »õ·Î¿î ¸í·ÉÇà ÀÎÀÚ¸¦ ½á¼­ ½ÃÇèÇØ º¸ÀÚ. ¾Æ¸¶ ½ÅÅëÇÏ°Ô Àß ½ÇÇàµÉ °ÍÀÌ´Ù. ÀÎÅÍ³Ý ¼­ºñ½º Á¦°øÀÚ(ISP)·Î <tt>ppp</tt> ¿¬°áÀÌ ÀÌ·ç¾îÁ® ÀÖÀ» ¶§¿¡´Â ÀÛ°í ÆĶõ ¹öÆ°ÀÌ Ç¥½ÃµÇ°í, ¿¬°áÀÌ ²÷¾îÁö¸é ¹Ý¦°Å¸®¸é¼­ °æ°íÀ½À» ³½´Ù. ÀÌÁ¦ ¿ì¸®´Â ¿Ïº®ÇÏ°Ô ÀÛµ¿ÇÏ´Â <em>chat</em> ¸ð´ÏÅ͸¦ °®°Ô µÇ¾ú´Ù. XmDipmon´Â <htmlurl url="http://www.xs4all.nl/~ripley/RSD/linux.html" name="Ripley Linux Tools">¿¡¼­ ´Ù¿î¹ÞÀ» ¼ö ÀÖ´Ù. <sect>¼Ò½º ¸ðÀ½À» ãÀ» ¼ö ÀÖ´Â °÷ <p> ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ À¯Æ¿¸®Æ¼³ª ´Ù¸¥ ÇÁ·Î±×·¥µéÀ» Ãß°¡Çϱâ À§ÇØ »õ·Î ¾òÀº Áö½ÄÀ» ¾²°í ½Í´Ù¸é, ¼Ò½º ¸ðÀ½À» <url url="http://www.redhat.com/linux-info/linux-app-list/linapps.html" name="Linux Applications and Utilities Page">À̳ª <url url="http://www.redhat.com/" name="Red Hat">, <url url="http://www.infomagic.com" name="InfoMagic">, <url url="http://www.lsl.com" name="Linux Systems Labs">, <url url="http://www.cheapbytes.com" name="Cheap Bytes"> µîÀÇ ¸Å¿ì Àú·ÅÇÑ °¡°ÝÀÇ ½Ãµð·ÒÀ» ÅëÇؼ­ ±¸ÇÒ ¼ö ÀÖ´Ù. ¼Ò½º Äڵ带 Àß Á¤¸®ÇØ µÐ °÷À¸·Î´Â <htmlurl url="ftp://ftp.vix.com/pub/usenet/comp.sources.unix/" name="comp sources UNIX archive">°¡ ÀÖ´Ù. ¸¹Àº À¯´Ð½º ¼Ò½º ÄÚµåµéÀÌ <htmlurl url="news://alt.sources" name="alt.sources"> ´º½º±×·ì¿¡ °ÔÀçµÇ¾î ÀÖ´Ù. ƯÁ¤ÇÑ ÆÐÅ°ÁöÀÇ ¼Ò½º Äڵ带 ã°í ÀÖ´Ù¸é, °ü·ÃµÈ <htmlurl url="news://alt.sources.wanted" name="alt.sources.wanted"> ´º½º±×·ì¿¡ °Ô½Ã¹°À» ¿Ã¸®¸é µÈ´Ù. <htmlurl url="news://comp.os.linux.announce" name="comp.os.linux.announce"> ´º½º±×·ìµµ È®ÀÎÇØ º¼ ¸¸ÇÑ °÷ÀÌ´Ù. <htmlurl url="mailto:unix-sources@pa.dec.com" name="Unix sources"> ¸ÞÀϸµ ¸®½ºÆ®¿¡ µî·ÏÇÏ·Á¸é, <em>subscribe</em> ¸Þ½ÃÁö¸¦ º¸³»µµ·Ï Ç϶ó. <htmlurl url="news://alt.sources" name="alt.sources"> ´º½º±×·ìÀÇ °Ô½Ã¹° ¸ðÀ½Àº ´ÙÀ½ÀÇ ftp »çÀÌÆ®¿¡ ÀÖ´Ù. <itemize> <item><htmlurl url="ftp://ftp.sterling.com/usenet/alt.sources/" name="ftp.sterling.com/usenet/alt.sources/"> <item><htmlurl url="ftp://wuarchive.wustl.edu/usenet/alt.sources/articles" name="wuarchive.wustl.edu/usenet/alt.sources/articles"> <item><htmlurl url="ftp://src.doc.ic.ac.uk/usenet/alt.sources/articles" name="src.doc.ic.ac.uk/usenet/alt.sources/articles"> </itemize> <sect>¸¶Áö¸· À̾߱â <p> ÇÑ ¸¶µð·Î, °íÁýÀÌ ¸ðµç Â÷À̸¦ ¸¸µå´Â °ÍÀÌ´Ù. (±×¸®°í Æ÷±âÇÒ ¼±À» ³ôÀÌ µÎ´Â °ÍÀÌ Æ²¸²¾øÀÌ µµ¿òÀÌ µÈ´Ù.) ¸ðµç µµÀüÀÌ ±×·¸µíÀÌ, ½Ç¼ö·ÎºÎÅÍ ¹è¿ì´Â °ÍÀÌ Áö±ØÈ÷ Áß¿äÇÏ´Ù. °¢°¢ÀÇ ½Ç¼ö, ¸ðµç ½ÇÆа¡ <bf>¼ÒÇÁÆ®¿þ¾î ¼³Ä¡ ±â¼ú</bf>ÀÇ ´ÞÀÎÀÌ µÇ±â À§ÇØ ÇÊ¿äÇÑ Áö½ÄÀ» ´õÇØ ÁÙ °ÍÀÌ´Ù. <sect>Âü°í ¹®Çå°ú ´õ ÀÐÀ» ²¨¸®<label id="refs"> <p> <tscreen><verb> BORLAND C++ TOOLS AND UTILITIES GUIDE, Borland International, 1992, pp. 9-42. [º¼·£µå C++ 3.1 ¹öÁ¯°ú ÇÔ²² ¹èÆ÷µÈ ¸Å´º¾ó ÁßÀÇ Çϳª. µµ½º¸¦ À§ÇØ Àý¸§¹ßÀÌ·Î ±¸ÇöµÈ º¼·£µå C++À» ÀÌ¿ëÇÏ¿©, ±¸¹®(syntax)°ú °³³ä ÀÛ¼º¿¡ ´ëÇØ »ó´çÈ÷ ÁÁÀº ¼Ò°³¸¦ Á¦°øÇÑ´Ù.] DuBois, Paul: SOFTWARE PORTABILITY WITH IMAKE, O'Reilly and Associates, 1996, ISBN 1-56592-226-3. [³ª´Â ÀÌ ±ÛÀ» ¿Ï¼ºÇϵµ·Ï Àо ÀûÀÌ ¾ø¾úÁö¸¸, imake ·¹ÆÛ·±½ºÀÇ °áÁ¤ÆÇÀ̶ó´Â ÆòÆÇÀÌ´Ù.] Frisch, Aeleen: ESSENTIAL SYSTEM ADMINISTRATION (2nd ed.), O'Reilly and Associates, 1995, ISBN 1-56592-127-5. [°¢º°È÷ Ź¿ùÇÑ ½Ã½ºÅÛ °ü¸® ÇÚµåºÏÀÌÁö¸¸, ¼ÒÇÁÆ®¿þ¾î ¼³Ä¡¿¡ ´ëÇؼ­´Â °£´ÜÇÑ ½ºÄÉÄ¡ Á¤µµ ¸¸À¸·Î ´Ù·ç°í ÀÖ´Ù.] Hekman, Jessica: LINUX IN A NUTSHELL, O'Reilly and Associates, 1997, ISBN 1-56592-167-4. [¸®´ª½º ¸í·É¾î Àü¹Ý¿¡ ´ëÇÑ ÈǸ¢ÇÑ ·¹ÆÛ·±½º.] Lehey, Greg: PORTING UNIX SOFTWARE, O'Reilly and Associates, 1995, ISBN 1-56592-126-7. Mayer, Herbert G.: ADVANCED C PROGRAMMING ON THE IBM PC, Windcrest Books, 1989, ISBN 0-8306-9363-7. [°í±Þ C ÇÁ·Î±×·¡¸Ó¶ó¸é Áï°¢ ÀÀ¿ëÇÒ ¼ö ÀÖ´Â ¾ÆÀ̵ð¾î·Î °¡µæÇÑ Ã¥. ¾Ë°í¸®Áò¿¡ ´ëÇÑ Å¹¿ùÇÑ Çؼ³, ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ ´ëÇÑ Ç³ÀÚ, Àç¹Ì. ¾ÈŸ±õ¸¸ ÀýÆÇÀÌ´Ù.] Mui, Linda and Valerie Quercia: X USER TOOLS, O'Reilly and Associates, 1994, ISBN 1-56592-019-8, pp. 734-760. Oram, Andrew and Steve Talbott: MANAGING PROJECTS WITH MAKE, O'Reilly and Associates, 1991, ISBN 0-937175-90-0. Peek, Jerry and Tim O'Reilly and Mike Loukides: UNIX POWER TOOLS, O'Reilly and Associates / Random House, 1997, ISBN 1-56592-260-3. [ȯ»óÀûÀÎ ¾ÆÀ̵ð¾îÀÇ ¿øõ. ±×¸®°í ÀÌ ±Û¿¡¼­ ¼³¸íµÈ ¹æ¹ýÀ» ½á¼­ ¼Ò½º ÄÚµå·ÎºÎÅÍ ¼³Ä¡ÇÒ ¼ö ÀÖ´Â À¯Æ¿¸®Æ¼°¡ Àܶà ÀÖ´Ù.] Stallman, Richard M. and Roland McGrath: GNU MAKE, Free Software Foundation, 1995, ISBN 1-882114-78-7. [Àеµ·Ï ¿ä±¸µÇ´Â ±Û.] Waite, Mitchell, Stephen Prata, and Donald Martin: C PRIMER PLUS, Waite Group Press, ISBN 0-672-22090-3,. [¾Æ¸¶µµ C ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ÃÖ°íÀÇ ÀÔ¹®¼­. Ãʺ¸ÀÚ¸¦ À§ÇÑ ÀÚ¼¼ÇÑ Çؼ³. »õ·Î¿î Æǵµ Áö±Ý ±¸ÇÒ ¼ö ÀÖ´Ù.] Welsh, Matt and Lar Kaufman: RUNNING LINUX, O'Reilly and Associates, 1996, ISBN 1-56592-151-8. [¸î¸î ºÐ¾ß¿¡¼­´Â ±íÀÌ°¡ ºÎÁ·ÇÏÁö¸¸, ¿©ÀüÈ÷ ¸®´ª½º Àü¹Ý¿¡ ´ëÇÑ ÃÖ°íÀÇ ·¹ÆÛ·±½º.] dpkg, gcc, gzip, imake, ldconfig, ldd, make, nm, patch, rpm, shar, strip, tar, termcap, terminfo, xmkmfÀÇ ¸Ç ÆäÀÌÁö. David FetterÀÇ BZIP2 HOWTO. Eric GreenÀÇ Glibc2 HOWTO. Daniel BarlowÀÇ LINUX ELF HOWTO. Donnie BarnesÀÇ RPM HOWTO. Matthew BorowskiÀÇ StarOffice miniHOWTO. </verb></tscreen> [ÀÌ HOWTOµéÀº ´ç½Å ½Ã½ºÅÛÀÇ <tt>/usr/doc/HOWTO</tt>³ª <tt>/usr/doc/HOWTO/mini</tt> µð·ºÅ͸®¿¡ ÀÖÀ» °ÍÀÌ´Ù. ÅؽºÆ®, HTML, SGML Æ÷¸ËÀÇ °³Á¤ ¹öÁ¯µéÀº <url url="http://metalab.unc.edu/LDP/HOWTO" name="LDP »çÀÌÆ®"> ¹× ÇØ´ç ÀúÀÚÀÇ È¨ ÆäÀÌÁö¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù.] <sect>°¨»çÀÇ ±Û <p> ÀÌ HOWTO ÀÇ ÀúÀÚ´Â ¾Æ·¡ÀÇ »ç¶÷µéÀÌ º¸³»ÁØ Á¦¾È°ú ¼öÁ¤, °Ý·Á¿¡ ´ëÇØ °¨»çÇÑ´Ù. <itemize> <item>R. Brock Lynn <item>Michael Jenner <item>Fabrizio Stefani </itemize> ÀÌ HOWTO ¸¦ ÀÌÅ»¸®¾Æ¾î¿Í ÀϺ»¾î·Î ¹ø¿ªÇÑ ÁÁÀº Ä£±¸µé¿¡°Ôµµ ¿ª½Ã ¿µ¿¹¸¦ µ¹¸°´Ù. ±×¸®°í ¹°·Ð <url url="http://metalab.unc.edu/LDP/" name="Linux Documentation Project">ÀÇ Greg Hankins ¿Í Tim Bynum ¿¡°Ôµµ °¨»ç¿Í Âù¾ç°ú ÃູÀ» º¸³½´Ù. LDP°¡ ÀÌ ¸ðµç °ÍÀ» °¡´ÉÇÏ°Ô Ç߱⠶§¹®ÀÌ´Ù. </article>