• 締切済み

Linuxのデーモンが参照するロケール情報

Linuxで動作するデーモンアプリケーションを作成しています。 デーモンが参照するロケール情報を取得したいのですが、定義されているファイル(Solarisの場合の/etc/default/initファイル)が、各ディストリビューションごとに異なっているため、エレガントな解決方法を探しています。 参照する定義ファイルは RedHat6.2J・・・/etc/sysconfig/i18n TurboLinux6.1・・・/etc/skel/.lang/i18n OpenLinux・・・/etc/config.d/I18N といった具合なのです。 なお、どのユーザが起動してもこれらのファイルに定義してあるロケール情報で動作する必要があるため、環境変数を参照するというのはNGです。 何かよいアイデアがありましたら、教えてください。 よろしくお願いいたします。

みんなの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

「ロケール情報」というのが何を指すのかが良く分からない のですが、ロケール名を知りたいのでしょうか? setlocale() は第2引数に NULL を指定すると、現在の ロケールを問い合わせるだけです。

参考URL:
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/setlocale.3.html
tshibata
質問者

お礼

素早い回答、ありがとうございました。 結局、自分のパッケージをインストールする際に、インストールディレクトリ配下に、これらのファイルをシンボリックリンクを作成することで解決できました。 また何かありましたら、よろしくお願いいたします。 ちなみにほしいロケール情報とは、ロケール名のことです。

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.1

やっぱり環境変数ではないでしょうか。 ちなみにデーモンを「どのユーザが起動しても」というのが私の理解の範囲を超えているので間違っている可能性は高いです。 一般ユーザで起動するデーモンを書いたことが無いので…。

tshibata
質問者

お礼

素早い回答、ありがとうございました。 結局、自分のパッケージをインストールする際に、インストールディレクトリ配下に、これらのファイルをシンボリックリンクを作成することで解決できました。 また何かありましたら、よろしくお願いいたします。 なお、「どのユーザが起動しても」というのは、ブート時にデーモンを起動するだけではなく、例えばbbbという特定グループのユーザが起動する場合も想定していました。 この場合、bbbの環境が有効になってしまう恐れがあるため、環境変数からロケールを取得するのは好ましくありませんでした。 (簡単にいってしまえば、syslogdと同じロケールで動作したかったのです。) ありがとうございました。

関連するQ&A

  • CentOS5.3のロケールのデフォルト en(英語)を、ja(日本語

    CentOS5.3のロケールのデフォルト en(英語)を、ja(日本語)に変更したい。 /etc/sysconfig/i18n の値は、LANG=ja_JP.UTF-8 になっています。 しかしながら、一部の日本表記が、英語表記に自動変換されます。 日曜日 → sunday 日付 yyyy/mm/dd → mm/dd/yyyy という具合に 何処の設定が、好ましくないのでしょうか? ご教授宜しくお願いします。

  • Linuxでのpingでsendmsgだけのエラー

    TurboLinux8 Serverにて、2枚のNICを刺しサーバーを作成しています。 NICはWAN側とLAN側向けになっていて、それぞれのNICにpingを打つとWAN側はきちんと応答が帰りますが、LAN側のNICにpingを打っても下記のようになって応答が帰りません。 ping 192.168.0.101 ping : sendmsg ping : sendmsg ping : sendmsg ping : sendmsg : : これは、sendmsg以外何も出ていないのでどんなエラーなのか見当もつきません。 下記の定義を確認しましたが他にも確認する個所があれば教えてください。 ifconfigにて確認済み /etc/sysconfig/network /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1

  • linuxの文字コード変更について

    VPSの環境設定で文字コードをeucからutf8に変更したいのですがうまくいきません。 文字コード変更は以下の手順で行いましたが、変更手順に不足があればご教授ください。 1. /etc/sysconfig/i18nをLANG=ja_JP.UTF-8と変更する。 $cat /etc/sysconfig/i18n LANG=ja_JP.UTF-8 2. 一度ログアウトして、再度テラタームで入りなおす(ssh)。テラタームの端末設定をutf-8に変更する。 3.$LANGにutf8が設定されていることを確認。 $ echo $LANG ja_JP.UTF-8 4.文字コードが変更されているか確認するためdateコマンドを打つ→文字化け。 $ date 2012? 11キ・30ニ・カ簣ヒニ・22:44:34 JST ・その他情報 テラターム ver4.75 linxのディストリビューション CentOS5.8 以上、よろしくお願いします。

  • Red Hat Linux 9 について

    以前までのバージョンなら、/etc/sysconfig/static-routesに経路情報を書き込んだと思うのですが、9にバージョンアップしてから、そのファイルが見つかりません。どなたか9ではどこにあるかわかりませんか?教えてください、よろしくお願いします。

  • LANG="ja_JP.UTF-8"設定がサーバ再起動時正しく反映され

    LANG="ja_JP.UTF-8"設定がサーバ再起動時正しく反映されない・・・ Linux環境変数LANGをLANG="ja_JP.UTF-8"に設定したにも関わらず Linnxサーバを再起動するとLANGが「en_US.UTF-8」になってしまいます。 これはなぜでしょうか 環境はLinux Redhat5 環境変数をファイル内で設定するには,「/etc/profile」,「~/.bash_profile」, 「~/.bashrc」の3つがあると思いますが、これらのファイルにはLANG設定がありません。 /etc/sysconfig/i18nと/etc/sysconfig/auditdに以下のLANG設定がありました。 # cat /etc/sysconfig/i18n LANG="ja_JP.UTF-8" # grep LANG /etc/sysconfig/* /etc/sysconfig/auditd:# AUDITD_LANG to the empty string or the string "none". /etc/sysconfig/auditd:AUDITD_LANG="en_US" /etc/sysconfig/httpd:# change the locale in which the server runs, the HTTPD_LANG /etc/sysconfig/httpd:#HTTPD_LANG=C /etc/sysconfig/i18n:LANG="ja_JP.UTF-8" 以上

  • Linuxでのstatic routeの追加

    お世話になります。 Linuxでstatic routeを追加しようとしており、 OSリブート時に設定が消えてしまわないようにroute addコマンドではなくファイルに直書きしようと思ったのですが、記載するファイルが2つあるみたいで、どちらに記載すれば良いか困っています。 /etc/sysconfig/static-routes /etc/sysconfig/network-scripts/route-eth0 どちらに書けば良いか教えて頂けますでしょうか? 情報が足りないようでしたら補足致します。 よろしくお願い致します。

  • linuxでの文字化けについて

    例えば「ls a」とかで存在しないファイルを指定した時に文字化けします。 文字コードはデフォルトのままですがEUCです。 /etc/sysconfig/i18nの中身は LANG="ja_JP.eucJP" SUPPORTED="ja_JP.eucJP:ja_JP:ja" となっています。 何が問題なのでしょうか? 教えて頂けると助かります。

  • 1台で複数セグメント持つ際の設定(Linux)

    1台のLinuxサーバに、NICを2つ搭載し、それぞれ別のネットワークセグメントを想定した場合の設定方法を教えてください。 異なるネットワークセグメントを持つことから、ホスト名、IPアドレス、デフォルトゲートウェイもそれぞれ異なります。 /etc/sysconfig/networkには、HOSTNAME と GATEWAY の設定が必要だと思いますが、/etc/sysconfig/network の定義ファイルは2つ必要なのでしょうか。 /etc/sysconfig/network-scripts/ifcfg-eth[] は、ifcfg-eth0とifcfg-eth1 を作成することが必要だと考えてます。 /etc/sysconfig/networkを2つ(??)作成する必要があるのかどうか、わかりません。 【OS】 Red Hat Enterprise Linux 5.6

  • デーモンを自動起動→tar解凍が行えない

    RHEL3を使っています。 とあるデーモンを起動するスクリプトを/etc/rc.d/init.d/に配置し、 chkconfig --addで登録してOS起動時にデーモンが自動起動するようにしています 更に、そのデーモンプロセスからシェルが実行されるのですが そのシェルの中でtar -xvf コマンドでtarファイルを解凍しようとしたとき 解凍が行えず、シェルスクリプトの動作もそのまま止まってしまう現象が発生しています。 現在確認している限りでは、デーモンの起動、シェルの起動は問題なく行えています。 また、デーモンを手動で立ち上げなおせば、tar解凍は問題なく行えるようになります。 以上の現象について、原因、解決方法など 何か情報がありましたら教えていただきたく、宜しくお願いします。

  • FedoraCore4のルーティング情報はどこにある?

    FedoraCore4のrouteコマンドで見えるルーティング情報は、どの ファイルに記述されているのでしょうか? /etc/sysconfig/static-routesとかも見あたりませんし…。 ご存じのかたがいらっしゃったら教えてください。