読者です 読者をやめる 読者になる 読者になる

pslaboの日記

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

iPad3のSIMロックに関する考察とSIM下駄による解除の試みはSoftbank版iPad3にiPhone用のSIM下駄を履かせてみるにいろいろ書いてます。

ポストした内容のカテゴリー分けがちゃんと出来てないので、過去記事を探したい方はお手数ですが検索で探してみてください。


cygwin 64bit版でapt-cygを使おうと思ったらイロイロ嵌ったテスト

cygwin 64bit版を入れた。apt-cyg というのが便利らしいので試してみるが動かない。
http://uturo2.nevernothing.jp/cygwin-3/

どうやら、オリジナル版は32bit版にしか対応していないらしいので、改変されたバージョンをありがたく使わせて頂こうと思ったら、こちらも動かない。
http://rcmdnk.github.io/blog/2013/08/08/computer-windows-cygwin/

動かない原因は、cygwinで配布されるバイナリの一部が .xz なファイルであるが、apt-cyg 自体が .bz2 を前提としているためです。ならばと、ファイル形式を判定して適切な展開プログラムを通すように 64bit 対応の apt-cyg をさらに改変してみるテスト。

  • アーカイブのファイル名をシェル変数展開して拡張子部分だけ抜く。
  • case 文でパターンマッチする。
  • case 文全体をサブシェル "( で囲む )" にしているので、case 文のパターンマッチ処理では、標準出力に対して xz -c や bunzip2 -c するだけ。
  • サブシェルの外側で tar にパイプでつなぐ。
diff -u apt-cyg /bin/apt-cyg
--- apt-cyg     2013-12-10 19:23:47.479936900 +0900
+++ /bin/apt-cyg        2013-12-10 19:05:16.135871400 +0900
@@ -69,7 +69,8 @@
 {
   # default working directory and mirror

-  mirror=ftp://mirror.mcs.anl.gov/pub/cygwin
+  #mirror=ftp://mirror.mcs.anl.gov/pub/cygwin
+  mirror=http://ftp.iij.ad.jp/pub/cygwin
   arch=x86_64
   if [ "`uname -m`" = "i686" ];then
     arch=x86
@@ -374,7 +375,13 @@
     fi

     echo "Unpacking..."
-    cat $file | bunzip2 | tar > "/etc/setup/$pkg.lst" xvf - -C /
+    (
+        case "${file##*.}" in
+       xz)     xz -d -c $file ;;
+       bz2)    bunzip2 -c $file ;;
+       *)      gunzip -c $file ;;
+        esac
+    ) | tar > "/etc/setup/$pkg.lst" xvf - -C /
     gzip -f "/etc/setup/$pkg.lst"
     cd ../..