Previous: Standard Targets, Up: Makefile Conventions   [Contents]


7.2.6 ¥¤¥ó¥¹¥È¡¼¥ë¤Î¥³¥Þ¥ó¥É¤ÎÉôÎà

install¥¿¡¼¥²¥Ã¥È¤ò½ñ¤¯¤È¤­¡¢»°¤Ä¤ÎÉôÎà¤Ë¤½¤Î¥³¥Þ¥ó¥ÉÁ´¤Æ¤òʬÎष ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ÉáÄ̤Τâ¤Î¤È¡¢pre-installation¥³¥Þ¥ó¥É¤È¡¢ post-installation¥³¥Þ¥ó¥É¤Ë¡£

ÉáÄ̤Υ³¥Þ¥ó¥É¤ÏŬÀڤʾì½ê¤Ë¥Õ¥¡¥¤¥ë¤ò°Üư¤·¡¢¤½¤ì¤é¤Î¥â¡¼¥É¤òÀßÄꤹ¤ë¡£ ¤½¤ì¤é¤Ï¤É¤ó¤Ê¥Õ¥¡¥¤¥ë¤â¡¢´°Á´¤Ë¤½¤ì¤é¤¬Â°¤¹¤ë¥Ñ¥Ã¥±¡¼¥¸¤«¤é¼ê¤ËÆþ¤ë¤â¤Î ¤ò½ü¤¤¤Æ¡¢ÊѲ½¤µ¤»¤Ê¤¤¤Î¤¬Îɤ¤¡£

pre-installation¤Èpost-installation¤Î¥³¥Þ¥ó¥É¤Ï¾¤Î¥Õ¥¡¥¤¥ë¤òÊѤ¨¤Æ¤âÎÉ ¤¤¡£ÆÃ¤Ë¡¢¤½¤ì¤é¤ÏÂç°èŪ¤ÊÀßÄê¥Õ¥¡¥¤¥ë¤ä¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÊÔ½¸¤·¤ÆÎɤ¤¡£

pre-installation¥³¥Þ¥ó¥É¤Ïŵ·¿Åª¤Ë¤ÏÉáÄ̤Υ³¥Þ¥ó¥É¤ÎÁ°¤Ë¼Â¹Ô¤µ¤ì¡¢ post-installation¥³¥Þ¥ó¥É¤Ïŵ·¿Åª¤Ë¤ÏÉáÄ̤Υ³¥Þ¥ó¥É¤Î¸å¤ËÁö¤é¤µ¤ì¤ë¡£

post-installation¥³¥Þ¥ó¥É¤ÎºÇ¤âÉáÄ̤ÎÍøÍѤÏinstall-info¤òÁö¤é¤»¤ë ¤³¤È¤Ç¤¢¤ë¡£¤³¤ì¤ÏÉáÄ̤Υ³¥Þ¥ó¥É¤Ç¤Ï¹Ô¤ï¤ìÆÀ¤Ê¤¤¡£¤½¤ì¤Ï¡¢´°Á´¤Ë¤Ï¡¢¤½¤· ¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¥Ñ¥Ã¥±¡¼¥¸¤À¤±¤«¤é¤Ï¼ê¤ËÆþ¤é¤Ê¤¤¥Õ¥¡¥¤¥ë(Info¥Ç¥£¥ì ¥¯¥È¥ê)¤òÊѲ½¤µ¤»¤ë¡£¤½¤ì¤Ï¥Ñ¥Ã¥±¡¼¥¸¤ÎInfo¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëÉá Ä̤Υ³¥Þ¥ó¥É¤Î¸å¤Ë¹Ô¤ï¤ì¤ëɬÍפ¬¤¢¤ë¤Î¤Çpost-installation¥³¥Þ¥ó¥É¤Ç¤¢¤ë¡£

¤Û¤È¤ó¤É¤Î¥×¥í¥°¥é¥à¤Ïpre-installation¥³¥Þ¥ó¥É¤òɬÍפȤ·¤Ê¤¤¤¬¡¢²æ¡¹¤Ï¤½ ¤ì¤¬É¬ÍפȤµ¤ì¤ë¾ì¹ç¤Ë¤À¤±¤½¤Îµ¡Ç½¤ò»ý¤Ä¡£

installµ¬Â§¤Î¥³¥Þ¥ó¥É¤ò¤³¤ì¤é»°¤Ä¤ÎÉôÎà¤ËʬÎह¤ë¤¿¤á¤Ë¡¢¤½¤ì¤é¤Î Ãæ¤ËÉôÎà¹Ô¤òÁÞÆþ¤·¤Ê¤µ¤¤¡£ÉôÎà¹Ô¤Ï¼¡¤Î¥³¥Þ¥ó¥É¤ÎÉôÎà¤ò»ØÄꤹ¤ë¡£

ÉôÎà¹Ô¤Ï¥¿¥Ö¤ÈÆÃÊ̤ÊMakeÊÑ¿ô¤Ø¤Î»²¾È¤Ë²Ã¤¨¤Æ¡¢ºÇ¸å¤ËÉÕ²ÃŪ¤Ê¥³¥á¥ó¥È¤«¤é À®¤ë¡£¤½¤ì¤¾¤ì¤ÎÉôÎà¤ËÂФ·¤Æ°ì¤Ä¡¢»È¤¦¤³¤È¤¬¤Ç¤­¤ë»°¤Ä¤ÎÊÑ¿ô¤¬¤¢¤ë¡£ÊÑ¿ô ̾¤ÏÉôÎà¤ò»ØÄꤹ¤ë¡£ÉôÎà¹Ô¤Ï¡¢¤³¤ì¤é»°¤Ä¤ÎMakeÊÑ¿ô¤ÏÉáÄÌ̤ÄêµÁ(¤½¤·¤Æ¡¢ ¤½¤ì¤é¤òmakefile¤ÇÄêµÁ¤¹¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤)¤Î¤Ç¡¢ÉáÄ̤μ¹ԤǤϲ¿¤â¹Ô ¤ï¤Ê¤¤¡£

¤³¤³¤Ç¡¢¤½¤ì¤¾¤ì¤½¤ì¤¬²¿¤ò°ÕÌ£¤¹¤ë¤Î¤«ÀâÌÀ¤¹¤ë¥³¥á¥ó¥È¤È¶¦¤Ë¡¢¤½¤Î»°¤Ä¤Î ¤¢¤êÆÀ¤ëÉôÎà¹Ô¤òµó¤²¤ë¡£

        $(PRE_INSTALL)     # Pre-install commands follow.
        $(POST_INSTALL)    # Post-install commands follow.
        $(NORMAL_INSTALL)  # Normal commands follow.

¤â¤·installµ¬Â§¤Î»Ï¤á¤ËÉôÎà¹Ô¤ò»È¤ï¤Ê¤¤¤Ê¤é¡¢Á´¤Æ¤Î¥³¥Þ¥ó¥É¤Ï¡¢ºÇ ½é¤ÎÉôÎà¹Ô¤Þ¤ÇÉáÄ̤Τâ¤Î¤ÈʬÎव¤ì¤ë¡£¤â¤·¤É¤ÎÉôÎà¹Ô¤â»È¤ï¤Ê¤¤¤Ê¤é¡¢Á´¤Æ ¤Î¥³¥Þ¥ó¥É¤ÏÉáÄ̤Τâ¤Î¤ÈʬÎव¤ì¤ë¡£

¤³¤ì¤é¤Ïuninstall¤Î¤¿¤á¤ÎÉôÎà¹Ô¤Ç¤¢¤ë¡£

        $(PRE_UNINSTALL)     # Pre-uninstall commands follow.
        $(POST_UNINSTALL)    # Post-uninstall commands follow.
        $(NORMAL_UNINSTALL)  # Normal commands follow.

ŵ·¿Åª¤Ë¤Ï¡¢pre-uninstall¥³¥Þ¥ó¥É¤ÏInfo¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¹àÌܤòºï½ü¤¹¤ë¤¿ ¤á¤Ë»È¤ï¤ì¤ë¤À¤í¤¦¡£

¤â¤·install¤äuninstall¥¿¡¼¥²¥Ã¥È¤¬¥¤¥ó¥¹¥È¡¼¥ë¤Î¥µ¥Ö¥ë¡¼¥Á ¥ó¤È¤·¤Æ¿¶¤ëÉñ¤¦°Í¸´Ø·¸¤ò»ý¤Ä¤Ê¤é¡¢¤½¤ì¤¾¤ì¤Î°Í¸´Ø·¸¤Î¥³¥Þ¥ó¥É ¤òÉôÎà¹Ô¤Ç»Ï¤á¤ë¤Ù¤­¤Ç¡¢¼çÍפʥ¿¡¼¥²¥Ã¥È¤Î¥³¥Þ¥ó¥É¤âÉôÎà¹Ô¤Ç»Ï¤á¤ë¤Ù¤­¤À¡£ ¤³¤¦¤·¤Æ¡¢¤½¤ì¤¾¤ì¤Î¥³¥Þ¥ó¥É¤¬¡¢°Í¸´Ø·¸¤Î¤½¤ì¤¬¼ÂºÝ¤ËÁö¤ë¤«¤É¤¦¤«¤Ë´Ø·¸ ¤Ê¤¯¡¢Àµ¤·¤¤ÉôÎà¤Ë°ÌÃÖ¤¹¤ë¤è¤¦¤ËÊݾڤǤ­¤ë¡£

pre-installation¤Èpost-installation¤Î¥³¥Þ¥ó¥É¤Ï¤³¤ì¤é°Ê³°¤Î¥×¥í¥°¥é¥à¤ò Áö¤é¤»¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£

[ basename bash cat chgrp chmod chown cmp cp dd diff echo
egrep expand expr false fgrep find getopt grep gunzip gzip
hostname install install-info kill ldconfig ln ls md5sum
mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee
test touch true uname xargs yes

¤³¤ÎÊýË¡¤Ç¥³¥Þ¥ó¥É¤ò¶èÊ̤¹¤ëÍýͳ¤Ï¥Ð¥¤¥Ê¥ê¡¦¥Ñ¥Ã¥±¡¼¥¸¤òºî¤ë¤¿¤á¤Ç¤¢¤ë¡£ ŵ·¿Åª¤Ë¤Ï¥Ð¥¤¥Ê¥ê¡¦¥Ñ¥Ã¥±¡¼¥¸¤ÏÁ´¤Æ¤Î¼Â¹Ô¥Õ¥¡¥¤¥ë¤È¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ëɬ Íפ¬¤¢¤ë¾¤Î¥Õ¥¡¥¤¥ë¤ò´Þ¤ß¡¢¤½¤ì¤é¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¡¢¤½¤ì¼«¿È¤ÎÊýË¡¤ò»ý ¤Ä—¤À¤«¤é¡¢¤½¤ì¤ÏÉáÄ̤Υ¤¥ó¥¹¥È¡¼¥ë¤Î¥³¥Þ¥ó¥É¤òÁö¤é¤»¤ëɬÍפ¬¤Ê¤¤¡£¤· ¤«¤·¡¢¥Ð¥¤¥Ê¥ê¡¦¥Ñ¥Ã¥±¡¼¥¸¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤Ïpre-installation¤È post-installation¤Î¥³¥Þ¥ó¥É¤òÁö¤é¤»¤ë¤³¤È¤òɬÍפȤ¹¤ë¡£

¥Ð¥¤¥Ê¥ê¡¦¥Ñ¥Ã¥±¡¼¥¸¤ò¹½ÃÛ¤¹¤ë¤¿¤á¤Î¥×¥í¥°¥é¥à¤Ïpre-installation¤È post-installation¤Î¥³¥Þ¥ó¥É¤òÈ´¿è¤¹¤ë¤³¤È¤Ë¤è¤Ã¤ÆÆ¯¤¯¡£¤³¤³¤Ç pre-installation¥³¥Þ¥ó¥É¤òÈ´¿è¤¹¤ë°ì¤Ä¤ÎÊýË¡¤ò¼¨¤¹¡£

make -n install -o all \
      PRE_INSTALL=pre-install \
      POST_INSTALL=post-install \
      NORMAL_INSTALL=normal-install \
  | gawk -f pre-install.awk

¤³¤³¤Çpre-install.awk¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ï¼¡¤Î¤â¤Î¤ò´Þ¤à¡£

$0 ~ /^\t[ \t]*(normal_install|post_install)[ \t]*$/ {on = 0}
on {print $0}
$0 ~ /^\t[ \t]*pre_install[ \t]*$/ {on = 1}

pre-installation¥³¥Þ¥ó¥É¤Î·ë²ÌÀ¸¤¸¤ë¥Õ¥¡¥¤¥ë¤Ï¥Ð¥¤¥Ê¥ê¡¦¥Ñ¥Ã¥±¡¼¥¸¤ò¥¤¥ó ¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤Î°ìÉô¤È¤·¤Æ¡¢¥·¥§¥ë¡¦¥¹¥¯¥ê¥×¥È¤È¤·¤Æ¼Â¹Ô¤µ¤ì¤ë¡£