--> -->

skimemo


skimemo - 日記/2014-07-05

_ Pythonをソースから入れたらyumの整合性が壊れたので修復

調子に乗ってPython2.7をビルドしたのは良かったのですが、yumの管理外でpythonが2.7になってしまったため、yum実行時にこんなエラーが出るようになってしまいました。

There was a problem importing one of the Python modules required to run yum. The error leading to this problem  was:~

   No module named yum

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.7.8 (default, Jul  5 2014, 14:19:54)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)]

If you cannot solve this problem yourself, please go to
the yum faq at:
  http://yum.baseurl.org/wiki/Faq

しかも、あろう事か古いpythonの実行ファイルは削除してしまいました。

仕方が無いので、rpmで再インストール。

wget http://mirror.centos.org/centos/6.5/updates/x86_64/Packages/python-2.6.6-52.el6.x86_64.rpm

普通にやっても「既に入っている」と怒られます。

$ sudo rpm -Uhv python-2.6.6-52.el6.x86_64.rpm
Preparing...                ########################################### [100%]
        package python-2.6.6-52.el6.x86_64 is already installed

そこで、強制インストール。

sudo rpm -i --force python-2.6.6-52.el6.x86_64.rpm

これで入りました。

$/usr/bin/python
Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

あとは、再度python2.7に差し替えて、yumのpythonの指定を2.6にします。

sudo mv /usr/bin/python /usr/bin/python2.6
sudo ln -s /usr/local/bin/python /usr/bin/python
sudo vi /usr/bin/yum


#!/usr/bin/python2.6

完成。

$ yum
Loaded plugins: fastestmirror, security
You need to give some command
Usage: yum [options] COMMAND

List of Commands:
    :
    :
Category: [Linux] - 17:39:06

_ CentOS 6 x86_64 で Trac1.0.1を動かす

sakuraのvpsにデフォルトでインストールされているCentOS 6 x86_64上でTrac1.0.1を動かして見ました。
色々はまったのでメモメモ。。

主に必要なもので私が入れたものは以下(他にもあるかも)。

  • Apache2.4
  • Python2.7
  • MySQL5.6
  • OpenSSL1.0
  • mod_wsgi4.5 (apacheからpythonを動かすmodule)
  • setuptools5.3
  • zlib1.2.8
  • Trac1.0.1
  • MySQL-python

yumで入れるとやたらと古いものが入れられてしまいますのでセキュリティの観点から使えません。
いつでも即最新版に上げられるよう、全てソースから入れます。

  • ldconfig ライブラリのパスを通しておきます。
    sudo vi /etc/ld.so.conf

    include ld.so.conf.d/*.conf
    /usr/local/ssl/lib
    /usr/local/lib

    sudo ldconfig
  • OpenSSL
    まずはopensslを入れたような気がします。
    ./config
    make
    sudo make install
  • Apache2.4
    aprとapr-utilなるものが必要になりますが、どちらも普通に入ります。
    apacheのconfigureはこんな感じにしました。将来的にdavとか入れるとまた変わってきます。
    ./configure --enable-so --enable-ssl --with-apxs2=/usr/local/apache2/bin/apxs --with-ssl=/usr/local/ssl
  • Python2.7
    実はここでいちばんはまりました。
    プレインストールされている2.6でも良さそうなものですが、mod_wsgiとライブラリが一致していないためか、tracのload時にmod_wsgiが落ちてしまうのです。(apacheのlogをdebugレベルにした時のerror_log↓)
    mod_wsgi(pid=14058, process='',application=''): Loading WSGI script '/var/trac/project/cgi-bin/trac.wsgi'.
    [pid 14055:tid 140553899419392] AH00052: child pid 14058 exit signal Segmentation fault (11)
    そこでPythonもソースからビルドします。ただし、必要なモジュール ssl と zlib を入れるために、事前準備が必要です。
    1. zlib
      zlibをダウンロードしてから、
      ./configure
      make
      sudo make install
    2. ssl
      Pythonを解凍したディレクトリで、
      vi Modules/Setup

      SSL=/usr/local/ssl
      _ssl _ssl.c \
             -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
             -L$(SSL)/lib -lssl -lcrypto

      zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz

      ./configure --with-threads --enable-shared
      make
      sudo make install

      2.6は動かないようにしておきます。
      sudo mv /usr/bin/python /usr/bin/python2.6
      sudo ln -s /usr/local/bin/python /usr/bin/python
  • MySQL5.6
    こちらのページそのままです。
    ■CentOS 6.4 に MySQL 5.6 をサクッとインストールする
    http://blog.manabusakai.com/2013/04/centos-mysql56-install/
    wget -q http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-client-5.6.19-1.el6.x86_64.rpm \
    http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-compat-5.6.19-1.el6.x86_64.rpm \
    http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-server-5.6.19-1.el6.x86_64.rpm \
    http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-devel-5.6.19-1.el6.x86_64.rpm \
    http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-shared-5.6.19-1.el6.x86_64.rpm

    sudo yum install MySQL-{client,devel,server,shared-compat}-5.6.19-1.el6.x86_64.rpm

    sudo yum install MySQL-shared-5.6.19-1.el6.x86_64.rpm
  • mod_wsgi4.5 (apacheからpythonを動かすmodule)
    apacheの場所だけ指定します。
    ./configure -with-apxs=/usr/local/apache2/bin/apxs
    make
    sudo make install
  • setuptools5.3
    そのままです。
    wget https://bootstrap.pypa.io/ez_setup.py -O - | python
  • Trac1.0.1
    そのままです。ダウンロードして、
    sudo easy_install Trac-1.0.1.tar.gz
  • MySQL-python
    これだけ。
    sudo easy_install http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz/download

    最後にwsgiの設定をします。
    httpd.confやtrac.wsgiの設定を行いますが、公式ページの通りに設定すればOK。
Category: [Linux] - 14:53:54


 
Last-modified: 2014-07-05 (土) 14:53:55 (3577d)