読者です 読者をやめる 読者になる 読者になる

sqlite3を消すとyumが使えなくなる

sqlite2のDBを使ったevents.php.gr.jpのイベント管理システムを試すために、sqlite3を消したらyumが使えなくなったしまったので、yumをrpmで入れたログです。


events.php.gr.jpのイベント管理システムが、codereposで公開されました。
events.php.gr.jpがcodereposに
これをさっそく試すべく、ソースを落としてきて、ローカルで動くようにいじっていました。
その記録は別のエントリで書くとして。


こちらは、DBにsqlite2を使用しているのですが、私のVMwareのCentOS4の環境では、yum install sqlite とすると、sqlite3がデフォルトで入りました。
schema ディレクトリ内の event.db.default を sqlite3で開こうとしても開けません。

$ cd schema/
$ cp event.db.default event.db
$ sqlite3 event.db
sqlite> .tables
Error: file is encrypted or is not a database


IRCで、haltさんに聞いたところ、sqlite2 とのことで、sqlite3 で、当然開けないと。
というわけで、sqlite2 をインストールしようとしましたが、yum では入れられないので、いろいろ探したところ、rpm版のある場所を教えてもらいました。
ありがとうございます。>mumumu_nさん

sqlite2のrpmを入れる

# cd /usr/local/src/
# wget http://dag.wieers.com/rpm/packages/sqlite/sqlite-2.8.17-1.el4.rf.i386.rpm
# rpm -ivh sqlite-2.8.17-1.el4.rf.i386.rpm
Preparing...                ########################################### [100%]
        package sqlite-3.3.6-2 (which is newer than sqlite-2.8.17-1.el4.rf) is already installed

すでに、sqlite3が入っているので、ぶつかってしまい、入れることが出来ません。

sqlite3を消してsqlite2を入れる

※これをすると、yumが使えなくなりますので、要注意


あんまり深く考えずに、yumで入ったsqlite3は yumコマンドで削除し、rpm版のインストールをしました。

# yum remove sqlite
# rpm -ihv sqlite-2.8.17-1.el4.rf.i386.rpm


この後に、yumコマンドを使おうとしたところ、コマンドが見つからなくなってしまいました。
which yum をしても見つからないことに。。。

yumコマンドをrpmで入れる

この時点で、yumが消えたのは、慣れないrpmコマンドやら使ったので、間違って消してしまったのかと思い、yumをrpmで入れることにしました。


まずは、rpm版の yumを探すことに。
これは以外に早く見つけられたので、以下のel4をダウンロードすることにした。
http://dag.wieers.com/rpm/packages/yum/
http://dag.wieers.com/rpm/packages/yum/yum-2.4.2-0.4.el4.rf.noarch.rpm

# wget http://dag.wieers.com/rpm/packages/yum/yum-2.4.2-0.4.el4.rf.noarch.rpm
# rpm -Uvh yum-2.4.2-0.4.el4.rf.noarch.rpm
エラー: Failed dependencies:
        python-sqlite is needed by yum-2.4.2-0.4.el4.rf.noarch
    Suggested resolutions:
        /home/buildcentos/CENTOS/en/4.0/i386/CentOS/RPMS/python-sqlite-1.1.7-1.2.1.i386.rpm

なにやら、putyon-sqliteが無いとのことでエラーになってしまいます。
すでに、1度 yumで入れているので、ローカルのキャッシュを探して、それを使うことにします。


ファイル探すのに、locateを使うために updatedbをまず発行します。

# updatedb


python-sqliteを探して、インストールします。

# locate python-sqlite
/var/cache/yum/base/packages/python-sqlite-1.1.7-1.2.1.i386.rpm
/var/cache/yum/base/headers/python-sqlite-1.1.7-1.2.1.i386.hdr
# rpm -Uvh /var/cache/yum/base/packages/python-sqlite-1.1.7-1.2.1.i386.rpm
エラー: Failed dependencies:
        libsqlite3.so.0 is needed by python-sqlite-1.1.7-1.2.1.i386
    Suggested resolutions:
        /home/buildcentos/CENTOS/en/4.0/i386/CentOS/RPMS/sqlite-3.3.6-2.i386.rpm


エラーなので、sqlite3を探して入れます。

# locate sqlite-3
/var/cache/yum/base/packages/sqlite-3.3.6-2.i386.rpm
/var/cache/yum/base/headers/sqlite-3.3.6-2.i386.hdr
# rpm -ivh /var/cache/yum/base/packages/sqlite-3.3.6-2.i386.rpm
Preparing...                ########################################### [100%]
   1:sqlite                 ########################################### [100%]


入れられたので、python-sqlite と yum を入れます。

# rpm -ivh /var/cache/yum/base/packages/python-sqlite-1.1.7-1.2.1.i386.rpm
Preparing...                ########################################### [100%]
   1:python-sqlite          ########################################### [100%]
# rpm -ivh yum-2.4.2-0.4.el4.rf.noarch.rpm
Preparing...                ########################################### [100%]
   1:yum                    ########################################### [100%]


これで、やっと、yumが使えるようになりました。
yumコマンドが pythonを使っていることは知っていたのですが、sqliteを使っていることは知りませんでした。


復旧し終わってから、sqlite2用のdbファイルのdumpを取っておけばよかったと後悔。。。