Linuxで動作するデーモンアプリケーションを作成しています。
デーモンが参照するロケール情報を取得したいのですが、定義されているファイル(Solarisの場合の/etc/default/initファイル)が、各ディストリビューションごとに異なっているため、エレガントな解決方法を探しています。

参照する定義ファイルは
RedHat6.2J・・・/etc/sysconfig/i18n
TurboLinux6.1・・・/etc/skel/.lang/i18n
OpenLinux・・・/etc/config.d/I18N
といった具合なのです。

なお、どのユーザが起動してもこれらのファイルに定義してあるロケール情報で動作する必要があるため、環境変数を参照するというのはNGです。

何かよいアイデアがありましたら、教えてください。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

「ロケール情報」というのが何を指すのかが良く分からない


のですが、ロケール名を知りたいのでしょうか?

setlocale() は第2引数に NULL を指定すると、現在の
ロケールを問い合わせるだけです。

参考URL:http://www.linux.or.jp/JM/html/LDP_man-pages/man …
    • good
    • 0
この回答へのお礼

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

ちなみにほしいロケール情報とは、ロケール名のことです。

お礼日時:2001/03/28 22:10

やっぱり環境変数ではないでしょうか。



ちなみにデーモンを「どのユーザが起動しても」というのが私の理解の範囲を超えているので間違っている可能性は高いです。

一般ユーザで起動するデーモンを書いたことが無いので…。
    • good
    • 0
この回答へのお礼

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

なお、「どのユーザが起動しても」というのは、ブート時にデーモンを起動するだけではなく、例えばbbbという特定グループのユーザが起動する場合も想定していました。
この場合、bbbの環境が有効になってしまう恐れがあるため、環境変数からロケールを取得するのは好ましくありませんでした。
(簡単にいってしまえば、syslogdと同じロケールで動作したかったのです。)
ありがとうございました。

お礼日時:2001/03/28 22:16

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QLinuxのユーザー設定

Linux で、あるユーザーはメール以外(sshやftpなど)なにも利用できないという設定はできますか?、

Aベストアンサー

出来るか、出来ないか?
というだけなら、まぁ、出来るかと思いますが……。

「ssh ユーザー 禁止」とか、「ftp ユーザー 禁止」とかで検索してみると出てくると思いますが。
# ssh禁止ならtelnetも禁止…でしょうかね。

ディストリビューションに依存するかどうかは微妙かも知れませんが。
# 設定ファイルの場所や名前が違う…って程度かとは思いますけどね。


メールの利用だけってのでしたら「バーチャルメールボックス」って手もあるかも知れません。
http://sakuratan.biz/archives/5182 など。

Q/etc/passwd と /etc/shadowをそっくり新サーバーにコピーすればログインできますか?

旧サーバー(Laser5-6.0)から新サーバー(RedHat7.3)に移行を考えています。新サーバーにも旧サーバーと同じアカウントとパスワードでログインできるようにしたいです。旧サーバーの/etc/passwdと/etc/shadowを新サーバーにコピーすれば可能でしょうか。もしだめなら、何かいい方法はありますか。

Aベストアンサー

コピーはまずいでしょう。
/etc/passwd /etc/groupの一般ユーザの行だけを抜き出して、くっつける必要がありますね。

/etc/shadowをいじるのは恐いので、pwunconv / pwconvコマンドでシャドウパスワードを無効化/有効化したほうが良いと思います。(シャドウを無効化してから/etc/passwdを編集する)

ただし、パスワードの暗号化アルゴリズムが異なると、どうなるかわかりません。

useraddコマンドでユーザを作成したら、/home/xxx 配下にデフォルトでいろいろな環境ファイルが作られますが、当然Laser5とRedHatでは異なるので、全ユーザのホーム配下の環境ファイルを入れ替える必要があります。

旧サーバと新サーバは同じマシンでしょうか?
もし別々にできるなら、旧サーバをNIS/NFSサーバにして、ユーザアカウント/パスワード/ホームを共有する事もできます。

余談ですが、今後もメーカー製Linuxは頻繁にバージョンアップするので、その度に悩むところです。いっその事、Debian/GNU Linuxを選択するという手もあります。

コピーはまずいでしょう。
/etc/passwd /etc/groupの一般ユーザの行だけを抜き出して、くっつける必要がありますね。

/etc/shadowをいじるのは恐いので、pwunconv / pwconvコマンドでシャドウパスワードを無効化/有効化したほうが良いと思います。(シャドウを無効化してから/etc/passwdを編集する)

ただし、パスワードの暗号化アルゴリズムが異なると、どうなるかわかりません。

useraddコマンドでユーザを作成したら、/home/xxx 配下にデフォルトでいろいろな環境ファイルが作られますが、当然Laser...続きを読む

QFTPパスワードとユーザーパスワードを別にしたい

Linux(RedHat7.3)、Wu-ftpdを使っています。
ユーザーアカウントを追加する際IDとパスワードを設定しますが、通常はPOPアカウント、FTPなど共通したIDとパスワードになりますが、FTPのパスワードだけ違うものにしたいのですが可能でしょうか?

Aベストアンサー

wu-ftpd ではできないかもしれませんが、FTP サーバソフトによっては DB や LDAP に対応しているものがあります。私は ProFTPD を使用していますが、これと OpenLDAPを組み合わせて、Unix アカウントのパスワードとは全く関連の無い ID/Password を使用可能にしています。

参考URL:http://www.proftpd.org/

QDNSサーバを構築しています。/etc/rc.d/init.d/named reloadのところでエラーになってしまいます。

RedHat Linux 9 でサーバを構築しています。
DNSサーバを作成しているところでつまづいてしまいました。

vi /etc/named.conf のところで正引き、逆引きのゾーンを追記し、
vi /var/named/**.jp.db の正引きゾーンデータベースを作成し、
逆引きの方もゾーンデータベースを作成しました。

あとは、etc/rc.d/init.d/named start とやって起動させ、
namedが自動起動するように chkconfig named on と実行しました。

しかし、設定を反映しようと、
/etc/rc.d/init.d/named reload としたのですが、
何度やっても失敗と出てしまいます。
画面には、一部を書きに記述すると、

Reloading named: usage : killall [OPTION] [--] name ・・・
   killall -l, --list
killall -V --version

-l,--list list all know signal name
-V,--version display version infomation

となっていました。
とりあえず、shutdown -r now で再起動しましたが、
設定が反映されていないようで、次の
vi /etc/resolv.conf でIPアドレスを記述したあと、
nslookup コマンドを実行してDNSサーバのテストでやってもエラーになってしまいます。
何が原因でしょうか?
長々と書いてすみません。分かる方、どうかよろしくお願いします。

RedHat Linux 9 でサーバを構築しています。
DNSサーバを作成しているところでつまづいてしまいました。

vi /etc/named.conf のところで正引き、逆引きのゾーンを追記し、
vi /var/named/**.jp.db の正引きゾーンデータベースを作成し、
逆引きの方もゾーンデータベースを作成しました。

あとは、etc/rc.d/init.d/named start とやって起動させ、
namedが自動起動するように chkconfig named on と実行しました。

しかし、設定を反映しようと、
/etc/rc.d/init.d/named reload としたのですが、
...続きを読む

Aベストアンサー

/etc/rc.d/init.d/named 内のkillallコマンドでエラーが出ています。
reloadですから、killallで一旦namedを止めて再起動するわけですが、
止めるべきnamedがもともと動いていない、と言う事では?

QLinux環境(wu-ftpd)でのftpログイン時メッセージ非表示方法

他計算機からFTPサーバへログインするときに表示されるメッセージ(バナー)を一切表示しないようにFTPサーバ側で設定する方法はありますでしょうか?
FTPサーバのOSはLinuxで、RedHat日本語版Linux7.3、FTPサーバは、wu-ftpd-2.6.2-5を使っています。

Aベストアンサー

/etc/ftpaccessのgreetingを変更してみてください。

参考URL:http://www2.ocn.ne.jp/~virii/sol8/install/wu-ftpd/idnex.html

Q/etc/fstab について

時動的にマウントをさせたいと思い本を読んでみると、/etc/fstab の設定をしろと書いてありました。そこで、わからなくなったので質問です。
LABEL=/ / ext2 defaults 1 1
LABEL=/boot /boot ext2 defaults 1 2
LABEL=/home /home ext2 defaults 1 2
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
LABEL=/u01 /u01 ext2 defaults 1 2
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/hda8 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0
/dev/hda9 /mnt/windata vfat defaults 1 2
といったい感じで書いてあったのですが、一番右の11とか、12とか、00とかの意味が分かりません。どうか、教えてください。お願いします。

時動的にマウントをさせたいと思い本を読んでみると、/etc/fstab の設定をしろと書いてありました。そこで、わからなくなったので質問です。
LABEL=/ / ext2 defaults 1 1
LABEL=/boot /boot ext2 defaults 1 2
LABEL=/home /home ext2 defaults 1 2
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
L...続きを読む

Aベストアンサー

man fstab
でわかりますが、
最初の数字がdumpコマンドで処理対象とするかどうかの
フラグで、0で対象外、1で対象とする
次の数字がフート時にfsckコマンドを実行する順序を示し,
0は実行しない、1は最初に実行する、2は1が全て終わったら実行する、・・・となります。

dumpはバックアップのコマンドみたいなものと思ってください。
fsckはscandiskみたいなものです。

参考URL:http://www.linux.or.jp/JM/html/util-linux/man5/fstab.5.html

Qlinuxでのftpクライアントプログラムをつくるには

Windows(VC++ MFCを使用して)などで ftpクライアントのプログラムを作成することが出来るみたいですが
linux(TURBO LINUX 4.0)で同様なことはできないのでしょうか?

具体的には 以下のようなことがしたいためです。
(1) ftpサーバーにlinuxマシンにてクライアントでログイン
(2) サーバー上のftpホームディレクトリにあるファイルができるまで周期的に監視
(3) 該当するファイルができたらファイルをクライアント側に転送

(1)~(3)を一回のftp接続状態のまま自動的(プログラム)で行ないたいのです。

VC++ MFCでは,FTPを行なうクラスがいくつかあるみたいですが?

どなたかわかりましたら御回答ください。

Aベストアンサー

>Ruby Kylixではなく linux上のC言語ライブラリーかシェルで実現することは不可能でしょうか?

もちろん可能でしょう。libftp というライブラリを使えばできそうですが、
オンラインマニュアルが見つからず、具体的な使い方については力が及びません。m(__)m

ですが、GTK+ を利用した FTP クライアントソフトに「Aria」というものがあります。
またシェルで FTP をサポートしているものはないと思いますが、
"シェルみたいに使える"「lftp」というプログラムもあります。
これらのソースコードを見るのも勉強になるのではないでしょうか。
他にもテキストウェブブラウザの「w3m」は ftp アクセス関数を自前で作っています。

・w3m について
http://w3m.sourceforge.net/index.ja.html
http://www2u.biglobe.ne.jp/~hsaka/w3m/doc-jp/STORY.html

>ただたしかKylixは,オブジェクトpascalという言語で記載すると認識しています。

Kylix はバージョン3からC/C++言語をサポートするようになりました。
その点、下の書籍は情報が古かったですね。言い忘れていました、すみません。

ただ、お使いの TurboLinux がバージョン4.0ということで、
glibc のローダのバグの問題があるかもしれません。
Kylix のトップページから一番下の「Kylix 事前テストプログラム」をクリックして
テストプログラムをダウンロードしてチェックする必要があります。
glibc 2.2 にアップグレードすればバグの心配はありません。

P.S. Ruby もなかなかいいもんですよ。

参考URL:http://aria.rednoah.com/linux_j.shtml,http://snap.shot.cx/1017221027/,http://www.borland.co.jp/kylix/

>Ruby Kylixではなく linux上のC言語ライブラリーかシェルで実現することは不可能でしょうか?

もちろん可能でしょう。libftp というライブラリを使えばできそうですが、
オンラインマニュアルが見つからず、具体的な使い方については力が及びません。m(__)m

ですが、GTK+ を利用した FTP クライアントソフトに「Aria」というものがあります。
またシェルで FTP をサポートしているものはないと思いますが、
"シェルみたいに使える"「lftp」というプログラムもあります。
これらのソースコードを見るの...続きを読む

Q/etc/servicesの設定について

Solaris2.6を使用しています。

/etc/servicesにプロトコルとポート番号の
対応を記述しますが、あるアプリで使ってい
るポートは、このファイルに対応を記述して
ないのに、ポートが使用できてしまいます。
(inetdとかのものではありません)
そのアプリでは、1024以上のポート番号
を使用しているのですが、その辺も関係ある
のかわかりません。
なぜ記述していないものも、動けてしまうの
か教えてください。

Aベストアンサー

> なぜ記述していないものも、動けてしまうのか教えてください。

まず、結論から言うと、ソケット通信を行う際に /etc/services にポート番号が
記述されていることは、必須ではありません。

プログラムの中に、直接ポート番号を記述することができます。

ただし、良く知られている番号以外は、ポート番号がかち合っちゃうことがある
ので、ソケット通信を行うアプリケーションが利用するポート番号を指定する
共通の仕組みとして /etc/services ファイルがあるのです。

ご存知のように、このファイルには、サービスを表す名前とポート番号が対で記述
してあります。

アプリケーションの方では、ポート番号ではなく、サービス名の方をプログラムの
中に記述をし、getservbyname() 関数などでポート番号を取得するように作ります。


このやり方でも、ポートに相当する「サービス名」をプログラム中に記述するわけ
ですから、そのサービス名が複数のアプリケーションでかち合ってしまう問題が
解消されているわけではありません。

ただの数値よりも、文字列の方が冗長度が高いので、かち合ってしまう問題が
起こり難いだろう、ということです。

> なぜ記述していないものも、動けてしまうのか教えてください。

まず、結論から言うと、ソケット通信を行う際に /etc/services にポート番号が
記述されていることは、必須ではありません。

プログラムの中に、直接ポート番号を記述することができます。

ただし、良く知られている番号以外は、ポート番号がかち合っちゃうことがある
ので、ソケット通信を行うアプリケーションが利用するポート番号を指定する
共通の仕組みとして /etc/services ファイルがあるのです。

ご存知のように、このファ...続きを読む

QLinuxサーバ間をFTP送信する

Windowsのマシンからある2つのLinuxマシン間のファイル転送をしたいのですが、
telnetを使用する以外の方法はないでしょうか。
具体的に言いますと、今はホームページ用のファイルをwindowsマシンから、FTPツールを使用して、
Linuxマシンにファイル転送しています。
今度、保存するサーバもLinuxマシンにする予定で、保存用のLinuxマシンからWebサーバのLinuxマシンにファイル転送する事になります。
FTPコマンドを使えばできるとは思うのですが、それ以外に方法はありませんか。
できればFTPツールを使って行えれば楽なのですが、2つのLinuxマシン間のファイル転送ができるツール(できれフリーの)はないのでしょうか。
ご存知の方がいらしゃいましたら、お願い致します。

Aベストアンサー

ファイル転送の1つにフリーで「samba」があり
ます。
エクスプローラーからLinuxマシンが参照でき、ファイ
ルの移動などもD&Dでできますので、扱いやすいとも
思います。

5年くらい前なら設定が面倒な記憶がありましたが、
最近はそのあたりが改善されたかもしれません。

WindowsとLinuxでは、改行コードの違いがあります
ので注意して下さい。

参考URL:http://www.samba.gr.jp/

Qbindインストール後、/etc/named.confが生成されない。

RHL7.3,bind-9.2.2rc1を次のようにインストールしましたが/etc/named.confが生成されません。findコマンドで探すと/etc/log.d/conf/services/named.confというのがあるんですがどうも目的のファイルではなさそうです。一体何がおかしいのでしょうか。

tar xvzf bind-9.2.2rc1.tar.gz
cd bind-9.2.2rc1
LANG=C
./configure - - exec-prefix=/usr
make
make install

Aベストアンサー

例えばですが。

$ gtar zxvf bind-9.x.x.tar.gz
$ cd bind-9.x.x
$ ./configure --prefix=/usr/local/bind --sysconfdir=/etc
$ make
$ su
# make install

システムや環境によってはコマンドラインを実行しても、 named.conf が生成されないかもしれません。
その場合、自分で作成すれば宜しいかと。

ご存じかとは思いますが。

> BIND Version 9.2.2rc1

はベータ版で、最新版は
「BIND Version 9.2.1」かと。

ご参考です。

参考URL:http://www.linux.or.jp/JF/JFdocs/DNS-HOWTO.txt


人気Q&Aランキング

おすすめ情報