2005年11月19日

yumでエラーが出る場合の対処

Fedora Core 4でしばらく間をあけてyumを使ってupdateしようとしたら、エラーが出て更新できない状況になったので対処法を書いておきます。

追記:こちらの記事「[FC4]Yumでエラーが出た場合の対応」もご参考にどうぞ

よくあるパターンとして。
1)yum自体が古い(まずyumだけupdateする)
2)更新先のURLが古い
3)configがおかしい

とかありますが、今回はなんか謎だったのでいろいろ試しました。

------error message------
Traceback (most recent call last):
File "/usr/bin/yum", line 27, in ?
yummain.main(sys.argv[1:])
File "/usr/share/yum-cli/yummain.py", line 170, in main
base.doTransaction()
File "/usr/share/yum-cli/cli.py", line 651, in doTransaction
problems = self.downloadPkgs(downloadpkgs)
File "__init__.py", line 605, in downloadPkgs
File "repos.py", line 619, in get
File "/usr/lib/python2.4/site-packages/urlgrabber/mirror.py", line 414, in urlgrab
return self._mirror_try(func, url, kw)
File "/usr/lib/python2.4/site-packages/urlgrabber/mirror.py", line 392, in _mirror_try
mirrorchoice = self._get_mirror(gr)
File "/usr/lib/python2.4/site-packages/urlgrabber/mirror.py", line 290, in _get_mirror
return gr.mirrors[gr._next]
IndexError: list index out of range
------error message------

続きを読む
posted by まきすけ at 17:11 | Comment(2) | TrackBack(3) | Linuxとか

2005年11月18日

JBuilderが起動しない場合の対処

JBuilder Foundation 2005をインストールしましたが、何故かスプラッシュが一瞬表示されるだけで起動しなかったので悩んでいたところ、JavaスペシャリストのYさんに聞いたら即解決できました。

[installしたディレクトリ]\bin\jbuilder.config ファイルを開いて、25行目のvmmemmaxを変更します。
-----jbuilder.config-----
# 大規模アプリケーション用に VM 引数の指定
vmmemmin 32m
vmmemmax 75%

初期はメモリの75%を使うことになっているので、コメントアウトする。

-----変更後jbuilder.config-----
# 大規模アプリケーション用に VM 引数の指定
vmmemmin 32m
#vmmemmax 75%
vmmemax 256m

メモリを256MBに指定。

これで直ります。
posted by まきすけ at 18:41 | Comment(0) | TrackBack(0) | Linuxとか

2005年11月15日

PHPでのメール送信時に送信者がnobody@host名になってしまう

PHPでメール送信時に送信者がnobody@host名になってしまい、あて先不明メールがきちんと戻ってこないとか、リレーを拒否されてしまうということがあるのでその回避方法。

PHPで日本語のメール送信の場合mb_sendmailを使うと思いますが、バージョンによってはバグがあるとのことで私はmail関数を使いました。
なお、mail関数の場合は、サブジェクトや本文をエンコードしてあげる必要があります。

で、本題のSenderの変更ですが、optionで指定します。これを指定するとSender = Return-Pathも書きかわります(サーバによっては書き換えられたsenderを許可しないものもあります)
オプションに「-fメールアドレス」を指定するだけです。

続きを読む
posted by まきすけ at 23:52 | Comment(0) | TrackBack(0) | Linuxとか

PHPでの文字化け対策

PHPでの文字化け対策です。
通常の文字は化けないのに、ある特定の文字(長 とか 端)を1文字だけPOSTすると化けるという現象に襲われて調べました。

基本はEUC-JP(あるいはUTF-8)で統一するのがベストです。

php.ini の設定
output_buffering = Off
default_charset = "EUC-JP"
mbstring.language = Japanese
mbstring.encoding_translation = On
mbstring.http_input = EUC-JP
mbstring.http_output = pass(EUC-JP)
mbstring.internal_encoding = EUC-JP
mbstring.substitute_character = none
mbstring.detect_order = EUC-JP,SJIS,UTF-8,JIS

mbstring.http_output もEUCだけならEUC-JPのほうがいいみたいです。
mbstring.detect_order はある程度文字コードが予測できるならばautoよりも決めうちのほうが良いらしい。



posted by まきすけ at 23:39 | Comment(0) | TrackBack(0) | Linuxとか

sendmailのデフォルトリレー先の設定

社内LAN内のサーバなどで、直接外部へ配送できないようになっている環境の場合はSendMailに対して常にリレー先のSMTPサーバを設定する必要があります。
要するに、SendMailへキューが来たら常に同じメールサーバへ転送しまくるという設定です。

なかなか情報が無くて探すのが大変だったのですが、意外と単純だったのでかえって情報が少ないのかもしれません。

ここでの環境は Fedora Core 4 またはRedHat系になります。

【設定方法】
■/etc/mail/sendmail.mc を編集する。
編集する前にsendmail.mcとsendmail.cfのオリジナルをコピーしておくことをお勧めします。

22行目あたりに、下記のようなSMART_HOSTという記述があると思うので、これを変更します。

dnl define(`SMART_HOST',`smtp.your.provider')

define(`SMART_HOST',`smtp:smtp.yourdomain.jp')dnl

smtp:の後にはもちろん自分のところで使っているメールサーバ名を入れます。
(IPでも通るかは試してません)

■/etc/mail/sendmail.cf を作成。
m4コマンドでsendmail.cfを更新します。

# m4 sendmail.mc > sendmail.cf

これでSendMailを再起動すれば常に指定したサーバへリレーしてくれます(多分)


【特定のドメインだけ特定のホストへ転送したい】
転送するドメインがあらかじめ決まっている場合は、/etc/mail/mailertable にドメインと転送先のSMTPサーバを記述して、mailertable.db を更新すればOK。

/etc/mal/mailertable
----
転送するドメイン smtp:転送先SMTPサーバ
----

例)
yahoo.co.jp smtp:smtp.yahoo.co.jp

mailertable.dbの更新
# makemap hash mailertable.db < mailertable

その後SendMailをrestartさせればOK。


(2007/02/21追記)

■ メール送信テスト

$ /usr/sbin/sendmail -t -i <宛先メールアドレス>
To: <宛先メールアドレス>
Subject: <サブジェクト>
<本文>

[Ctrl]+[D]を押すと送信されます。

メールが正しく送信されたかを確認するには、/var/log/maillogをtailして確認してください。
続きを読む
posted by まきすけ at 23:32 | Comment(0) | TrackBack(0) | Linuxとか

2005年08月20日

自分でインストールしたサービスを chkconfig --add するためには

自分でコンパイル・インストールしたApacheなどを自動起動させるためにchkconfig --add するためには、/etc/init.d/ に配置した起動・停止スクリプトにchkconfig用のコメントを記述しておく必要がある。

記述しておかずに chkconfig --add した場合は下記のようなメッセージが出て怒られる。
service XXXX does not support chkconfig

/etc/init.d/の起動・停止ファイルへ下記のようにコメントを追加する。

#!/bin/sh
# chkconfig: 345 98 20
# description: Watch system status
# processname: hotsanic


# chkconfig: 345 98 20
最初の345は起動するランレベル。
次の98は起動時の優先順位。
最後の20は停止時の優先順位。

descriptionとprocessnameはお好きに。

# chkconfig --add [サービスファイル名]
とやると追加されます。

# chkconfig --list | grep [サービスファイル名]
と打ち込んで、実際に追加されたか確認する。

続きを読む
posted by まきすけ at 12:59 | Comment(0) | TrackBack(2) | Linuxとか