[Armadillo:08508] Re: ロケールでエラー(Armadilloー440)

watanabe email@hidden
2013年 1月 5日 (土) 19:14:01 JST


渡辺です。

色々と調査したのですが、変化がありません。

<試したこと1>
loginしてから"env"コマンドを打つと、xfbdevで設定したはずの
LANG=ja_JP.UTF-8が見えませんでした。login後
[Armadillo]# . /etc/init.d/xfbdev
と行うと"env"コマンドでLANG=ja_JP.UTF-8が見えます。
X serverが起動する前にロケールの設定が出来ていないのでは
ないかと疑い、以下のようにしました。
・xfbdevの内容を修正して、中身を空にしました。
 (削除しても何故か復活してしまうため)
 元のxfbdevをxfbdev_orgとして、/etc/xfbdev_orgにおいておく。
・リセットをすると、X serverが起動していないので、
 左上にArmadilloの絵が出るだけになります。
・[Armadillo]#. /etc/xfbdev_orgを実行する
・実行すると画面が白くなります。
・"env"で確認すると、LANG=ja_JP.UTF-8が入っています。
・プログラムを実行したけど、結果は以前と同じでした。

<試したこと2>
[Armadillo:05001]に似たような内容を発見しました。
それによると、/usr/lib/gconvが必要とありました。
その手順に従い、gconvをArmadilloに転送しました。
2012/12/27-12:03のメールにあるように、ロケールデータを
作ったので、usr/lib/下には、localeとgconvの2つのフォルダを
追加しました。
結論としては、これでも同じ結果でした。<試したこと1>と合わせても
同様でした。

<試したこと1>でX serverの起動前にロケールの設定を行いました。
その上でアプリを実行したけど、NGでした(XSupportsLocaleでエラー)。
従って、ロケールの設定がまだ駄目なのではないかと考えています。
ロケールの設定は、usr/lib/locale/ja_JP.UTF-8フォルダと
usr/lib/gconvフォルダの追加を行いましたが、これだけでは
不充分なのでしょうか?

(2012/12/29 15:02), watanabe wrote:
> 渡辺です。
> 
> 顔を洗って見直したのですが、うまく行きません。
> 
> <状況>
> 1)"localedef -i ja_JP -c -f UTF-8 ./ja_JP.UTF-8"で作成した
>  ja_JP.UTF-8フォルダを
>  /usr/lib/locale/にコピーしました。
>  ATDEでフォルダを作成し、ユーザーランドを更新しました。
>  Armadilloが立ち上がってから、/usr/lib/locale/を確認したら、
>  コピーしたフォルダが入っていました。
> 2)1)と同様にして、/etc/default/localeファイルを作成しました。
>  ファイルの中身は、
>  LANG=ja_JP.UTF-8
>  だけです。
> 3)etc/init.d/xfbdevの先頭に以下の2行を追加しました。
>  ". /etc/default/locale"
>  "export LANG"
> 4)プログラムはhelloと同じように
>  lftp -u guest,guest 192.168.1.16 -e "cd pub;rm ARM;put ARM;quit"
>  でArmadilloに送っています。
> 5)プログラムは以下のような感じです。
>  d = XOpenDisplay(":0");
>  loc = setlocale(LC_CTYPE, "");
>  if(loc  == NULL){
> 	printf("Can't set locale\n");
>  }
>  if(! XSupportsLocale()){
> 	printf("Current locale is not support");
>  }
> 6)実行手順は以下になります。
>  ・Armadilloにlogin後、4)の手順でプログラムを転送
>  ・この段階でArmadilloで"env"により確認してみると、
>   "LANG=ja_JP.UTF-8"は入っていない。
>  ・chmod +xを行ってからプログラムを実行すると
>   XSupportsLocale()で0が戻ってきてエラーになってしまう。
> 
> <質問>
> 1)上記手順に何か間違いがあるでしょうか?
> 2)Armailloが立ち上がったら、"LANG=ja_JP.UTF-8"がenvで見える
>  かと思っていたのですが、見えません。シェルから<状況>3)と同じ
>  ことを手で入れるとenvに"LANG=ja_JP.UTF-8"が現れます。
>  etc/init.d/xfbdevに記述するだけじゃ駄目なのでしょうか?
>  ちなみに、初期化時に同ファイルが実行されているのはTeratermの
>  表示から確実です。
> 3)手で<状況>3)と同じことを行って、envに表示するようになってから
>  プログラムを実行しても、結果は同じです。
>  「X serverにロケールを反映させるには」と言う回答文章がありましたが、
>  Xが立ち上がる前にロケールを反映させていないと、Xが認識しない、
>  と言うことでしょうか?
> 
> 1)の質問で私の手順に誤りがあるようでしたら、2)3)の質問は無視して
> ください。
> 
> 以上、どうぞよろしくお願い致します。
> 
> (2012/12/27 18:49), watanabe wrote:
>> 竹之下 様。
>>
>> 渡辺です。
>>
>> 回答ありがとうございます。
>>
>>> # export LANG=
>>> # ./a.out
>>> # export LANG=ja_JP.UTF-8
>>> # ./a.out
>>> とした場合、挙動は変わりますか?
>> コンソールから実行しています。
>> この通りやってみましたが、挙動は全く同じでした。
>>
>>> 挙動が変われば、ロケールデータの配置は意図したとおりにできています。
>>> そうでなければ、なにかおかしいです。
>> 挙動が変わらないということは、ロケールデータの配置がまずい、
>> と言うことですね。もう一度見直して、顔を洗って出直します。
>>
>>
>> (2012/12/27 18:21), Koyo Takenoshita wrote:
>>> 竹之下です。
>>>
>>> /etc/rc.d/S80xfbdev の中で、
>>> export LANG
>>> は実行していますか?
>>>
>>>> char *loc;
>>>> loc = setlocale(LC_CTYPE, "");
>>>> のlocは"c"になり、直後の
>>> というプログラムは、どのように実行されましたか?
>>>
>>> コンソールで実行しているのであれば、/etc/rc.d/S80xfbdev とは別に、
>>> コンソールにログインした後、
>>> export LANG=ja_JP.UTF-8
>>> とする必要があります。
>>>
>>> 例えば、setlocale()を実行するプログラムの名前がa.outだったとして、
>>> # export LANG=
>>> # ./a.out
>>> # export LANG=ja_JP.UTF-8
>>> # ./a.out
>>> とした場合、挙動は変わりますか?
>>> 挙動が変われば、ロケールデータの配置は意図したとおりにできています。
>>> そうでなければ、なにかおかしいです。
>>>
>>> (2012/12/27 17:55), watanabe wrote:
>>>> 渡辺です。
>>>>
>>>> 回答ありがとうございます。
>>>>
>>>>> ja_JP.UTF-8のロケールデータを生成する例:
>>>>>        localedef -i ja_JP -c -f UTF-8 ./ja_JP.UTF-8
>>>> はい。ja_JP.UTF-8ディレクトリが出来たので、Armadilloの/usr/lib/locale/
>>>> にコピーしました。
>>>>
>>>>> また、LANG環境変数を設定するには、
>>>>> /etc/defaults/locale に設定を記述してあるならば、
>>>>>
>>>>> . /etc/defaults/locale  #設定の読み込み
>>>>> export LANG             #LANG環境変数をexport
>>>>>
>>>>> とすると、exportできます。
>>>> /etc/default/localeと言うファイルを作成し、中身は
>>>> LANG=ja_JP.UTF-8
>>>> となっています。
>>>>
>>>>> ※根本的な問題がフォントが無いことであった場合、また別の対応が必要に
>>>>>  なります。
>>>> Armailloには
>>>> /usr/share/fonts/X11と
>>>> /usr/share/fonts/truetypeとあるので、フォントは入っていると考えて
>>>> います。また、/etc/fonts/fonts.confにも<dir>/usr/share/fonts</dir>と言う
>>>> 記述があるので、良く分からないながらもフォントの設定は出来ていると
>>>> 思っています。
>>>>
>>>> という状況で、
>>>>
>>>> char *loc;
>>>> loc = setlocale(LC_CTYPE, "");
>>>> のlocは"c"になり、直後の
>>>> XSupportsLocale()の戻り値が0になって
>>>> しまいます。
>>>>
>>>> やはりまだロケールの設定が出来ていないのでしょうか?
>>>>
>>>>
>>>> (2012/12/27 12:03), Koyo Takenoshita wrote:
>>>>> 竹之下です。
>>>>>
>>>>> 一部、荘司が言っていることとかぶるのですが。。
>>>>>
>>>>>> 1)Armadilloのデフォルトではx11を使用しているが、ロケールは
>>>>>>  設定していないのでしょうか?
>>>>> 特に、設定はしていません。
>>>>>
>>>>>> 2)ロケールデータは、usr/share/localeからusr/lib/localeに
>>>>>>  アーカイブで作成され、
>>>>> そうですね。
>>>>> localedef(1)というコマンドで生成できます。
>>>>>
>>>>>> 最終的には"/etc/defaults/locale"
>>>>> /etc/defaults/locale には、単に LANG=ja_JP.UTF-8 などの
>>>>> 変数が記述してあるだけです。ロケールの設定が必要なところでは、
>>>>> みんな共通でこの設定を読み込んで使いましょう、ということに
>>>>> なっているようです。
>>>>>
>>>>>>  でPAMによって利用されるようになる(と書いてありました)。
>>>>>>  Atmark-distではPAMなる物をサポートしていますでしょうか?
>>>>> PAMはロケールとは関係ありません。
>>>>>
>>>>>>  サポートしていないとすると、ロケールはどのように設定すれば
>>>>>>  良いのでしょうか?
>>>>> /usr/lib/locale にロケールデータを置き、LANG環境変数を設定する
>>>>> という流れになります。
>>>>>
>>>>> /usr/lib/locale/locale-archive は、ロケールデータのアーカイブなので、
>>>>> どのロケールが入っているか分かりません。
>>>>> ATDE上で、下記のようにlocakedefを実行することで、特定のロケールデータを
>>>>> 生成できます。
>>>>>
>>>>> ja_JP.UTF-8のロケールデータを生成する例:
>>>>>        localedef -i ja_JP -c -f UTF-8 ./ja_JP.UTF-8
>>>>>
>>>>> 生成された ja_JP.UTF-8ディレクトリを、Armadilloの/usr/lib/locale/
>>>>> ディレクトリにコピーしてください。
>>>>> ※/usr/share/localeのデータは、Armadillo上での実行時には不要です。
>>>>>
>>>>> また、LANG環境変数を設定するには、
>>>>> /etc/defaults/locale に設定を記述してあるならば、
>>>>>
>>>>> . /etc/defaults/locale  #設定の読み込み
>>>>> export LANG             #LANG環境変数をexport
>>>>>
>>>>> とすると、exportできます。
>>>>>
>>>>> X serverにロケールを反映させるには、
>>>>> vendors/AtmarkTechno/Armadillo-440/etc/init.d/xfbdev で、
>>>>> X serverを起動する前に、LANG環境変数をexportするように
>>>>> するとよいと思います。
>>>>>
>>>>> これで、とりあえずロケールの設定はできるはずです。
>>>>> ※根本的な問題がフォントが無いことであった場合、また別の対応が必要に
>>>>>  なります。
>>>>>
>>>>> (2012/12/26 14:01), watanabe wrote:
>>>>>> 渡辺です。
>>>>>>
>>>>>> 件名を変更しました。
>>>>>>
>>>>>> XCreateFontSetでエラーになっているのかと調べましたが、
>>>>>> やはりロケールでエラーになっているため、XCreateFontSetでも
>>>>>> エラーになっているようです。
>>>>>>
>>>>>> 気分を一新して、デフォルト状態ではどうなっているかを
>>>>>> 調べてみました。
>>>>>> Armadillo-440を出荷状態に戻してから、
>>>>>> XSupportsLocale()を行うPRGを作成して実行してみたら、
>>>>>> その状態でエラーになってしまいました。
>>>>>> DISTはdebianではなく、Atmark-distを使用しています。
>>>>>>
>>>>>> 以下についてご教示ください。
>>>>>> 2)はArmadilloについての質問ではなく、LINUXに関する質問に
>>>>>> なってしまうかも知れませんがご容赦ください。
>>>>>>
>>>>>> 1)Armadilloのデフォルトではx11を使用しているが、ロケールは
>>>>>>  設定していないのでしょうか?
>>>>>> 2)ロケールデータは、usr/share/localeからusr/lib/localeに
>>>>>>  アーカイブで作成され、最終的には"/etc/defaults/locale"
>>>>>>  でPAMによって利用されるようになる(と書いてありました)。
>>>>>>  Atmark-distではPAMなる物をサポートしていますでしょうか?
>>>>>>  サポートしていないとすると、ロケールはどのように設定すれば
>>>>>>  良いのでしょうか?
>>>>>>
>>>>>> 以上、どうぞよろしくお願い致します。
>>>>>>
>>>>>> (2012/12/21 17:38), watanabe wrote:
>>>>>>> 渡辺です。
>>>>>>>
>>>>>>> 先程の質問ですが、自己解決しました。
>>>>>>> どうもお騒がせしました。
>>>>>>> my-product/config.linux-2.6.xを直接いじることにより、
>>>>>>> 32Mから64Mに変更されて、無事にブート出来ました。
>>>>>>>
>>>>>>> しかし。。。
>>>>>>>
>>>>>>> 本来は
>>>>>>> setlocale(LC_TYPE, "");
>>>>>>> XSupportsLocale()でエラーになってしまう対策で
>>>>>>> ロケールの環境を作成していましたが、結局駄目でした。
>>>>>>>
>>>>>>> 現在の設定は、
>>>>>>> usr/lib/locale/locale-archive
>>>>>>> usr/share/locale/en
>>>>>>> usr/share/locale/ja
>>>>>>> としました。ATDEにはusr/share/locale以下に沢山のフォルダ
>>>>>>> があったのですが、そんなに入れられないので、フォルダ名から
>>>>>>> これだろうと見当を付けて、enとjaだけにしました。
>>>>>>>
>>>>>>> その結果、
>>>>>>> setlocale(LC_TYPE, "");
>>>>>>> では"C"が返ってきますが、
>>>>>>> XSupportsLocale()では、相変わらずNULLが返ってきます。
>>>>>>> まだlocaleの設定が悪いのでしょうか?
>>>>>>>
>>>>>>>
>>>>>>> (2012/12/21 16:40), watanabe wrote:
>>>>>>>> 渡辺です。
>>>>>>>>
>>>>>>>> 回答ありがとうございます。
>>>>>>>> LINUXに不慣れなため、確認に時間が掛かってしまいました。
>>>>>>>>
>>>>>>>> ATDEの/usr/lib/locale/locale-archive(約2Mバイト)を
>>>>>>>> Armadilloに送ったのですが、リブートすると以下のエラー
>>>>>>>> が出て固まってしまいます。
>>>>>>>> "RAMDISK: ext2 filesystem found at block 0
>>>>>>>> RAMDISK: image too big! (34807KiB/32768KiB)
>>>>>>>> List of all partitions:"
>>>>>>>>
>>>>>>>> Ramdiskのサイズがオーバしてしまい、立ち上がれないのかと
>>>>>>>> 思います。過去のメーリングリストを調べてみたら、
>>>>>>>> [Armadillo:00952]カーネル側の設定を変更する必要がありそう
>>>>>>>> だと分かりました。
>>>>>>>>
>>>>>>>> email@hidden:~/atmark-dist$make menuconfig
>>>>>>>> で設定を変更しようと思ったのですが、RamDiskのサイズ変更
>>>>>>>> 方法の場所が見つかりません。
>>>>>>>>
>>>>>>>> RamDiskのサイズを増やす方法をご教示ください。
>>>>>>>>
>>>>>>>> (2012/12/19 9:55), Yasushi SHOJI wrote:
>>>>>>>>> At Tue, 18 Dec 2012 19:17:19 +0900,
>>>>>>>>> watanabe wrote:
>>>>>>>>>>
>>>>>>>>>> ・ロケールでエラーが出るので、
>>>>>>>>>> ・locaeldefを行いたい
>>>>>>>>>> ・そのために、\atmark-dist-20121023\glibc\locale\をmakeする
>>>>>>>>>> ・makeでエラーが出る(インクルードファイルが無いなどのエラー)
>>>>>>>>>>  のでそのエラーをつぶす
>>>>>>>>>>
>>>>>>>>>> アプローチの仕方は合っていますでしょうか?
>>>>>>>>>
>>>>>>>>> 上記の方法だと大変なので、「」localdef されたものを Debian から Atmark
>>>>>>>>> Distの環境に持っていってはどうか?」というのが提案でした。
>>>>>>>>>
>>>>>>>>> 上記、「Debianから」というところが問題です。
>>>>>>>>>
>>>>>>>>>           1) Armadillo で Debian 環境を構築し、そこからデータファイルを移動
>>>>>>>>>           2) ATDE はすでに Debian 環境なので、そこからデータファイルを移動
>>>>>>>>>
>>>>>>>>> という方法が考えられます。1) の方法が直感的ですし間違いがない方法なので
>>>>>>>>> すが、2)でも問題なく動くのではないかな?と思っていました。
>>>>>>>>>
>>>>>>>>> 1) の方法でも、Armadilloサイトから Debian をダウンロードできるので、そ
>>>>>>>>> れほど手間ではないと思います。
>>>>>>>>>
>>>>>>>>>> また、\atmark-dist-20121023\glibc\以下のフォルダはmakeだけでは
>>>>>>>>>> エラーが出てしまうのでしょうか?ちなみに、VMwarePlayerでATDE3で
>>>>>>>>>> ビルドしています。
>>>>>>>>>
>>>>>>>>> すみません。上記 glibc は過去の遺産で、今は使われていません。
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> armadillo mailing list
>>>>>>>> email@hidden
>>>>>>>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> armadillo mailing list
>>>>>> email@hidden
>>>>>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>>>>>>
>>>>>
>>>>
>>>
>>
> 




armadillo メーリングリストの案内