pythonを削除してひどい目にあった話

ことの起こりは Ubuntu7.10に GNU Mailmanをインストールしようとしたときのことでした。
ここ(→ GNU Mailman - インストールマニュアル )はもちろんのこと、参考にさせていただいたここ(→ http://infolinux.jp/?p=15 )でもソースからインストールしているので、なんの疑いもなく最新版ソースをとってきて、make installしたわけですが、途中、「pthon-develがないよ。pythonをソースからコンパイルしなおすと直るかもよ」(意訳)というメッセージが出たわけです。
じゃあ、そうするかと、pythonの最新版をとってきて自分環境でコンパイルして、/usr/binの pythonをリネームしてシンボリックリンクを張り直してみたんですが、事態は全然変わらず。
「これはきっと前の python環境が残ってて悪さしてるんだな。じゃあ、前の pythonを purgeしてから最新版を入れ直せばいいんじゃね。ナイスアイディア!、グッドアイディア!」って、悪さしてるのは自分の頭だということに気づかないくらいてんぱってたんでしょうね。

pythonは削除しちゃいけない!

The following packages will be REMOVED:

alsa-utils*
command-not-found*
sdovecot-common*
dovecot-imapd*
dovecot-pop3d*

lsb-release*
mailman*
openssl-blacklist*
postfix*
postfix-pcre*

python*
python-apt*
   :
   :

0 upgraded, 0 newly installed, 19 to remove and 0 not upgraded.

「s apt-get purge python」しようとしたとき、こういうメッセージが出てたはずなんです。「dovecot」も「postfix」も削除しちゃいますよって。でも、Y、Y、Y、ってやっちゃったんですよね。

pythonを削除すると

dovecot」や「postfix」が消えるのはもちろんのこと、削除されたモジュールによって削除時にpythonを必要とするものもあるので、「apt-get upgrade」も失敗するようになります。
pythonを入れてから「apt-get upgrade」すればいいようなものですが、「apt-get install python」で入るのは、/usr/bin/python2.5
なので、/usr/bin/pythonシンボリックリンクを張ってやらないと事態は好転しません。(これに気がつくのに3時間くらいかかりました。馬鹿です)

やったことの記録

今後の戒めとして作業記録をさらしておきます。誰の参考にもならないかもしれませんが。

  616  python pythonのバージョン確認をやってます
  619  gcc --version gccのバージョン確認も
  620  s groupadd mailman mailmanのグループを作成
  627  s useradd -g mailman -s /bin/false -d /usr/local/mailman mailman mailmanのユーザを
追加
  629  s chown mailman:mailman /usr/local/mailman ← オナー変更
  632  id -a mailman
  633  s mkdir /usr/local/mailman
  634  s chown mailman:mailman /usr/local/mailman
  635  s chmod 02775 /usr/local/mailman ← ユーザディレクトリのパーミッション変更
  637  wget http://mm.tkikuchi.net/mailman-2.1.11.tgz mailman本体のダウンロード
  638  wget http://mm.tkikuchi.net/mailman.po ← 日本語ファイルをゲット
  642  cp -v mailman.po mailman-2.1.11/messages/ja/LC_MESSAGES/ ← 日本語ファイルをコピー
  643  cd mailman-2.1.11/
  644  ./configure --with-cgi-gid=www-data --with-mail-gid=mailman --prefix=/usr/local/mailman --with-mailhost=mail.5-55.jp --with-urlhost=5-55.jp ← ./configureしてます
ここでエラーが出たため、pythonを疑うことになります。
  647  s apt-get install python python-devel ← いろいろやってます
  650  s aptitude install python ← まだやってます
  651  ./configure --with-cgi-gid=www-data --with-mail-gid=mailman --prefix=/usr/local/mailman --with-mailhost=mail.5-55.jp --with-urlhost=5-55.jp
やっぱりまだダメです。
  652  s aptitude install python-tk ← これか?
  653  ./configure --with-cgi-gid=www-data --with-mail-gid=mailman --prefix=/usr/local/mailman --with-mailhost=mail.5-55.jp --with-urlhost=5-55.jp
  654  sudo aptitude install  zlib1g-dev ← これか?
  657  wget http://www.python.org/ftp/python/2.5.4/Python-2.5.4.tgz ← いよいよ最新版pythonへ突入
  659  tar zxvf Python-2.5.4.tgz
  660  cd Python-2.5.4/
  661  ./configure --prefix=/home/mam
  662  make
  663  s make install ← インストールしちゃいました
  664  python
  665  s find / -name python* ← 疑ってます
  667  which python
  668  s mv -v /usr/bin/python /usr/bin/python251 ← 元々のpythonを逃がしたつもり
  669  /home/mam/bin/python
  670  s cp -v /home/mam/bin/python /usr/bin/ シンボリックリンクを張らずにコピーしてます
  671  python
  673  cd mailman-2.1.11/
  675  ./configure --with-cgi-gid=www-data --with-mail-gid=mailman --prefix=/usr/local/mailman --with-mailhost=mail.5-55.jp --with-urlhost=5-55.jp
やっぱりダメー!
  676  s aptitude install python2.5-dev ← まだがんばるか?
  677  ./configure --with-cgi-gid=www-data --with-mail-gid=mailman --prefix=/usr/local/mailman --with-mailhost=mail.5-55.jp --with-urlhost=5-55.jp
ダメ、ダメー!
  682  s aptitude install mailman ← 今度は mailmanを疑ってる模様
  683  sudo dpkg-reconfigure mailman ← ダメだって
  684  export LANG=C
  686  sudo check_perms -f
  687  cd Python-2.5.4/
  688  sudo aptitude install  zlib1g-dev
  689  ./configure
  690  make
  696  s aptitude purge python-tk ← いよいよ pythonを消しにかかります
  697  make
  698  ./configure --prefix=/home/mam
  699  make
  700  cd ..
  701  wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz ← もっかい取り直して
  702  tar zxvf Python-2.5.2.tgz
  703  cd Python-2.5.2
  704  ./configure --prefix=/home/mam
  705  make
  706  s make install
  707  python
  708  which python
  709  /home/mam/bin/python
  710  /home/mam/bin/python2.5
  712  s mv -v /usr/bin/python /usr/bin/python254
  713  s cp -v /home/mam/bin/python /usr/bin/ ← いまのやつをコピー
  714  python
  717  rm -r mailman-2.1.11 mailmanをもう1回
  719  tar xvzf mailman-2.1.11.tgz
  724  cp -v mailman.po mailman-2.1.11/messages/ja/LC_MESSAGES/
  725  cd mailman-2.1.11/
  727  ./configure --with-cgi-gid=www-data --with-mail-gid=mailman --prefix=/usr/local/mailman --with-mailhost=mail.5-55.jp --with-urlhost=5-55.jp
やっぱダメー
  728  s apt-get install python-setuptools ← これがないからか?
  735  s mv -v python python252
  736  s mv -v python2.5 python
  737  python
  738  s apt-get install python-setuptools
  739  s apt-get install python
  740  s apt-get purge python ← やっちゃったよ、とうとう
とうとう禁断の実をたべてしまいました。しかも removeじゃなくて purgeとは。頭がおかしくなってるとしか思えませんね。
  742  s apt-get -f install python
  743  s aptitude install python
  745  e /etc/postfix/main.cf ← 設定消えちゃった
  747  e /etc/aliases ← こちらは無事でした
  766  s cp -v /etc/alias* /home/samba/backup/etc/ ← あわててバックアップ
  768  sudo apt-get install postfix ← インストールし直し
  771  export LANG=ja_JP.UTF-8 ← 設定を元に戻す
  774  s apt-get install postfix ← もう1回
  776  s rm /var/cache/debconf/config.* ← これがあってインストールに失敗
  777  s rm /var/cache/debconf/templates.*
  779  s apt-get install postfix ← もう1回
  780  s apt-get install python-apt python-central python-gnupginterface python-setuptools python-support ubuntu-minimal update-manager-core ssl-cert alsa-utils command-not-found lsb-release openssl-blacklist
  781  s apt-get install update-manager-core
  782  s apt-get install command-not-found
  783  s apt-get install python-setuptools ← 足りないといわれたものをじゃかすか入れる
  786  s mv -v /var/cache/debconf/passwords.dat /var/cache/debconf/passwords.dat-back
このあたりから /usr/bin/pythonがないため、はまっているのに気づかず延々と繰り返すの図
  788  s apt-get install python-setuptools
  789  s apt-get install python-apt
  790  s aptitude install python-apt
  791  s aptitude install update-manager-core
  792  s apt-get install command-not-found
  793  s apt-get install python
  794  s apt-get update python
  795  s apt-get upgrade python
  796  s apt-get upgrade python-apt
  797  s apt-get python-apt command-not-found update-manager-core python-setuptools
  798  s apt-get install python-apt command-not-found update-manager-core python-setuptools
  799  s apt-get upgrade python-apt command-not-found update-manager-core python-setuptools
  800  s apt-get remove python-apt command-not-found update-manager-core python-setuptools
  801  s apt-get update
  802  s apt-get install python-apt command-not-found update-manager-core python-setuptools
  803  s apt-get install alsa-utils
  804  s apt-get install ubuntu-minimal
  805  s apt-get install command-not-found
  806  s apt-get remove python-apt
  807  s apt-get check python-apt
  808  s apt-get -f install python-apt
  809  dpkg -l
こんなのが延々と続きます
      :
      :
  842  s dpkg --configure -a
  848  s dpkg -r python-apt
  849  s apt-get upgrade
  850  s dpkg -r lsb-core
  851  s dpkg -r lsb-graphics
  852  s dpkg -r lsb-cxx
  853  s dpkg -r lsb-desktop
  854  s dpkg -r lsb
  855  s apt-get upgrade
  856  s aptitude upgrade
      :
      :
ここら辺からやっと復旧モード
  866  sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d dovecotを入れる
  867  e /etc/postfix/main.cf ← 設定ファイル復旧
  868  e /etc/postfix/master.cf
  869  e /etc/dovecot/dovecot.conf
  870  dovecotpw
  871  e /etc/dovecot/passwd
  872  e /etc/postfix/main.cf
  880  s /etc/init.d/postfix restart postfix起動
  881  e /etc/aliases
  882  s /etc/init.d/dovecot restart ← dovcot起動
  883  e /etc/dovecot/dovecot.conf
  884  s /etc/init.d/dovecot restart
  885  sudo sysv-rc-conf --list postfix ← 一応念のため設定確認
  886  sudo sysv-rc-conf --list dovecot
  887  s /etc/init.d/postfix restart
  888  e /etc/postfix/main.cf
  889  e /etc/postfix/master.cf
  890  e /etc/dovecot/dovecot.conf