MSがやってるServices for UNIXがBSD4.4互換じゃなかったっけ
>>918 netpbmにアップデートが入って直ったみたい
Cygwin上でneroAacEncを使ってAACエンコードすると
ERROR: Could not create file
というエラーが出るようになっちゃったんだけど、同じ症状の人いない?
多分1.7.11にしてから発生するようになったと思うんだけど…
cmd.exe から実行するとこのエラーは出ないので、Cygwin側に何か問題があるんだろうけど全く見当がつかない
エラーが出ても一応エンコはできてるように見えるんだけど、cmd.exe から実行した場合と比較すると
ファイルサイズが違うので、多分ファイル末尾の書き出しに失敗してる気がする
他のwindowsプログラム(x264とか)ではこういう症状は起こらないんだけどなぁ
>>946 あてずっぽだけど、環境変数TEMPやTMPが設定されてたら、
クリア(unset TEMP; unset TMP)したらどうかな?
>>947 ビンゴでした(;´Д`)ありがとうございます!エスパーすげえ
元々 TEMP, TMP は unset してたんですが、どういうわけか小文字の環境変数 temp, tmp も設定されていたので
こいつらも unset したら neroAacEnc のエラーは出なくなりました。感謝です。
949 :
947:2012/03/04(日) 17:27:23.82
>>948 解決して何より。
小文字のtemp,tmpについて気になったので、いま、cygwin-announce ML を「temp」で検索したら、base-files-4.0-7 でtemp/tmpを定義するようになった見たい。
http://sourceware.org/ml/cygwin-announce/2012-02/msg00021.html http://cygwin.com/ml/cygwin/2012-01/msg00201.html 手元の base-files 4.0-9 でも temp/tmp が定義されてた。
$ cygcheck -cd base-files
Cygwin Package Information
Package Version
base-files 4.0-9
$ cygcheck -l base-files | grep ^/etc | xargs grep -l temp
/etc/defaults/etc/profile
grep: /etc/postinstall/base-files-profile.sh: No such file or directory
grep: /etc/postinstall/base-files-mketc.sh: No such file or directory
$ egrep '(tmp|temp)=' /etc/defaults/etc/profile
tmp=$(cygpath -w "$ORIGINAL_TMP" 2> /dev/null)
temp=$(cygpath -w "$ORIGINAL_TEMP" 2> /dev/null)
>>949 temp, tmp はWindowsネイティブプログラムが正しく動くようにするために導入されたってことですかね。確かに言いたいことはわかる
ただこれ、うちのデフォルトでは temp=/cygdrive/c/DOCUME~1/hoge/LOCALS~1/Temp みたいに定義されちゃってるんですよね
これを temp=C:\Documents and Settings\hoge\Local Settings\Temp のように修正するのが正しい解決法ってことなのかな
一応そのように修正すれば neroAacEnc のエラーは出ないようなので、これでいこうと思います
なんかそれ意図した動作になってないんじゃね?(つまりcygwin側のバグ)
ネイティブアプリには小文字の方を見てほしいのかもしれないけど
実際には大文字のほうを見てるぞ
少なくとも、GetTempPath(), _tempnam()に関してはそういう動作になる
つーかWindowsがデフォで持ってる環境変数も大文字だし……
ネイティブアプリを起動する際に
tmp/temp/TMP/TEMPはWindowsネイティブパス形式には変換されるみたいだ
ただし値の再設定はしていないので、
TMP/TEMPはC:\cygwin\tmpのようになる(/tmpをネイティブに変換した結果)
cmd.exeをbashから起動して
C:\> set
とかやってみるとわかる
>>951 /etc/profile では大文字の TMP, TEMP は unset してるみたいだよ
で、大文字の TMP が存在せず小文字の tmp が存在する場合、GetTempPath(), _tempnam() は小文字の tmp を見てくれるみたい
検証用コード:
http://codepad.org/ZHYXRqIy tmp=C:\Documents and Settings\hoge\Local Settings\Temp の場合
GetTempPath(): C:\Documents and Settings\hoge\Local Settings\Temp\
_tempnam(): C:\Documents and Settings\hoge\Local Settings\Temp\foo2
unset tmp した場合
GetTempPath(): C:\Documents and Settings\hoge\
_tempnam(): \foo2
後者は明らかに意図した結果ではない
つまり、Cygwinプログラムは TMP, TEMP が定義されてなくてもデフォで /tmp を使うはずだから特に問題にならないが、
Windowsネイティブプログラムは TMP, TEMP (大文字小文字問わず)が定義されてないとテンポラリパスが思わぬ値になるから
小文字の tmp, temp のみを定義することで両方ともうまく動くようにした、と解釈したんだけどどうだろう
>>952 いやちょっと意味が分からない
unsetしたあとでTMP,TEMPを/tmpなんかにセットしてるから
結局/tmpが残るんじゃないの?
ORIGINAL_TMP=$TMP
ORIGINAL_TEMP=$TEMP
unset TMP TEMP
tmp=$(cygpath -w "$ORIGINAL_TMP" 2> /dev/null)
temp=$(cygpath -w "$ORIGINAL_TEMP" 2> /dev/null)
TMP="/tmp"
TEMP="/tmp"
そもそもTMPやTEMPを誰のために弄ってるんだろう
cygwin側のプログラムは必要としない筈なのに
954 :
953:2012/03/05(月) 18:26:05.14
もう少し補足すると、
bash --login
の状態で、TMPとTEMPの値は/tmpになっていて、
bashからcmd.exeを起動すると、
TMPとTEMPが(cygwin_conv_to_win32_pathの変換に従って)C:/cygwin/tmp
に変換されているのが分かる
Win32ネイティブアプリが見るのはこの値
>>953 あー、/etc/profile は TMP, TEMP を消してるのかと思ったら /tmp に再設定してるのか
うちではシェルの初期化ファイルで TMP, TEMP を消してたから気付かなかった
それだと確かに意味わからんねえ
TMP, TEMP を消して tmp, temp をWindowsのテンポラリに設定するなら筋が通るんだけど
956 :
947:2012/03/05(月) 21:33:02.63
base-files 3.9-3 で作られた ~/.bashrc だと「大文字の TEMP と TMP」は定義されなかった
$ set | egrep -i 'TMP|TEMP'
ORIGINAL_TEMP=/cygdrive/e/TEMP_C~1
ORIGINAL_TMP=/cygdrive/e/TEMP_C~1
temp='E:\TEMP_C~1'
tmp='E:\TEMP_C~1'
base-files 4.0-9 の /etc/defaults/etc/skel/.bashrc を ~/.bashrc にコピーしたときは「大文字の TEMP と TMP」は定義されてた。
$ mv ~/.bashrc ~/old.bashrc
$ cp /etc/defaults/etc/skel/.bashrc ~/
$ set | egrep -i 'TMP|TEMP'
ORIGINAL_TEMP=/cygdrive/e/TEMP_C~1
ORIGINAL_TMP=/cygdrive/e/TEMP_C~1
TEMP=/tmp
TMP=/tmp
temp='E:\TEMP_C~1'
tmp='E:\TEMP_C~1'
957 :
名無しさん@お腹いっぱい。:2012/03/08(木) 10:48:35.62
10年ぶりにCygwin入れたのだけれど、
bashのメッセージがディフォルトで日本語のようなのだkが、
それは問題なのだが、pingコマンドを実行すると、
192.168.0.38 ????????: ?o?C?g?? =32 ???? <1ms TTL=128
みたいに化けるのはなぜ?
minttyの仕様です
959 :
名無しさん@お腹いっぱい。:2012/03/08(木) 12:01:18.00
化けないようにする方法を教えてくえ
Windowsネイティブのコンソールウィンドウ(「コマンドプロンプト」と同じやつ)に
不満が無いのなら、それを使うのが一番単純な解
つまり端末ソフトを使用せず、bash.exeなり何なりを直接起動して使う
そうでない場合は、エンコーディングが混在しても適当によろしくやってくれる
端末ソフト(たとえばck)を使うしかない
ただし、この場合は端末ソフトが受け取った文字列を見てエンコーディングを推測して
変換することになるので、もちろん誤爆はありえる
961 :
名無しさん@お腹いっぱい。:2012/03/08(木) 14:18:53.05
>960
サンキュウ。でも、
10年ぶりなので浦島太郎状態だ。
cygwinの純正コンソールで、pingが文字化けするってどいうことよ。
文字化けが起こるなんて、時代に逆行しているだろ。
とにかく、前途有望やつ、ものすごくスマートに解決してくれよ。
>>961 それCygwinのpingじゃないんじゃない?
>>961 Cygwinのバグだな。
ロケールがUTF-8なのにcode pageをUTF-8にするのを忘れてるんだろう。
だからpingはShift JISを吐く、CygwinはUTF-8と思って解釈するから化ける。
そんなところだろうな。めんどくさいから誰か直して。
家のはbashもminttyも文字化けしない。
>>960が言うように誤爆が嫌だから推測しない方針なんだろ
あとコードページを65001にしてもCP932がUTF-8に変換されるわけではないと思うが
966 :
名無しさん@お腹いっぱい。:2012/03/08(木) 15:55:33.97
>ロケールがUTF-8なのにcode pageをUTF-8にするのを忘れてるんだろう。
だったら、
ping 192.168.0.38 | nkf -w
とかして、pingのSJIS出力をUTF8に変換するなどのヘンテコな方法でも
いいので、とにかく文字化けを回避する方法ないかな。
nkfが入っていないので試せない。うまく行くとも思えないが。
いや普通にそれでいいだろ
なぜうまく行かないと思ったのか
968 :
名無しさん@お腹いっぱい。:2012/03/08(木) 16:02:23.56
>967
10年ぶりだからさ。
なんでWindowsのping使うんだ?Cygwinのパッケージにあるものを使えば全く問題ない
なんでだか忘れたけど cygwin 版の ping をアンインスコして windows の ping に戻った記憶があるんだよな。
なんでだったっけかね・・・
>>969 どっちみちWindowsネイティブのもので使いたいコマンドはあるはずなので
(icaclstとかnetとかtasklistとかrobocopyとか)
pingだけそういう方法で解決してもあまり意味がない気がするんだ
typoった
× icaclst
○ icacls
>>966 > nkfが入っていないので試せない。うまく行くとも思えないが。
コマンド 2>&1 | iconv -f cp932 -t utf-8
でいいんじゃないか?
10年前と同じようにc:\cygwin\cygwin.bat起動して
コンソール窓で使っとけよ鬱陶しい
cocot使いなよ
>>971 ネイティブアプリはネイティブなコンソール使えばいいだけだろ、
CygwinコンソールにCygwinアプリ以外のものまでケツ拭かせるのが
当然みたいな発想がそもそも理解できん(それはシームレスとは違う)。
> cygwinの純正コンソールで、pingが文字化けするってどいうことよ。
おまえに死ねって言ってるんじゃねーかな。
# ping www.google.com | iconv -f CP932 -t UTF-8
www.l.google.com [74.125.235.114]に ping を送信しています 32 バイトのデータ:
74.125.235.114 からの応答: バイト数 =32 時間 =16ms TTL=50
74.125.235.114 からの応答: バイト数 =32 時間 =16ms TTL=50
74.125.235.114 からの応答: バイト数 =32 時間 =16ms TTL=50
74.125.235.114 からの応答: バイト数 =32 時間 =16ms TTL=50
74.125.235.114 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 16ms、最大 = 16ms、平均 = 16ms
わーい
ping とかはどうでもいいんだけど java と javac は結構めんどくさかったわ。
>>976 自分も同意見だが、cmdでCygwinのプログラムを動かすと日本語化けないんだよね
cmdにもできることがminttyにはできんのかって話なら、そう言いたくなる気持ちは分かる
つまり ck 最強
>>979 minttyの左上オプションから、ロケールをShift_JISにしたら
文字化けしなくなったんだけど
そりゃLANG(LC_CTYPE)をSJISにすれば文字化けは回避できるけど
せっかくUTF-8ロケールなら完璧に扱えるUnicodeパスの扱いなどに問題が出るし
やめたほうがいいと思うよ
Pythonかなんかでwrapper書いて/usr/local/binにでも入れとけばよくね?
FDcloneをUTF-8に完全対応してくれる人はいませんか?
いませんよ。
,-∧,,∧-- 、
/ (´・ω・`) /
r-くっ⌒cソ、 / こうしている今
ノ '、 , 、 _, ' / / 布団のなかでおしっこしてるのは内緒
.(_,. ././
,(.,_ `'ー-、_,,..ノ/
~`''ー--‐'
987 :
名無しさん@お腹いっぱい。:2012/03/09(金) 13:39:53.84
そうか、オイラが使っていたpingはWindows7の奴だったのか!iconv作戦で文字化けは
解消した。
そのあと、cygwinのpingをインストールしたら、
ping: socket: Operation not permitted
って出た。管理者じゃなくてもpingくらいさせてくれよ。
989 :
988:2012/03/09(金) 20:18:50.38
あ、ck は
>>960 が紹介してたね。重複すまん。
>>987 cygwin って, ユーザを適当なグループに入れといて
chmod g+x とかできないんだっけ?