2014年03月27日

install_name_tool を使って Library not loaded を解消する

Mac で MySQLdb をインストールします。

import してみます

>>> import MySQLdb
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/some/where/lib/python2.7/site-packages/MySQL_python-1.2.5-p
y2.7-macosx-10.8-intel.egg/_mysql.so, 2): Library not loaded: libmysqlclient.18.
dylib
  Referenced from: /some/where/lib/python2.7/site-packages/MySQL_python-1.2.5-py
2.7-macosx-10.8-intel.egg/_mysql.so
  Reason: image not found
>>>

_mysql.so にリンクされている libmysqlclient.18.dylib が見当たらない、と言われていますね。

まずは確認しましょう。

$ otool -L /some/where/lib/python2.7/site-packages/MySQL_python-1.2.5-py2.7-maco
sx-10.8-intel.egg/_mysql.so
/some/where/lib/python2.7/site-packages/MySQL_python-1.2.5-py2.7-macosx-10.8-int
el.egg/_mysql.so:
	libmysqlclient.18.dylib (compatibility version 18.0.0, current version 1
8.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version
 169.3.0)
$

リンク先の libmysqlclient.18.dylib のディレクトリ指定はありません。

このエラーについてググると、シンボリックリンクで解決、というページが沢山見つかります。 しかしその解決方法はなんだか Linux の .so の解決作法を OS X に持ってきただけみたいに見えます。

そこで今日のタイトルにある install_name_tool を使う解決方法を紹介しましょう。 今回使うのは -change というオプションです。 install_name_tool -change OLD NEW TARGET と指定します。 TARGET の OLD というリンク先を NEW に書き換えます。 具体的に書くとこうなります。

$ install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysq
lclient.18.dylib /some/where/lib/python2.7/site-packages/MySQL_python-1.2.5-py2.
7-macosx-10.8-intel.egg/_mysql.so
$

それでは確認しましょう。

$ otool -L /some/where/lib/python2.7/site-packages/MySQL_python-1.2.5-py2.7-maco
sx-10.8-intel.egg/_mysql.so
/some/where/lib/python2.7/site-packages/MySQL_python-1.2.5-py2.7-macosx-10.8-int
el.egg/_mysql.so:
	/usr/local/mysql/lib/libmysqlclient.18.dylib (compatibility version 18.0
.0, current version 18.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version
 169.3.0)
$ python
>>> import MySQLdb
>>> 

リンク先が書き換わって、python からの import も成功していますね。



posted by mft at 01:08| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2013年12月21日

ローマ字カスタマイズ その2

前回はさ行、た行のカスタマイズで力尽きたが、今回は促音、拗音を中心に説明していく。

と、その前に。 このカスタマイズを施した Google 日本語入力用ローマ字設定を、
https://github.com/matsui-goga/ro-mazhi
に置いておいたので、気になる人は実際にインポートしてみてもらうことができる。 多分ことえり用のファイルとかも用意できるので、需要がありそうなら同じリポジトリに放り込むつもり。

さて、では今日はまず促音から始めよう。 促音とは「っ」のことである。 標準的な文章の表記では文末に立つことがないので、世のローマ字表記では同一子音を重ねることで表現される。 しかし、ローマ字入力では必ずしも文を前から後ろに順に書くばかりではないので、それだけを入力する方法も用意されている。 代表的なのは xtu や ltu といった「小さくする接頭辞」+「つ」の組合せである。 が、ここでは思い切って x 一文字を促音に割り当てる。 昔話をすると、もともとは q と書くつもりだった(日本語の音素として /Q/ と表すことがあるので)が、 その当時カスタマイズを試みた uim か何かで q を別のコントロールに取られてしまったからやむなく x に割り当てた記憶がある。 今はもう x で慣れてしまったので、変えるつもりはない。 話の逸れついでに、xa で「ぁ」を出すなど小さい字全般に x を接頭辞に使っている場合も多いかと思うが、l も同じ意味の接頭辞に大体割り当てられているので、そちらに統一することをお勧めしておく。

次は拗音。 拗音は「きゃ」とか「みゅ」などの小さいや行の表記のことである。 拗音はや行と同じ y に割り当てて例えば kya で「きゃ」を表すのが通常なのだが、難点が一つだけあって、nya が「にゃ」になって「んや」のためには nnya のように打つ必要が出てくるところである。 それぐらいしか理由はないのだが、y はや行専用にして、拗音は j で表す(発音記号で [j] に当たる(ことが多い)からという理由)。 つまり kja で「きゃ」を nja で「にゃ」を mja で「みゃ」を rja で「りゃ」を表す。 ちなみに「ゃ」などの拗音単独の表記も ja だけでできるようにしておけば打ち間違いの訂正等で lya より簡単。 ところで通常さ行の拗音と認識される「しゃ」の音には別の綴りを既に割り当てたので、sja は「しゃ」ではない。 発音の原則から言うと sj は [sj] の音、つまり「すゃ すゅ すょ」に割り当てることになる。 まあ、さ行はこんな表記を使う機会もほぼ無いのだが、た行には多少意味がある。 「ちゃ」に tsha (あるいは cha)を割り当てたから tja は別の音「てゃ」に変換される。 用例としては tju を使う「テューリンゲン」とか、 濁音の dju に「デュオ」「デュトワ」「デュワー瓶」など。 さらに tsja で「つゃ」とするが用例は tsju を使った「ツュンベリー」ぐらいか。

以上だいたい発音に忠実な(促音や撥音は音声より音素を表すし、や行と拗音は敢えて表記を分けたが)ローマ字のカスタマイズを紹介してみた。 下の表にまとめておく。

おまけ: このカスタマイズで打鍵数が増えることに批判的だったりするだろうか? そういう向きには「子音に挟まれた u を省略する」という規則の導入を提案しよう。 (実際に自分でも一部実施しているのだが、それほど徹底的にやりこんだことはない) たとえば「オブジェクト」という語は今までの説明に従えば obuzhekuto (10打鍵)だが、 u の省略を行えば obzhekto (8打鍵)になり、ヘボン式の obujekuto (9打鍵)より短い。

a あi いu うe えo お
ka かki きku くke けko こ kja きゃkju きゅkjo きょ
ga がgi ぎgu ぐge げgo ご gja ぎゃgju ぎゅgjo ぎょ
sa さsi すぃsu すse せso そ sja すゃsju すゅsjo すょ
za ざzi ずぃzu ずze ぜzo ぞ zja ずゃzju ずゅzjo ずょ
しゃsha しゃshi しshu しゅshe しぇsho しょ
じゃzha じゃzhi じzhu じゅzhe じぇzho じょ
ta たti てぃtu とぅte てto と tja てゃtju てゅtjo てょ
da だdi でぃdu どぅde でdo ど dja でゃdju でゅdjo でょ
つぁtsa つぁtsi つぃtsu つtse つぇtso つぉ tsja つょtsju つゅtsjo つょ
づぁdza づぁdzi づぃdzu づdze づぇdzo づぉ dzja づゃdzju づゅdzjo づょ
ちゃtsha ちゃtshi ちtshu ちゅtshe ちぇtsho ちょ
(cha)(chi)(chu)(che)(cho)
ぢゃdzha ぢゃdzhi ぢdzhu ぢゅdzhe ぢぇdzho ぢょ
na なni にnu ぬne ねno の nja にゃnju にゅnjo にょ
ha はhi ひhu ふhe へho ほ hja ひゃhju ひゅhjo ひょ
pa ぱpi ぴpu ぷpe ぺpo ぽ pja ぴゃpju ぴゅpjo ぴょ
ba ばbi びbu ぶbe べbo ぼ bja びゃbju びゅbjo びょ
ふぁfa ふぁfi ふぃfu ふfe ふぇfo ふぉ fja ふゃfju ふゅfjo ふょ
ヴぁva ヴぁvi ヴぃvu ヴve ヴぇvo ヴぉ vja ヴゃvju ヴゅvjo ヴょ
ma まmi みmu むme めmo も mja みゃmju みゅmjo みょ
ya やyu ゆye いぇyo よ
ra らri りru るre れro ろ rja りゃrju りゅrjo りょ
wa わwi うぃwe うぇwo を
 
(その他)x っn ん- ーla ぁja ゃ
posted by mft at 21:52| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2013年11月30日

ローマ字カスタマイズ

とある文書に変換ミスを見つけた。 「ペンディング」が「ペンでイング」になるようなミス。 同僚に「でぃ」の入力方法を聞いてみたら「deli」と答えが返ってきた。 私はローマ字をカスタマイズして「di」で変換していたので、何か「dhi」のような入力ソフト固有の設定で決まった入力方法を期待していたのだが、もっとはるかに原始的だった。 それは無いわ、と思ったので、自分の設定方法の一部を紹介してみる。

1. さ行(広義)
国語的分類でいうところのさ行(以降「さ行(狭義)」と書く)には二つの発音記号[s]と[ʃ]が混ざる。 そこで s+母音 は発音記号でいうところのさ(s)行に割り振る。 さ行(狭義)との差は si で「し」が出ないで「すぃ」になるところである。 ʃ は一文字として打てないので sh に置き換える。 しゃ(sh)行は「しゃ し しゅ しぇ しょ」である。 shi で「し」を表すのはヘボン式と同じなので違和感は無いだろう。 sya のような入力は使わない。

2. ざ行(広義)
さ行(広義)の[s]と[ʃ]を濁音(有声音)にした[z]と[ʒ]がざ行(広義)である。 だから入力はさ行(広義)の s を z に置き換える。 ヘボン式と違って ji で「じ」を表さない。 「じゃ」は zha で入力し、zya も ja も、ましてや jya も、使わない。 一貫性のほうが大事なので。

3. た行(広義)
上に書いたさ行(広義)はこのた行(広義)の準備に過ぎない。 た行(狭義)には三つの発音記号[t]と[ts]と[tʃ]が混ざる。 t の後ろに来る二つの発音記号はさ行(広義)と同じなので表記を揃える。 すると、た(t)行は「た てぃ とぅ て と」つぁ(ts)行は「つぁ つぃ つ つぇ つぉ」ちゃ(tsh)行は「ちゃ ち ちゅ ちぇ ちょ」である。 が、ちゃ行が4打鍵になると使用頻度の割に面倒なので ch による入力も略記として認めておく。 tya のような入力は使わない。

4. だ行(広義)
た行(広義)の[t]と[ts]と[tʃ]を濁音(有声音)にした[d]と[dz]と[dʒ]がだ行(広義)である。 だから入力は t を d に、s を z に置き換える。 ただし、ちゃ行を ch で綴ることにしてあるとここで対応が崩れてしまうので、あくまで略記であるという意識は持っていなければならない。 「でぃ」を di にしていると言うと「ぢ」の入力方法を聞かれるが、それは dzhi である。 使用頻度が低いので4打鍵で特に問題を感じたことはない。

長くなってきたので今回はここまでにして、促音・拗音については次回説明することにしよう。 (とりあえず「でぃ」を「di」と書く説明はできたし)
posted by mft at 14:06| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。