X



トップページLinux
797コメント298KB
なにはともあれSLAX
0001よーだ
垢版 |
2006/08/25(金) 08:34:04ID:hyAu/OJ9
ディストリの壁をこえて SLAX を語ろう。
0101login:Penguin
垢版 |
2006/09/30(土) 19:41:31ID:Wph1O9KW
slax-ja-5.1.7b-2.moが日本語化モジュールなんでしょうけれども、各国(ro,tw等々)でのそれぞれの国語化って同じようなモジュール形式で実現してるんでしょうか。
また本家は「国際化」特にCJK対応について何か意見を持ってるんでしょうか。
0102login:Penguin
垢版 |
2006/09/30(土) 21:54:37ID:Wph1O9KW
この板では話おおきいかも知れませんが日本の将来のために「Linuxの日本語化」ってものすごく大きい意味を持つと思います>世耕さん>安倍さん
0103login:Penguin
垢版 |
2006/09/30(土) 23:28:13ID:0vRzkQaS
>>101
言語別にひとつのモジュールにまとめるという話は本家フォーラムでは見たことないです。
ただ、こういうのができたよと言語用のモジュールを提供するのは、Tomasは気軽に受け
とってくれます。とってもフレンドリーな感じです。
マルチランゲージとして下のURLにあるのですが、これもバラバラという感じですよね。
http://www.slax.org/modules.php?category=multilang
一度、すべての日本語に関するファイルをひとつのモジュールにまとめようとしたことが
あったのですが、そのときはuimがどうしても動いてくれなくて諦めました。
いま、Slax標準が196MBで、日本語版が253MBというサイズになっています。単純に
日本語モジュールとひとつにまとめると57MBということになるので、このサイズがSlaxに
は大きすぎるのかなぁと思ってもいます。
僕としては、Slax本家の標準に最低限の日本語環境で使いやすいものを提供して、あと
はユーザがそれに加えて自分の使いたいものを自由に入れてくれればいいかなぁと。
Slax自体がとってもカスタマイズしやすいものなので、そうするのが自由なソフトウェアと
して相応しいじゃないかと思ったりしていますが、どうでしょうか。
0104login:Penguin
垢版 |
2006/10/01(日) 11:20:51ID:5HJpYhn/
>>103
ありがとうございます。
slaxのコンセプトは「軽い」ということと「カスタマイズが簡単」ということだと思いますので、「最低限の日
本語環境の提供」案に賛成です。ここで具体的に整理したいのですが、たとえばja5.1.7b2なら以下のようなモ>
ジュールが、その最低限の日本語化部分の骨格になると理解していいですか。

●基本部分
slax-ja-5.1.7b-2.mo
glibc-i18n-2.3.6-noarch-3.mo

●フォント
ipafont-ttf-noarch-1.mo

●KDEまわり
kde-i18n-ja-3.5.3-noarch-1.mo
koffice-l10n-ja-1.5.1-noarch-1.mo

●日本語入力まわり
uim-1.2.0-i386-1.mo
anthy-7900-i386-1.mo
0105login:Penguin
垢版 |
2006/10/01(日) 14:49:03ID:nsJeQoPa
>>102
経済産業省のやってるクノッピて、国家プロジェクトじゃないの?
まぁ、あんまりというか全く宣伝してないけど。
小中高はWinじゃなくてlinux使わせようよ。
0106login:Penguin
垢版 |
2006/10/01(日) 17:45:56ID:xcC/CkYC
>>104
あと補足すると、

●印刷
cndrvcups-common-1.20-i386-2.mo
cndrvcups-lips4-1.20-i386-3.mo
espgs-8.15.2-i486-1.mo
gimp-print-4.2.7-i486-2.mo
gnu-gs-fonts-6.0-noarch-1.mo

●エディタ
vim-7.0.017-i486-1.mo

●その他
k3b-i18n-0.12.15-noarch-1.mo


残ったのは
glibc-profile-2.3.6-i486-3.mo
だけど、これって日本語化と関係あるんですか。
0107login:Penguin
垢版 |
2006/10/01(日) 23:20:41ID:xcC/CkYC
さっき
ttp://squashfs.sourceforge.net/
からたどってsquashfs3.1-r2.tar.gzをおとしてbuildしてみました。
カーネルパッチはめんどーなので当てなかったのですが、./squashfs-tools/ 以下で make したら mksquashfs と unsquashfs という圧縮・解凍コマンド対ができました。
これを使うと他ディストロからでもSLAXの *.mo が作れたり、内容のリストとったりできそうです。

$ mksquashfs file1 file2 file3 hoge.mo
$ unsquashfs -l hoge.mo
0108login:Penguin
垢版 |
2006/10/02(月) 00:00:55ID:ZBxzw4zV
>>106
glibc-profile-2.3.6-i486-3.moは、uimを動かす過程で、glibc-i18n-2.3.6-noarch-3.moと
一緒に入れました。本当に必要かわからなかったんだけど、両者を一緒に入れたときに
uimが動いてくれたので、そのままになっています。
このglibc-profile-2.3.6-i486-3.moって、なんのためのライブラリなんでしょうね。
0109login:Penguin
垢版 |
2006/10/02(月) 00:15:56ID:D3+ZApa1
>>105
小中高はwinじゃなくてlinuxというのは、同感なんだけど、高校卒業して就職したとき
会社がwinだったりすると、linuxを導入した高校は使えないという評価になるんで、
なかなか難しかったりするようです。同じように大学がwinだったりすると、そこでlinux
だけをやっている学生は遅れたりすることがあるんじゃないかなぁと危惧してみたり。

knoppixは、日本語版knoppixは産総研の須崎さんの研究テーマのひとつで、別の
ところでも一部を支援はしているけど、国家プロジェクトというほどではないですよ。
国家プロジェクトというと国の都合で推進するわけで、そういうのとは別にやっている
ほうが健全だと思ったりして。プロジェクトにべったりだと、国の都合で方針を変えな
くちゃいけなかったり、いきなりやめられて途方にくれたりすることがままあります。
0110login:Penguin
垢版 |
2006/10/02(月) 00:20:46ID:D3+ZApa1
>>107
すごいですねぇ。
僕なんか、モジュールを作るのはslackwareでtgzファイルを作って、それをslax上で
tgz2moコマンドで変換しています。もうひとつのmo2tgzコマンドを使う場合、よく
バージョンの違いで怒られることがあるのですが、mksquashfsだとどうですか。
怒られないなら、こっちにしたいなぁ。
0111login:Penguin
垢版 |
2006/10/02(月) 08:59:45ID:+nsWYShe
>>110
よく見たらisoイメージの./tools以下にmksquashfsとunsquashfsがありました。
*2moのコマンド群は、おなじ./tools以下にあるliblinuxliveという、関数登録用のスクリプトを起動したのち、その中の

create_module()
{
mksquashfs "$1" "$2" $3 >/dev/null
if [ $? -ne 0 ]; then return 1; fi
chmod oga-x "$2" # remove execute attrib
}

を使っていました。つまり間接的にmksquashfsを使っていることになります。いわばwrapperですね。
0112login:Penguin
垢版 |
2006/10/02(月) 09:00:36ID:+nsWYShe
>>110つづき
またmo2dirでは同じliblinuxliveの中の

mount_module()
{
mount -t squashfs -o loop,ro "$1" "$2"
err=$?
if [ $err -eq 0 ]; then
echo "$1 $2" >>/tmp/_mounts
fi
return $err
}

を使用していました。
unsquashfsというコマンドを使うのではなく、kernelにsquashfsパッチを当てているようです。
エラーを返すというのはこのmountの動作に関してでしょう。

unsquashfsで一部の*.moを解凍しようとすると次のようなエラーが出ます。これも類似の現象だと思います。

Major/Minor mismatch, filesystem on Avidemux_2_0_40.mo is (2:1)
I only support Squashfs 3.0 filesystems! Later releases will support older Squashfs filesystems

つまり、もう少ししたら3.0以前のsquashfsにも対応するから待っててね、ということのようです。
0113login:Penguin
垢版 |
2006/10/02(月) 09:09:01ID:+nsWYShe
>>108
The glibc-profile package includes the GNU libc libraries and support for profiling using the gprof program.
Profiling is analyzing a program's functions to see how much CPU time they use and determining which functions are calling other functions during execution.
To use gprof to profile a program, your program needs to use the GNU libc libraries included in glibc-profile (instead of the standard GNU libc libraries included in the glibc package).

If you are going to use the gprof program to profile a program, you'll need to install the glibc-profile program.

以上、赤帽のサイトから。これ見るかぎりglibcのプロファイリング用のライブラリ群のようですな。あまり必要ではなさそうなのですが、どうしてuimの動作と関連するのでしょう..
0114login:Penguin
垢版 |
2006/10/02(月) 12:34:19ID:+nsWYShe
ためしに/modules以下のglibc-profile-2.3.6-i486-3.moを消して起動してみました。
(USBだとこういうのが簡単 ^^;)
今のところuim1.2.0も問題なく動いています(Konsole/KDEでも、jfbtermのuim-fepも)。
しばらくこのprofileモジュール外して使ってみます。もし不具合でたら報告します。
0115login:Penguin
垢版 |
2006/10/02(月) 13:51:08ID:+nsWYShe
fd使いのために。
.fd2rc で次のような関連付けをしてみると*moファイルの扱いがなじんできます。

arch ".mo" "mksquashfs %TA %C &>/dev/null" "unsquashfs %C"
0116login:Penguin
垢版 |
2006/10/02(月) 14:40:46ID:+nsWYShe
追加

launch ".mo" "unsquashfs -l %C|$PAGER"
0117login:Penguin
垢版 |
2006/10/02(月) 21:52:12ID:DY7TgomC
>>116
エラー表示も重要
launch ".mo" "unsquashfs -l %C 2>&1 |$PAGER"
0118login:Penguin
垢版 |
2006/10/02(月) 23:13:43ID:D3+ZApa1
>>113
すいません、言葉が足りませんでした。
uimをmakeするときに、i18nとprofileを一緒に入れて動いたのが確認できたので、
それをそのまま使っています。glibc関連のライブラリは、その他のモジュールで
使う場合があるので、そのままにしておこうという感じです。
0119login:Penguin
垢版 |
2006/10/04(水) 11:55:28ID:JbpUhSjT
>>112
unsquashfsでエラーが出るということはSLAXがブートするときにも読めてないということだろうか?
とくにエラー表示ないけどなあ。
SLAXのkernelはsquash 2.x と 3.xの両方が読めてるってことか。
すくなくとも本家のlibdvdcss_1_2_8_2.mo, alien_8_56.mo, XChat_2_6_1.mo, Syslinux_2_13.moはunsquashfs3.1では読めなかったぞ。(本家のモジュールには2.xと3.xのsquashfsが混在しているが、これでいいのか)
0120login:Penguin
垢版 |
2006/10/04(水) 16:39:57ID:JbpUhSjT
squashfs2.xとか3.xとかいうことより、
Ftp://ftp.slax.org/SLAX-6.x/testing/technology-preview/READMEによると
using LZMA compression for squashfs. This is not backwards compatible with old Slax modules, but it's better so Slax will switch to it.
ということなので、いずれ全てのモジュールは新しくならざるをえない。これってsquashfsが3.2ないし4.0になるってことか?
0121login:Penguin
垢版 |
2006/10/05(木) 02:45:49ID:vKxreEEd
>>119
ブートするときに読めてないということではないみたいです。
単にmo2dirで展開するときに、失敗するみたいですね。
それを作ったときのsquashfsのバージョンで展開しなくちゃいけないんだけど、
どのバージョンなのか分からないまま、try & errorは避けたいです。
0122login:Penguin
垢版 |
2006/10/05(木) 02:59:09ID:vKxreEEd
>>120
確かに圧縮形式が変わればモジュールのコンパチビィリティが失われるので、
これまでのモジュールは使えなくなりますね。そこのところを確かめようと、
squashfsのウェブページを見たのですが、それらしいのを見つけられませんでした。
根拠が薄いのですが、次期slaxからunionfsをaufsに変更するように、squashfsも
another squashfsにするような気がします。

squashfsの作者がLZMAは好ましく思っていないというTomasのコメントがあるから
そうかも。それよりスピードが遅いというスレッドも本家でたっているので、ひょっと
したら見送られる可能性もあります。
0123login:Penguin
垢版 |
2006/10/05(木) 09:15:43ID:JRU68BeF
>>122
ftp://ftp.slax.org/SLAX-6.x/testing/technology-preview/devel/lzma-for-squashfs.tar.gz
これ、LZMAパッチの当たったsquashfsのソースだろうか。
展開コマンドunsquashfs.cについてはそのまんまのようだけど、同じunsquashfsで通用するってことかな。
いずれにしてもunsquashfsがもちっとかしこくなって、
モジュールの圧縮形式[version]まで自動検出できるようになってほしい。
それと旧バージョンの圧縮モジュールを別のバージョンの圧縮モジュールに変換するようなコマンドも。
0124login:Penguin
垢版 |
2006/10/05(木) 12:37:13ID:JRU68BeF
バイナリダンプしてみると、squashfs3.xで圧縮したものは0x6fから8バイトにわたってナゾの0xffが続いている。これはunsquashfs3.1がきちんと読める。
unsquashfsがエラーを返す*.moファイルはみな、0x6fから0xffが続かないものばかりだ。まあこんなreverseするより、mksquashfsのソース読むのが正道なんだろけど。
0125login:Penguin
垢版 |
2006/10/05(木) 13:39:22ID:JRU68BeF
ソース読みマスタ。squashfs_fs.hの中のstruct squashfs_super_block。
0xc-0xd(第29-30バイト)がmajor version, 0xe-0xf(第31-32バイト)がminor versionのようだ。0xffが続くとかどうとかはあまりspecificではなかった。撤回。
0126login:Penguin
垢版 |
2006/10/05(木) 15:32:09ID:JRU68BeF
ということでどのバージョンのsquashfsで圧縮されているかのチェックはbashなら

function checksqver { dd if=$1 bs=2 count=2 skip=14 2>/dev/null|ruby -ne 'p $_.unpack("M")'; }

という感じになるかな。出力はきれいじゃないが、まあとりあえずの情報だけは得られる。テキトーにいぢってくれ。
usage: checksqver <filename>
0127login:Penguin
垢版 |
2006/10/05(木) 15:53:57ID:JRU68BeF
123-126まで却下。unsquashfsがきちんと処理していた。やれやれ。
0128login:Penguin
垢版 |
2006/10/05(木) 19:57:19ID:PONBBqlJ
>>127
いやいや、どこにバージョン情報があるかよくわかりました。
0129login:Penguin
垢版 |
2006/10/06(金) 10:23:10ID:+QMgQO8T
linux自体昨日初めて聞いて触ったんだけど、これでFAX送ろうと思ったけど送れないよ。
どうやったらいいのかな。
0130login:Penguin
垢版 |
2006/10/06(金) 11:54:13ID:bFSkCVhU
たとえばwindow managerがKDEならば「KDE fax 送信」でググられてはいかがかと。
0131login:Penguin
垢版 |
2006/10/06(金) 17:56:10ID:bFSkCVhU
>>126
function checksqver{ test -f $1 && ruby -e "ARGF.seek(28); p ARGF.read(4).unpack('M')" $1; }
0132login:Penguin
垢版 |
2006/10/06(金) 18:00:34ID:bFSkCVhU
function checksqver { test -f $1 && ruby -e "ARGF.seek(28); p ARGF.read(4).unpack('M')" $1; }
^
空白!!
0133login:Penguin
垢版 |
2006/10/07(土) 13:23:32ID:7RjSdMdC
>>132
function checksqver { test -f $1 && ruby -e "p IO.read(ARGV.shift,4,28).unpack('M')" $1; }
0134login:Penguin
垢版 |
2006/10/09(月) 13:22:39ID:7wkUnpBE
Slax_Module_Inspector_060611.mo を使えば3.xも2.xも処理できます。
0135login:Penguin
垢版 |
2006/10/09(月) 13:37:42ID:7wkUnpBE
つーか、これブート時に展開したときのログみたいなもんを利用するモジュールかも。
0136login:Penguin
垢版 |
2006/10/09(月) 17:35:50ID:7wkUnpBE
お。本家で5.1.8が出ましたね。
0137login:Penguin
垢版 |
2006/10/09(月) 23:52:37ID:sK79ZViL
これってデフォルトのWMはKDEだけ?
0138login:Penguin
垢版 |
2006/10/10(火) 13:32:04ID:WbtrmFIN
>>137
標準ではKDEとfluxboxだけだと思うけど、www.slax.orgにgnome, fvwm, xfceなどのモジュールがあるのでgetして /modules以下に置けば使用できると思います。
ttp://www.slax.org/modules.php?category=system
0139login:Penguin
垢版 |
2006/10/10(火) 13:52:40ID:hIAZPxPA
LiveCDの部屋に5.1.8がupされとるで
0140login:Penguin
垢版 |
2006/10/10(火) 21:42:12ID:nFDn8HEs
●517jpにだけあるモジュール
ochusha-0.5.8.2-3.i386.mo
openprinting_mona-jp-0.1.3-0.i586.mo

●518jpにだけあるモジュール
jd-1.7.0-060927.mo
openprinting_M+mona-jp-0.1.3-0.i586.mo
slax_5.1.8.mo

■この/modules/slax_5.1.8.moというモジュールは517jpでは/rootcopy以下におかれていたファイルをモジュール化したもののようだ。
これら設定ファイルのうち517jpにだけあって518jpには含まれないものは
/root/.fonts.conf

また、設定ファイルのうち518jpであらたに追加されたものは
/etc/fonts/local.conf
/etc/rc.d/rc.local
/usr/bin/startfluxbox
0142login:Penguin
垢版 |
2006/10/11(水) 09:12:54ID:l7bVgBMg
はじめて使ったがjdもなかなかいいな。開発が続いている点でイチオシか。
0143login:Penguin
垢版 |
2006/10/11(水) 16:57:15ID:l7bVgBMg
>>140
517jpと518jpの/modules以下の*.moは、名前の同じものは日付がちがっても全く同じバイナリやね。
まんま動くということのようです。
0144login:Penguin
垢版 |
2006/10/12(木) 11:11:49ID:Koz2C7Fz
本家slax518とslax518jpの相違点の詳細(その1)

▼相異点1
バイナリー・ファイルtmp/518/boot/initrd.gzとtmp/518jp/boot/initrd.gzは違います
--> initrd.gzに含まれるliblinuxliveスクリプトのutf8対応の部分のみの変更 => 以下の「相異点3」参照

バイナリー・ファイルtmp/518/boot/isolinux.binとtmp/518jp/boot/isolinux.binは違います
バイナリー・ファイルtmp/518/boot/isolinux.bootとtmp/518jp/boot/isolinux.bootは違います
--> isoイメージを作成するときに生成されるファイルだからか..

▼相異点2
518jpでは/modules以下に追加モジュールが置かれている。<= まあ当然

(つづく)
0145login:Penguin
垢版 |
2006/10/12(木) 11:13:10ID:Koz2C7Fz
本家slax518とslax518jpの相違点の詳細(その2)

▼相異点3
diff -r tmp/518/tools/liblinuxlive tmp/518jp/tools/liblinuxlive
456c456,461
< if [ "$IOCHARSET" != "" ]; then OPT="$OPT,nls=$IOCHARSET"; fi
---
> # if [ "$IOCHARSET" != "" ]; then OPT="$OPT,nls=$IOCHARSET"; fi
> if [ "$IOCHARSET" != "" ]; then
> OPT="$OPT,nls=$IOCHARSET"
> else
> OPT="$OPT,nls=utf8"
> fi
460c465,472
< if [ "$FS" = "vfat" -a "$IOCHARSET" != "" ]; then OPT=",iocharset=$IOCHARSET"; fi
---
> # if [ "$FS" = "vfat" -a "$IOCHARSET" != "" ]; then OPT=",iocharset=$IOCHARSET"; fi
> if [ "$FS" = "vfat" -a "$IOCHARSET" != "" ]; then
> OPT=",iocharset=$IOCHARSET"
> else
> if [ "$FS" = "vfat" ]; then
> OPT=",iocharset=utf8,codepage=932"
> fi
> fi

●結論:本家slax518とslax518jpの相違は、追加モジュールの他にはliblinuxliveスクリプトの一部(上記)変更のみである。
0146login:Penguin
垢版 |
2006/10/12(木) 15:08:36ID:s42DJ75o
>>145
調査乙
fstabを作成するときなど、パーティションがvfat,ntfsのときにオプションに
{iocharset|nls}=utf8, codepage=932
を付けるための修正だね。
0147login:Penguin
垢版 |
2006/10/12(木) 15:54:54ID:Koz2C7Fz
>>146
なるほど。
これって台湾や中国、韓国でもそれぞれ同様の変更が必要となりそうですね。
case of $LANG ; esac とか使って汎用スクリプトってかけないかな>Tomas
0148login:Penguin
垢版 |
2006/10/12(木) 16:06:17ID:Koz2C7Fz
case $LANG in
ja_JP* ) codepage=932 ;;
ko_KR* ) codepage=949 ;;
zh_CN* ) codepage=936 ;;
zh_TW* ) codepage=950 ;;
esac
0149login:Penguin
垢版 |
2006/10/12(木) 16:42:25ID:s42DJ75o
そんじゃこうなおせばいい?

if [ "$FS" = "vfat" ]; then
OPT=",iocharset=utf8,codepage=932"
fi



if [ "$FS" = "vfat" ]; then
case $LANG in
ja_JP* ) $CODEPAGE="codepage=932" ;;
ko_KR* ) $CODEPAGE="codepage=949" ;;
zh_CN* ) $CODEPAGE="codepage=936" ;;
zh_TW* ) $CODEPAGE="codepage950" ;;
esac
OPT=",iocharset=utf8,$CODEPAGE"
fi
0150login:Penguin
垢版 |
2006/10/12(木) 16:58:28ID:Koz2C7Fz
codepageが必要なのはこの4つだけですよね。
多バイト文化圏って、もっとたくさんありそうにも思うけど(タイとか、中東とかはどうなんだろう?)、とりあえずCJK対応ってことで。いいと思います。
0151login:Penguin
垢版 |
2006/10/12(木) 18:38:28ID:2Z6vbIEE
>>150
たくさんのロケールを処理するなら本体にcase文を入れることが冗長になる。
メンテするごとにinitrdを作り直したりする必要ができてたいへんでもある。
ロケールを食わしたらコードページを返すような関数を書いて/usr/local/sbinあたりに置くのはどうか。
関数名をかりに 'langcp' とすると `langcp ja_JP.UTF-8` が 932 になるような関数。
その上で この OPT=",iocharset=utf8,codepage=932" の行を OPT=",iocharset=utf8,codepage=$(langcp $LANG)" とするのが簡潔かも知れない。
0152login:Penguin
垢版 |
2006/10/12(木) 20:36:21ID:2Z6vbIEE
考えたら/usr/local/sbinに置いたとしても、その関数を更新すればinitrdを作りなおさなければならないという点では同じことかな。
liblinuxliveの中に
langcp () {
local codepage
case $LANG in
ja_JP* ) codepage=932 ;;
ko_KR* ) codepage=949 ;;
zh_CN* ) codepage=936 ;;
zh_TW* ) codepage=950 ;;
* ) return 1 ;;
esac
echo $codepage;return 0
}
なんていう関数を書く方がふつうの感覚かも知れない。そのうえで
OPT=",iocharset=utf8,codepage=$(langcp $LANG)"
0154login:Penguin
垢版 |
2006/10/15(日) 00:42:33ID:E9l4MAs7
jpの修正版が上がっている。
Fluxboxで日本語がまともに使えるようになった。
スゲー殺風景なデスクトップだが軽いのが取り柄。
poorなマシンにお薦め。
ログイン後、"flux"で起動する。
0155login:Penguin
垢版 |
2006/10/15(日) 14:18:53ID:9sgz+4C+
liblinuxliveでtypo発見>はとちゃん

--- liblinuxlive.518ja 2006-10-13 14:16:33.000000000 +0900
+++ liblinuxlive 2006-10-15 14:14:39.000000000 +0900
@@ -471,7 +471,7 @@
ja_JP* ) $CODEPAGE="codepage=932" ;;
ko_KR* ) $CODEPAGE="codepage=949" ;;
zh_CN* ) $CODEPAGE="codepage=936" ;;
- zh_TW* ) $CODEPAGE="codepage950" ;;
+ zh_TW* ) $CODEPAGE="codepage=950" ;;
esac
OPT=",iocharset=utf8,$CODEPAGE"
fi
0156login:Penguin
垢版 |
2006/10/15(日) 16:04:50ID:E9l4MAs7
>>155
"$CODEPAGE=932"の"$"は要らない。
→"CODEPAGE=932"

実行時にエラーになる。

それに
liblinuxliveはinitrd.gzの中と、toolsの下と、/usr/libの下の3カ所にあるが、
元々内容がそれぞれ微妙に違うよ。
OPTIONを設定しているところの記述は同じみたい。
修正するなら3つのファイルをなおした方がいいんじゃない?
0157login:Penguin
垢版 |
2006/10/15(日) 17:50:20ID:9sgz+4C+
やっぱり152みたいな関数が便利かも。関数名はほかのsubfunctionの命名規則(みたいなものがあれば)にあわせて。で、本家にもってく。
0158login:Penguin
垢版 |
2006/10/15(日) 21:14:16ID:9sgz+4C+
152のreturn文は、とりあえずいらないと思う。
0159login:Penguin
垢版 |
2006/10/16(月) 09:05:57ID:wzNUPK1o
>>150
* SBCS (Single Byte Character Set) Codepages
1250 (Central Europe)
1251 (Cyrillic)
1252 (Latin I)
1253 (Greek)
1254 (Turkish)
1255 (Hebrew)
1256 (Arabic)
1257 (Baltic)
1258 (Vietnam)
874 (Thai)

* DBCS (Double Byte Character Set) Codepages
932 (Japanese Shift-JIS)
936 (Simplified Chinese GBK)
949 (Korean)
950 (Traditional Chinese Big5)

cf) http://www.microsoft.com/globaldev/reference/WinCP.asp
0160login:Penguin
垢版 |
2006/10/16(月) 09:32:08ID:wzNUPK1o
>>157
grep "^.*()" liblinuxlive |sort
でみるかぎりcreate_block_devices()なんていう命名が多いみたいだしlocale_codepage() ぐらいでいいんじゃないか、
意味まで含めればconvert_locale_codepage(), lookup_locale_codepage()だけど長すぎるかも。スクリプトはこんなもんでいいよ。return文は使う予定がないのなら省く。
0161login:Penguin
垢版 |
2006/10/16(月) 19:25:59ID:MqOhQHUe
関数にしなくても(しない方が)いいんじゃないの。もともと149の部分は関数の中にあるわけだし、それに159にあるのが全部ならこの4つのDBCSに対応すればいいだけだから。
0162login:Penguin
垢版 |
2006/10/16(月) 19:29:12ID:MqOhQHUe
それよかSLAX1.5.8のfluxboxは日本語対応だね。uim-ximもちゃんと動く。もしかして究極のlight weight GUI
0163login:Penguin
垢版 |
2006/10/16(月) 22:11:48ID:vXniJ0jg
デラックス版出たでよ。
スゲー600MBを超えてる!
何が入ってるんだろ?
0164login:Penguin
垢版 |
2006/10/17(火) 07:35:04ID:B4EJO3Zv
>>155

ご指摘ありがとうございます。
initrdと02_core.moの/usr/lib配下にあるliblinuxliveの修正に手間取りましたが、
なんとか動くものができました。
ちょうど本家でも、smb-kioslaveの不具合があったので、それも修正したものを
アップしましたので、ご利用ください。

http://hatochan.dyndns.org/slax-ja/index.php?slax-ja%2Fdownload
0165login:Penguin
垢版 |
2006/10/17(火) 22:44:41ID:V8nE5sp5
SLAX起動中にUSBメモリーを差すと自動認識して、ダイアログが出る。
ここではマウントしないでキャンセルしておく。
すると、/etc/fstabにマウントエントリーが動的に作成されている。
オプションにiocharset=utf8,codepage=932が書き込まれいれば、liblinuxliveのの修正が効いた証拠。
/mnt/sda1_removableとかいうマウントポイントも出来ている。
mount /mnt/sda1_removableとしてマウントすれば、USBの日本語ファイル・ディレクトリ名が表示される。
JP版で表示されることを確認した。
0166login:Penguin
垢版 |
2006/10/18(水) 12:34:03ID:8uK+bnRC
>>164
jaではうまく反映していないみたい。
echo "fs:$FS iocharset:$IOCHARSET lang:$LANG" > /root/liblinuxlive.log
こんな感じでsnapshotしてみたらどうかな。たぶんLANGがCになっているような気がする。
それと、ここのif文もっとシンプルになるよ。
if [ "$FS" = "vfat" ]; then
if [ "$IOCHARSET" != "" ]; then
OPT=",iocharset=$IOCHARSET"
else
case $LANG in
ja_JP* ) CODEPAGE="codepage=932" ;;
ko_KR* ) CODEPAGE="codepage=949" ;;
zh_CN* ) CODEPAGE="codepage=936" ;;
zh_TW* ) CODEPAGE="codepage=950" ;;
esac
OPT=",iocharset=utf8,$CODEPAGE"
fi
fi
でもLANGで判断するのがダメなら、jpみたいにキメうちで932にしなきゃ。
cjk汎用版は無理なのかなー。
0167login:Penguin
垢版 |
2006/10/18(水) 12:50:40ID:TWBXSwRL
>>166

検証しました。だめでした<確認してからアップしろよ自分!
というわけで簡単なスクリプトで確認した結果、これでいいかな。

誤) OPT=",iocharset=utf8,$CODEPAGE"
正) OPT=",iocharset=utf8,"$CODEPAGE
0168login:Penguin
垢版 |
2006/10/18(水) 12:58:36ID:8uK+bnRC
>>167
いや、たぶんCODEPAGE自体が空白になってるんじゃないかと..
LANGがja_JP*に設定される前に実行されるんじゃないですかこのスクリプト
0169login:Penguin
垢版 |
2006/10/18(水) 13:06:36ID:TWBXSwRL
>>168

jaでは、iocharset=utf8,の後が空白なので、LANGは大丈夫だと思われます。
まずは試してみます。
0170165
垢版 |
2006/10/18(水) 13:18:51ID:CabG0mom
SLAX稼働中にUSBを差し込んだとき、fstabにマウントエントリーの追加は、
/usr/lib/liblinuxlveを使っているから、うまくいかないときはこれをなおして
何度もデバッグできる。
いちいちisoを作り直す必要はない。
0171login:Penguin
垢版 |
2006/10/18(水) 13:22:44ID:CabG0mom
>>168
どうもそれっぽいね。

>>169
空白って$LANGが設定されてないんでしょ?
0172login:Penguin
垢版 |
2006/10/18(水) 13:38:46ID:8uK+bnRC
>>171
デフォルトではLANG=Cだったかな。
ほんと、どっかで言語(国)の情報を反映できないかな。
このままではSLAXはi18nできないことになる。
0173login:Penguin
垢版 |
2006/10/18(水) 17:01:18ID:8uK+bnRC
カーネルオプションで変数が渡せればcase文で処理できるのにな。
boot: slax なんたらかんたら lang=ja
なんていうかんじで。
0174login:Penguin
垢版 |
2006/10/18(水) 19:53:04ID:HDTuRQEZ
ほかのディストロはどうやってるの?
0175login:Penguin
垢版 |
2006/10/18(水) 20:01:13ID:HDTuRQEZ
あそうか1CD-Linuxか。i18nするならやっぱりカーネルオプションしかないかなあ。
knoppixは各国語版でCD/DVD焼いてますね。
0176login:Penguin
垢版 |
2006/10/18(水) 20:04:39ID:tgdaR4C7
/proc/cmdlineから取れば良いんじゃね?
0177login:Penguin
垢版 |
2006/10/19(木) 01:07:36ID:MSXraNH4
>>176

liblinuxliveには、cmdline_parameter()とcmdline_value()が用意されていますので、
こちらを利用して、起動時のパラメータにlang=jaを指定して振りわければできると
思います。こんな感じでしょうか。

#if [ "$FS" = "vfat" -a "$IOCHARSET" != "" ]; then OPT=",iocharset=$IOCHARSET"; fi
if [ "$FS" = "vfat" -a "$IOCHARSET" != "" ]; then
OPT=",iocharset=$IOCHARSET"
else
if [ "$FS" = "vfat" ]; then
CMDLINEVALUE=`cmdline_value lang`
if [ "$CMDLINEVALUE" != "" ]; then
case $CMDLINEVALUE in
ja* ) CODEPAGE="codepage=932" ;;
ko* ) CODEPAGE="codepage=949" ;;
cn* ) CODEPAGE="codepage=936" ;;
tw* ) CODEPAGE="codepage=950" ;;
esac
OPT=",iocharset=utf8,$CODEPAGE"
else
OPT=",iocharset=utf8"
fi
fi
fi
0178login:Penguin
垢版 |
2006/10/19(木) 01:24:31ID:K4H0Yqvl
>>177
いいんじゃない。
cmdline_valueという関数は定義されてるんですね。
0179login:Penguin
垢版 |
2006/10/19(木) 02:43:39ID:yAGz+9wf
>>178

はい、liblinuxlive内にありました。

CMDLINEVALUE=`cmdline_value lang`
if [ "$CMDLINEVALUE" != "" ]; then

↑これを1行でまとめられるような気がするんですが、どうするか分かりません。
0180login:Penguin
垢版 |
2006/10/19(木) 02:47:04ID:yAGz+9wf
jpでは、jfbtermとuim-fepで起動時からコンソールで日本語入力を可能にしている
らしいのですが。slax-jaで起動時に autoexec=jfbterm;uim-fep とやっても、うまく
いきません。

jpでは、どのようにこれを実現しているのでしょうか。
0181login:Penguin
垢版 |
2006/10/19(木) 02:51:15ID:K4H0Yqvl
>>180
jfbtermの中でuim-fepを実行する。
autoexec=jfbterm -e uim-fep

0182login:Penguin
垢版 |
2006/10/19(木) 02:54:05ID:K4H0Yqvl
>>179
こんな感じ?

if [ "$(`cmdline_value lang`)" != "" ]; then
0183login:Penguin
垢版 |
2006/10/19(木) 03:31:58ID:yAGz+9wf
>>181
やってみました。
autoexec=jfbterm -e uim-fep だと -e uim-fepがjfbtermのパラメータだと認識されませんでした。
というわけで、以下のような簡単なスクリプトを作りました。

#!/bin/sh
jfbterm -e uim-fep

でも、プロンプトがbash-3.0となって、uim-fepは日本語オンになりませんでした。
もうちょっとぽいんですが…。
0184login:Penguin
垢版 |
2006/10/19(木) 03:33:29ID:yAGz+9wf
>>182
なるほど。
これだと後ろのcase文はどのようにすればいいでしょうか。
0185login:Penguin
垢版 |
2006/10/19(木) 04:01:14ID:K4H0Yqvl
>>183
それuim-fepの起動失敗してるんじゃない?
スクリプトの実行属性が付いている?

>>184
一緒。



#もう寝る。
0187login:Penguin
垢版 |
2006/10/19(木) 06:55:25ID:K4H0Yqvl
liblinuxliveの中で$LANGをトレースしてみたらやはり設定されてなかった。
そこで、ブートオプションでlang=ja_jp.UTF-8などとしてして、それを
/proc/cmdlineからとってくる方法もありますが、もうひとつ、別な方法として、
実はLANGの指定は/etc/profile.d/lang.shで、
export LANG=ja_JP.UTF-8
などと設定されている。これから取ってくるものを考えてみた。
LANGの値を次のように設定する。
LANG=`grep -e ^export /etc/profile.d/lang.sh|grep LANG=|cut -f 2 -d " "|cut -f 2 -d =`

この行をliblinuxliveに次のように挿入する。
if [ "$FS" = "vfat" -a "$IOCHARSET" != "" ]; then
OPT=",iocharset=$IOCHARSET"
else
if [ "$FS" = "vfat" ]; then
LANG=`grep -e ^export /etc/profile.d/lang.sh|grep LANG=|cut -f 2 -d " "|cut -f 2 -d =`
case $LANG in
ja_JP* ) CODEPAGE="codepage=932" ;;
ko_KR* ) CODEPAGE="codepage=949" ;;
zh_CN* ) CODEPAGE="codepage=936" ;;
zh_TW* ) CODEPAGE="codepage=950" ;;
esac
OPT=",iocharset=utf8,$CODEPAGE"
fi
fi

はとちゃん版slaxで/usr/lib/liblinuxliveを修正して動作することを確認しました。
0188login:Penguin
垢版 |
2006/10/19(木) 07:04:46ID:K4H0Yqvl
なお、fstabのオプションの生成は/usr/lib/liblinuxliveだけが関係してくるようであり、
/usr/lib/liblinuxliveを修正するだけでOKとなった。
initrd.gzの中とtoolsの下のliblinuxliveはどこで使われるのか不明。
ま、一応修正しといた方がいいと思うけど。
0189login:Penguin
垢版 |
2006/10/19(木) 08:54:38ID:NByMOkR/
>>182
> if [ "$(`cmdline_value lang`)" != "" ]; then
こんなときはよく
if [ x$(cmdline_value lang) != x ]; then
なんてします。 ""がxの1文字で済むので両辺で2文字倹約ですう。
xのかわりに_を使うときもあります。
0190login:Penguin
垢版 |
2006/10/19(木) 09:08:20ID:NByMOkR/
>>187
/etc/profile.d/lang.shはslax-ja-$(ver)-$(rev).moの中にありますね。これも良策ですが、カーネルオプションで明示的にlang=jaとやるほうが今後sysconfigのメニューで多国語選択可能になった場合、管理しやすいように思います。
0191login:Penguin
垢版 |
2006/10/19(木) 09:16:01ID:NByMOkR/
sysconfigじゃなくてsyslinux.cfgまたはisolinux.cfgでした。
0192login:Penguin
垢版 |
2006/10/19(木) 11:03:20ID:NByMOkR/
166-191をまとめると

if [ "$FS" = "vfat" ]; then
if [ "$IOCHARSET" != "" ]; then
OPT=",iocharset=$IOCHARSET"
else
case $(cmdline_value lang) in
"" ) OPT=",iocharset=utf8" ;;
ja* ) OPT=",iocharset=utf8,codepage=932" ;;
ko* ) OPT=",iocharset=utf8,codepage=949" ;;
cn* ) OPT=",iocharset=utf8,codepage=936" ;;
tw* ) OPT=",iocharset=utf8,codepage=950" ;;
esac
fi
fi

こんなかんじになるけど、これでいいのかな。iocharsetがutf8でなくてもcodepageは言語に従って指定した方がいいんじゃないかな。
0193login:Penguin
垢版 |
2006/10/19(木) 11:04:42ID:NByMOkR/
(つづき)
ということは、
if [ "$FS" = "vfat" ]; then
if [ "$IOCHARSET" != "" ]; then
OPT=",iocharset=$IOCHARSET"
else
OPT=",iocharset=utf8"
fi
case $(cmdline_value lang) in
ja* ) OPT="${OPT},codepage=932" ;;
ko* ) OPT="${OPT},codepage=949" ;;
cn* ) OPT="${OPT},codepage=936" ;;
tw* ) OPT="${OPT},codepage=950" ;;
esac
fi
これでどうだろう。
0194login:Penguin
垢版 |
2006/10/19(木) 11:08:13ID:NByMOkR/
(つづきのつづき)
if [ "$IOCHARSET" != "" ]; then
OPT=",iocharset=$IOCHARSET"
else
OPT=",iocharset=utf8"
fi
は1行で
OPT=",iocharset=${IOCHARSET:-utf8}"
って書くこともできます(bash>2.x)。
0195login:Penguin
垢版 |
2006/10/19(木) 11:30:14ID:NByMOkR/
ということで決定版です。全部で9行

if [ "$FS" = "vfat" ]; then
OPT=",iocharset=${IOCHARSET:-utf8}"
case $(cmdline_value lang) in
ja* ) OPT="${OPT},codepage=932" ;;
ko* ) OPT="${OPT},codepage=949" ;;
cn* ) OPT="${OPT},codepage=936" ;;
tw* ) OPT="${OPT},codepage=950" ;;
esac
fi
0196login:Penguin
垢版 |
2006/10/19(木) 11:44:22ID:K4H0Yqvl
いい!
そんじゃ、関数化するとこんなもん?

get_codepage() {
case $(`cmdline_value lang`) in
ja* ) codepage=932" ;;
ko* ) codepage=949" ;;
cn* ) codepage=936" ;;
tw* ) codepage=950" ;;
esac
echo $codepage
}

[ "$FS" = "vfat" ] && OPT=",iocharset=${IOCHARSET:-utf8},codepage=`get_codepage`"
0197login:Penguin
垢版 |
2006/10/19(木) 12:55:04ID:NByMOkR/
>>196
あ、でもlangが指定されなかった場合、つまり$(cmdline_value lang)が空だった場合、OPT=",iocharset=${IOCHARSET:-utf8}" のままでとどめたい。でないと
OPT=",iocharset=utf8,codepage=" なんてことになってマウントエラーにならないかな。
それと$(~...~)のバッククオートは不要だと思う。$()が``と同じはたらきをするから。
あえて関数にするなら

get_codepage() {
case $(cmdline_value lang) in
ja* ) echo ",codepage=932" ;;
ko* ) echo ",codepage=949" ;;
cn* ) echo ",codepage=936" ;;
tw* ) echo ",codepage=950" ;;
esac
}

[ "$FS" = "vfat" ] && OPT=",iocharset=${IOCHARSET:-utf8}$(get_codepage 2> /dev/null)"

かな、私のクセでは最後の文を test _$FS = _vfat && .. なんて書きたい所だけど、これは他の部分の文体に合わせたほうがいい。
0198login:Penguin
垢版 |
2006/10/19(木) 13:03:34ID:NByMOkR/
>>197
どうでもいいことかも知れないが、この関数の内容からすれば get_codepageではなくて show_codepageだな。
0200login:Penguin
垢版 |
2006/10/19(木) 14:29:30ID:NByMOkR/
ついでにslax-ja-5.1.8-2.isoでは /tools/liblinuxliveでは

# add special options for NTFS
if [ "$FS" = "ntfs" ]; then
OPT=",ro"
#if [ "$IOCHARSET" != "" ]; then OPT="$OPT,nls=$IOCHARSET"; fi
if [ "$IOCHARSET" != "" ]; then
OPT="$OPT,nls=$IOCHARSET"
else
OPT="$OPT;nls=utf8"
fi
fi

になっていますが、同様に書き換えると
[ "$FS" = "ntfs" ] && OPT=",ro,nls=${IOCHARSET:-utf8}"
ということでここも8行分が1行で済みますね。
レスを投稿する


ニューススポーツなんでも実況