★ make 重編程式 ★

  一、基礎版
  二、進階版


    本文件是寫給要安裝 itoc 所維護的 bbs 程式版本所使用的,並不適用
  其他 bbs 版本。

    這篇是說明在改完程式以後,怎麼掛上新程式的方法。

    [~bbs/src] -bbs- % abcdefg  表示是用 bbs 身分,在 ~bbs/src 執行 abcdefg
    [~bbs/src] -root- # abcdefg  表示是用 root 身分,在 ~bbs/src 執行 abcdefg

    假設作業系統是 freebsd,如果是 linux 就把 make freebsd 換成 make linux

    把握進階版的原則,就可以盡量少 reboot,也不需要關 bbs 站。

  
  一、基礎版

   +如果是改了 *.c 的話  (src/lib/*.c 除外)

     [~bbs/src] -bbs- % make freebsd install
     [anywhere] -root- # reboot 或 shutdown -r now

   +如果是改了 src/lib/*.c 或 src/include/*.h 的話

     [~bbs/src] -bbs- % make clean freebsd install
     [anywhere] -root- # reboot 或 shutdown -r now

  
  二、進階版

   +如果是改了 src/lib/*.c 的話

     把所有的人都踢下站,換新的程式

     [~bbs/src] -bbs- % make clean freebsd install
     [~bbs/src/sh] -bbs- % ./killbbs.sh
     [~bbs/bin] -bbs- % ./account
     [~bbs/bin] -bbs- % ./camera

     倘若是 Linux 的話,請再執行

     [anywhere] -bbs- % ipcrm shm 1998
     [anywhere] -bbs- % ipcrm shm 2997
     [anywhere] -bbs- % ipcrm shm 2999

   +如果是改了 src/so/*.c 的話

     以 xyz.c 為例,其他也是一樣

     [~bbs/src/so] -bbs- % make freebsd
     [~bbs/src/so] -bbs- % cp xyz.so ~/bin/

     若把 沒變動.so 也 install 到 ~/bin/ 會造成線上正在使用這
     外掛功能的人可能斷線。

   +如果是改了 src/util/*.c src/util/*/*.c 的話

     [~bbs/src/util] -bbs- % make freebsd install

     若是改 account.c camera.c 還要多執行一步
     [~bbs/bin] -bbs- % ./account           (倘若改的是 src/util/account.c)
     [~bbs/bin] -bbs- % ./camera            (倘若改的是 src/util/camera.c)

   +如果是改了 src/bgopherd/*.c 或 src/bmtad/*.c 或 src/bpop3d/*.c 或
    src/innbbsd/*.c 或 src/maple/*.c

     [~bbs/src/xxxx] -bbs- % make freebsd install update

     就是在那目錄下 make freebsd install update

     若是沒有跑 inetd 或 xinetd,那麼還要多執行一步
     [~bbs/bin] -root- # ./gemd             (倘若改的是 src/bgopherd/*.c)
     [~bbs/bin] -root- # ./bmtad            (倘若改的是 src/bmtad/*.c)
     [~bbs/bin] -root- # ./bpop3d           (倘若改的是 src/bpop3d/*.c)
     [~bbs/innd] -root- # ./innbbsd         (倘若改的是 src/innbbsd/*.c)
     [~bbs/bin] -root- # ./xchatd           (倘若改的是 src/maple/xchatd.c)
     [~bbs/bin] -root- # ./bguard           (倘若改的是 src/maple/bguard.c)
     [~bbs/bin] -root- # ./bbsd             (倘若改的是 src/maple/其他 *.c)

   +如果是改了 src/include/*.h  (改變了 struct)

     倘若有動到 struct.c 中的 struct ACCT UTMP UCACHE BCACHE FCACHE
     其中的任何一項,(例如改 PAL_MAX 會動到 UTMP;改 MAXACTIVE 會動到 UCACHE)
     都得踢掉站上所有使用者,並重開所有服務,乾脆 reboot 好了

     [anywhere] -root- # reboot 或 shutdown -r now

   +如果是改了 src/include/*.h  (沒異動 struct)

     倘若沒有動到 ACCT UTMP UCACHE BCACHE FCACHE,那麼就只要
     看被改的那項被哪些程式 include 了,然後重編那些程式即可,
     這樣可以省下很多時間。

     例如 config.h:HOST_ALIASES 對應到 mail.c bmtad.c
     那麼就等效上改了這 mail.c bmtad.c,所以要

     [~bbs/src/maple] -bbs- % rm mail.o
     [~bbs/src/maple] -bbs- % make freebsd install update
     [~bbs/src/bmtad] -bbs- % rm bmtad.o
     [~bbs/src/bmtad] -bbs- % make freebsd install update

--
                                                    交大電子 杜宇軒
                               E-Mail: itoc.bbs@bbs.tnfsh.tn.edu.tw
                           WWW: http://home.pchome.com.tw/soho/itoc