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

watanabe email@hidden
2012年 12月 29日 (土) 15:02:45 JST


渡辺です。

顔を洗って見直したのですが、うまく行きません。

<状況>
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 メーリングリストの案内