hack のためのネタ帳, etc,,,

以下は作業記録
Debian - PHP/ext/pdo_oci (20100717〜20100721) の続き

pear で pecl/pdo_oci を入れると古かったので
apt で source package 拾ってきて
私家 .deb 作った際の記録

dh-make-pecl による pdo_oci package の作成

dh-make-php のインストール
# aptitude install dh-make-php
/tmp 以下に php5 のソースを取得
# cd /tmp
# apt-get source php5
php5-5.2.6.dfsg.1 が展開されたので pdo_oci のディレクトリへ移動
# cd php5-5.2.6.dfsg.1/ext/pdo_oci/
pecl のソースパッケージを作成
# pecl package package2.xml
PDO_OCI-1.0.1.tgz が出来たので dh-make-php で Debian ソースパッケージを作成
# dh-make-pecl --only 5 PDO_OCI-1.0.1.tgz
php-pdo-oci-1.0.1 が展開されているので移動して .deb の構築
# cd php-pdo-oci-1.0.1/
# dpkg-buildpackage 
次のように、依存パッケージの不足を指摘された
dpkg-checkbuilddeps: Unmet build dependencies: build-essential xsltproc
依存パッケージをインストールして再ビルド
# aptitude install build-essential xsltproc
# dpkg-buildpackage 
環境変数 ORACLE_HOME の設定を忘れていると指摘された
設定して再ビルド
# export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/
# dpkg-buildpackage 
php_pdo_driver.h が見つからないと言われた
ln -s /usr/include/php5/ext PDO_OCI-1.0.1/ext すると dpkg-buildpackage に
嫌がられる
# dpkg -S /usr/include/php
して該当するパッケージがなければ
# ln -s /usr/include/php5 /usr/include/php
してしまうのが吉
上記のリンクを作り再ビルド
# dpkg-buildpackage 
tmp/modules5/pdo-oci.so を stat 出来ないとクレーム
実際のファイル名は tmp/modules5/pdo_oci.so
debian/rules の PECL_PKG_NAME を使って tmp/modules$*/$(PECL_PKG_NAME).so と
生成されてる
ハイフンじゃなくてアンダーバーでないと困るんだが
dh-make-pecl のバグですか?これは?
とりあえず、
debian/rules の PECL_PKG_NAME の行を以下のように修正
PECL_PKG_NAME=pdo_oci
conf.d 用のファイルを修正
# mv debian/pdo-oci.ini debian/pdo_oci.ini
# echo \# configuration for php PDO_OCI module > debian/pdo_oci.ini
# echo extension=pdo_oci.so > debian/pdo_oci.ini
再ビルドすると
dpkg-shlibdeps: failure: no dependency information found for /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1 (used by debian/php5-pdo-oci/usr/lib/php5/20060613+lfs/pdo_oci.so).
ってなお叱りを受けるので、
dpkg-shlibdeps 用の package-local overriding shared library dependency information ファイルを以下のように作成
# echo libclntsh 10.1 oracle-xe-client > debian/shlibs.local
再ビルドすると
../php5-pdo-oci_1.0.1-1_i386.deb
が完成
pear で install してた pecl/pdo_oci のアンインストール
# pear uninstall pecl/pdo_oci
作成した pecl package のインストール
# dpkg -i ../php5-pdo-oci_1.0.1-1_i386.deb 
apache2 の再起動
# invoke-rc.d apache2 restart

以上でとりあえず
SQLSTATE[HY000]: General error: 1405 OCIStmtFetch: ORA-01405: フェッチした列の値がNULLです (/tmp/pear/download/PDO_OCI-1.0/oci_statement.c:446)
は出なくなった模様

しかし今度は、seg るようになってしまったorz
[Wed Jul 21 21:59:58 2010] [notice] child pid 10879 exit signal Segmentation fault (11)
問題は pdo_oci なのか oracle-xe-client なのか

参考:
タグ

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます