- PR -

インストール時、依存関係がクリアできない場合どうすればいいのでしょうか?

投稿者投稿内容
kalze
ぬし
会議室デビュー日: 2003/10/23
投稿数: 406
お住まい・勤務地: 東京・東京
投稿日時: 2003-10-23 02:11
初めて投稿させていただきます。
Linuxの勉強を始めてまだ間もないもので、わからないことが多く、
初歩的な質問をしてしまうとおもいますが、今後ともよろしくお願いします

今回、つまづいているところで、ご教授願いたく投稿いたしました。

データベースの勉強をしたく、先日立ち上げた自宅サーバーに
MySQLをソースからインストールしました。
しかし、現状では、PHPからMySQLにアクセスするためのものが
サーバーに入っていないようでした。
そこで、ネットで検索をかけ、自分なりに調べてみた結果、
php-mysqlがインストールされていないのでアクセスできないようだとわかりました。

そこで、php-mysqlをインストールしようとしたのですが、
インストール時に依存関係のチェックで引っかかってしまいます。

OS:RedHat9
Apache:apache2.0.40-21.5
PHP:php4.2.2-17.2
apacheとphpはOSインストール時に一緒にインストール

MySQL:MySQL4.0.15a
ソースからmakeしてインストール

php-mysqlは、RedHatが提供している、
php-mysql-4.2.2-17.i386.rpm
をRPMにてインストールしようとしていました。

エラーメッセージは
エラー: Failed dependencies:
libmysqlclient.so.10 is needed by php-mysql-4.2.2-17
php = 4.2.2-17 is needed by php-mysql-4.2.2-17
と表示されます。

調べてみると、サーバーに入っているのはlibmysqlclient.so.12でした

こういった場合、MySQLのバージョンを落とすか、PHPのバージョンを上げるしか解決策はないのでしょうか?

私、Linuxの勉強を始めて間もないもので、ソースからインストールした場合、
どうやってアンインストール(?)すればいいのかもわかりません。
なので、バージョンをあわせるしかないとなれば、PHPのバージョンを上げることになってしまうとおもうのですが、libmysqlclient.so.12でも大丈夫なPHPのバージョンはどうやって調べてみればいいのでしょうか?

よろしくご教授くださいますようお願い申し上げます

コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2003-10-23 13:01
こちらが立てば、あちらが立たず・・・よくある現実です。
一つめのパッケージ依存警告

libmysqlclient.so.10 is needed by php-mysql-4.2.2-17

これは、mysql3.23 系のパッケージを rpm からインストールせず、手動で最新版の
mysql4.0 系を導入された結果、シェアードライブラリのバージョンに互換性が無い
事から出てるので、

ftp://rpmfind.net/linux/6/MySQL/MySQL-3.23/

こちらで mysql 3.23 系 rpm を展開すれば解消されると思われます。

二つ目のパッケージ依存警告

php = 4.2.2-17 is needed by php-mysql-4.2.2-17

これ、php-4.2.2-17.2.rpm をインストールしておられるようですが、
php-4.2.2-17.rpm を持ってきてインストールすれば治るんじゃないでしょうか。
rpm のマイナーパッケージ番号が違っただけで、五月蝿く言われるのでムカつき
ますが、逆を言えばバージョンの不整合による不具合を未然に防止してくれてる
ともとれます。

php-4.2.2-17.src.rpm は

http://rpmfind.rediris.es/rpm2html/redhat-9-i386/php-4.2.2-17.i386.html

からでも取って来れるでしょう。
tar ball から make install してインストールした場合、それをアンインストール
するには Makefile の TARGET=????とか install: セクションをトレースして
/usr/local/bin なり /usr/local/lib なりにインストールされるであろう
ELF, .so, .a ファイル或いはモノによっては /etc 以下等の configuration file 及び
関連する include/ ファイルを /bin/rm で消すしかないでしょう。

これが rpm だと -e で一発でできる訳ですが。
kalze
ぬし
会議室デビュー日: 2003/10/23
投稿数: 406
お住まい・勤務地: 東京・東京
投稿日時: 2003-10-23 13:28
早速のご教授ありがとうございます。
現在会社なので、帰宅後早速やってみたいとおもいます。

申し訳ないのですが、さらに質問させてください

>こちらで mysql 3.23 系 rpm を展開すれば解消されると思われます。
これを行うと、(実際に動作する)MySQL自体は3.23系になってしまうのでしょうか?
それとも、libmysqlclient.so.10をいれてそれだけ利用してしまおうということになるんでしょうか?

確認させていただきたいのですが、
今回、問題の解決にやってみるのは、
・mysql 3.23 系 rpm の展開(RPM -i mysql…)
・php-4.2.2-17.src.rpmの展開(RPM -i php-4.2.2-17…)
の2点でいいのでしょうか?

初歩的なことかもしれませんが、よろしくお願いします
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2003-10-23 13:29


[ メッセージ編集済み 編集者: コブラ 編集日時 2003-10-23 19:07 ]
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2003-10-23 14:02
あら、同じ投稿を二回もしてしまいました。
誰か、一つ前の自分の投稿を消して下さい(笑)
削除機能は無いのですか・・・

ええと、本題ですが、

>これを行うと、(実際に動作する)MySQL自体は3.23系になってしまうのでしょうか?
>それとも、libmysqlclient.so.10をいれてそれだけ利用してしまおうということになるんで
>しょうか?

MySQL 自体が3.23系になってしまいます。

>確認させていただきたいのですが、
>今回、問題の解決にやってみるのは、
>・mysql 3.23 系 rpm の展開(RPM -i mysql…)
>・php-4.2.2-17.src.rpmの展開(RPM -i php-4.2.2-17…)
>の2点でいいのでしょうか?

(1) libmysqlclient.so.10 is needed by php-mysql-4.2.2-17
(2) php = 4.2.2-17 is needed by php-mysql-4.2.2-17

(1) を解消するには、やはり素直に libmysqlclient.so.10 を入れるしかありませんね。
若しくは、 libmysqlclient.so.12 に対応してる php-mysql を入れるか。

(2) を解消するには、rpm パッケージのマイナーバージョン番号まできっちり合致してる
やつを持ってきて整合性を保った方が良いでしょう。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2003-10-23 14:38
・MySQL のバージョンを下げて php-mysql と PHP のバージョンに合わせる
・php-mysqlとPHPのバージョンを上げて MySQL の最新版に合わせる

二者択一ですが、もう rpm でどうにもならない、というのでしたら、 rpm でインストール
した PHP 関連全てを アンインストールしてしまって白紙に戻し、改めて MySQL の方を先に
tar ball からインストールした後、 PHP のサイト

http://www.php.net/downloads.php

から最新版持ってきて、configure の時に

./configure redhat-linux --prefix=/usr/local --exec-prefix=/usr/local --bindir=/usr/local/bin --sbindir=/usr/local/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/local/include --libdir=/usr/local/lib --libexecdir=/usr/local/libexec --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/local/man --infodir=/usr/share/info --prefix=/usr/local --with-config-file-path=/etc --enable-force-cgi-redirect --disable-debug --enable-dbg=shared --with-dbg-profiler --enable-pic --disable-rpath --enable-inline-optimization --with-db3-dir=/usr/local/BerkeleyDB.3.3 --with-exec-dir=/usr/local/bin --with-freetype-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-ttf --with-gdbm --with-gettext --with-ncurses-dir=/usr --with-iconv-dir=/usr/local --with-jpeg-dir=/usr --with-openssl --with-png --with-regex=system --with-xml --with-expat-dir=/usr/local --with-zlib --with-layout=GNU --enable-bcmath --enable-debugger --enable-exif --enable-ftp --enable-magic-quotes --disable-safe-mode --enable-sockets --enable-sysvsem --enable-sysvshm --enable-discard-path --enable-track-vars --enable-trans-sid --enable-wddx --without-oci8 --with-ldap=shared --with-mysql --with-pgsql --enable-memory-limit --enable-bcmath --enable-shmop --enable-versioning --enable-calendar --enable-dbx --enable-dio --enable-mcal --enable-mbstring --enable-mbstr-enc-trans --with-apxs=/usr/apache/bin/apxs

こういう長ったらしいオプションをいちいち付けてらやらないとイケません。
この時、 /usr/lib/mysql 等の インストール済 MySQL へのパスをシェルの $PATH に含め
ておいて下さい。$LD_LIBRARY_PATH にも MySQL のライブラリがあるパスを含めておいて
下さい。

./configure に付ける prefix や bin ディレクトリ(インストール先)は kalze はんの
環境に合わせて変えて下さい。この内、データベースと連携させるなら絶対に

--with-mysql と --with-pgsql それに日本語エンコードを有効にする
--enable-mbstring --enable-mbstr-enc-trans あと、アパッチの Dynamic Shared Object
を使って libphp4.so を httpd 起動時に組み込むので --with-apxs=/apxsのあるpath/

これらのオプションは外せません。apxs 実行ファイルの場所は個々の環境で違います
ので、 kalze はんの環境で apxs があるパスを指定して下さい。

これで make; make install したら、 <?php phpinfo(); ?> を info.php とでもして、
更に Apache の設定ファイル httpd.conf に PHP4 の拡張子 .php を PHP として認識
する事を許可するディレクティブと libphp4.so を DSO の一員として組み込むディレク
ティブを追加し、さっきの info.php をブラウザから開いてみて MySQL の項目が表示され
たらOKです。
水無月 遊々
大ベテラン
会議室デビュー日: 2003/10/22
投稿数: 139
お住まい・勤務地: お星様☆彡
投稿日時: 2003-10-23 15:38
引用:

削除機能は無いのですか・・・



 全然関係ないレスで申し訳ないのですが、自分の書き込みの「編集」から削除できます^^;

 さすがに、これだけだとあれなので^^; 個人的には、「make」でインストールしたファイルを1回削除してバージョンが一致するパッケージを「rpm」でインストールするのがよいかと思います。今後の管理も考えると…ね。

 パッケージがない場合は古い「spec」ファイルを利用してリビルドすれば対して難しくない…ハズ?^^;
kalze
ぬし
会議室デビュー日: 2003/10/23
投稿数: 406
お住まい・勤務地: 東京・東京
投稿日時: 2003-10-23 16:05
またも素早いご返答ありがとうございます。

利用したいもの(Xoops)は、MySQL3.23系以上ということなので、
可能な限りRPMで管理したほうが楽なので、
MySQLのバージョンを下げることにします。

作業は帰宅後になりますが、
1.MySQL3.23系のRPMパッケージをインストール
2.php-4.2.2-17.src.rpmをインストール
3.php-mysql-4.2.2-17.rpmをインストール
という手順で行いたいとおもいます。

このとき、
Q1.手動でいれたMySQLをアンインストール作業をしてから3.23系のパッケージをインストールするのでしょうか?そのままインストールしてしまって問題ないのでしょうか?
Q2.php-4.2.2-17をインストールする際は、php-4.2.2-17.2をアンインストールしてからの方がいいですよね?
Q3.〜〜.src.rpmというのは、〜〜.rpmにソースもついているものなんでしょうか?
  それともソースだけ入っているので、ビルドしてインストールするものなんでしょうか?
  (RPM -i 〜〜〜.src.rpmコマンドだけで終わるものなのかなぁと。
   自宅に戻らないと、RPMのオプション調べられないもので。
   .src.rpm用のオプションがあるならごめんなさい)

連続して質問ばかりして申し訳ありませんが、よろしくご教授おねがいします。

#おかげさまで方針や作業すべきことがつかめてきました。
#早く帰って作業してみたい(笑)
#でも、今日は終電確定(帰宅できれば・・・)してしまったので、
#作業報告は深夜か週末になってしまうかもしれません

スキルアップ/キャリアアップ(JOB@IT)