FreeBSD QandA 1683

FreeBSD QandA

Q. Kerberos (ケルベロス) をアンインストールするにはどうしたらいいですか。

A. 2 つの方法があります。

   A1. /stand/sysinstall を使って bin をインストールし直す。

     FreeBSD FAQ「Q: Kerberos をアンインストールするにはどうすればいいの?」
       <URL:http://www.jp.FreeBSD.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/faq/admin.html>
     に書かれている方法で、これが一番簡単です。ただし、これをやると、/etc
     のファイルなども最初の状態に戻ってしまう恐れがありますし、DES をインス
     トールしていた場合はそれもいくつかのファイルが元に戻ってしまいます。

   A2. Kerberos によって置き換えられてしまったファイルを、bin, proflibs
       配布ファイルから復元する。

     例えば次のようにするといいでしょう。なお、$CDROM は FreeBSD の配布ディ
     レクトリを指定しておきます。

     1) ルートディレクトリに移動します。
       # cd /

     2) Kerberos の配布ファイルに含まれるファイルのリストを作ります。
       [3.5-RELEASE まで]
       # cat $CDROM/des/krb.?? | tar ztf - | sort > /tmp/ttt

       [4.0-RELEASE から]
       # cat $CDROM/crypto/krb4.?? | tar ztf - > /tmp/ttt1
       # cat $CDROM/crypto/krb5.?? | tar ztf - >> /tmp/ttt1
       # sort /tmp/ttt1 | uniq > /tmp/ttt

     3) 元のファイルを配布ファイルから展開します。
       # chflags noschg `cat /tmp/ttt`
       # cat $CDROM/bin/bin.?? | tar --unlink -zxvpf - `cat /tmp/ttt` > /tmp/yyy
       # cat $CDROM/proflibs/proflibs.?? | tar --unlink -zxvpf - `cat /tmp/ttt` >> /tmp/yyy
       # cat $CDROM/manpages/manpages.?? | tar --unlink -zxvpf - `cat /tmp/ttt` >> /tmp/yyy

       [4.0-RELEASE から追加]
       # cat $CDROM/crypto/crypto.?? | tar --unlink -zxvpf - `cat /tmp/ttt` >> /tmp/yyy

     4) 残ったゴミを片付けますが、念のためどのファイルが削除
        されるか確認してください。
          # comm -3 /tmp/ttt /tmp/yyy1

     5) 確認できたら、削除します。
          # rm -f `comm -3 /tmp/ttt /tmp/yyy1`

   おまけとして、上記の作業を自動化するスクリプトを添付します。使用に
   際しては自己責任でお願いします。

   なお、この作業は /etc や /bin などを直接いじる作業になりますので、
   本質的に危険です。tar の仕様変更により、実際に被害が出た例もあり
   ます [FreeBSD-users-jp 74025] (以下のスクリプトでは修正済みです)。

   ----ここから----
   #!/bin/sh
   # Example:
   #  # cd /
   #  # sh ./uninstall_kerberos /proj/ftp/FreeBSD/4.2-RELEASE
   # Please use *at your own risk*

   CDROM=/cdrom
   [ "$1" != "" ] && CDROM=$1

   KRB=/tmp/krb.list
   KRB1=/tmp/krb1.list
   ORG=/tmp/org.list
   ORG1=/tmp/org1.list
   DEL=/tmp/del.list

   CRYPTO=
   echo 'Make a list of kerberos binaries.'
   if [ -d $CDROM/crypto ]; then
     CRYPTO=crypto
     cat $CDROM/crypto/krb4.?? | tar ztf - > $KRB
     cat $CDROM/crypto/krb5.?? | tar ztf - >> $KRB
   elif [ -d $CDROM/des ]; then
     cat $CDROM/des/krb.?? | tar ztf - > $KRB
   else
     echo "$CDROM: No such kerberos distribution files." 1>&2
     exit 1
   fi
   sort $KRB | uniq > $KRB1

   echo -n 'Restore files from distribution files:'
   rm -f $ORG
   chflags noschg `cat $KRB1`
   for i in bin proflibs manpages $CRYPTO
   do
     echo -n " $i"
     cat $CDROM/$i/$i.?? | tar --unlink -zxvpf - `cat $KRB1` >> $ORG 2> /dev/null
   done
   echo "."

   echo 'Cleanup all garbage.'

   sort $ORG | uniq | sed '/\/$/d' > $ORG1
   comm -3 $KRB1 $ORG1 > $DEL
   less $DEL
   read -p "Would you like to delete these files now? y or n [n]" YES_NO
   case "${YES_NO}" in
   y)
     rm -f `cat $DEL`
     rm -f $DEL
     ;;
   *)
     echo "Make sure to run rm -f `cat $DEL` yourself"
     ;;
   esac
    :
   ----ここまで----

同一グループへのリンク

グループ名: des


間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。