hack のためのネタ帳, etc,,,

このページは履歴用の backup です。
最新版は apt-cyg を参照してください。

cygwin 用コマンドライン版パッケージ管理ツール
Debian GNU/Linux の apt-get ライクな操作が可能

公式ページ等

License

2013-09-30 現在、Google code で公開されてる版は GPL v2 or later で、Github で新たに公開された版は MIT license になってる模様。
2013-10-18 現在、version 表示に、GPL って表示が残ってる。修正あると良いな。
2013-08-24 現在、最終リリースが 2010-04-27 の r18 で止まってる。
一方で、2013-07-22 リリースの Cygwin 1.7.22 が 64 bit 対応したことに伴い、Cygwin のパッケージデータベースが従来の /pub/cygwin/setup.ini から /pub/cygwin/x86/setup.ini と /pub/cygwin/x86_64/setup.ini に分かれた。
ところが、setup.ini の install: で示される各パッケージは従来通り /pub/cygwin をルートとして書かれたままの状態であるため apt-cyg が動作しなくなってしまっている模様。
これはブランチするしかないかな?

2013-09-30:
公式ページの下の方に、新しいバージョンの cygwin 対応は Github バージョンを fork して修正してねって書いてあって、2013-07-28 に github にリポジトリが作られてた。現時点で数名がそこから fork させて 64 bit 対応後の cygwin 用の patch 書いてる模様。

2013-10-18:
現行バージョンの cygwin 対応に最低限必要な patch は以下の2つ
  • mirror の arch 対応
  • package の .tar.xz 対応
現状で、この条件に合うのは多分以下のやつだけじゃないかと思う。
ただし、x86 版と x86_64 版の cygwin 両方インストールしている場合は要注意。
md5 ではじかれるはずなので杞憂だろうけど $cache/$mirrordir/release/$pkg に wget -nc してくる仕様なので、cache に既に download 済みの別 arch の package があると上書き download されないので cache dir 同じ場所にしとくと混ざる可能性がある。
でも update 省くと、別 arch の setup.ini そのまま使ってる可能性がある。

multiarch 的な運用も現時点では考慮出来ていない模様。
x86 版は C:\cygwin、x86_64 版は C:\cygwin64 のように別々の場所にインストールされるが、apt-cyg 実行してる環境の root directory に package ぶちまける仕様なので、x86 環境から x86_64 のパッケージ入れようとすると混ざる。

例えば、 は、mirror の末尾に arch 付けて multiarch っぽい事出来るけど、確実に混ざる。

これを、逆手に取ると chere とか x86_64 版にない package を混ぜる事が出来るはずなので、意外と便利かもしれないけど。

fork

x86, x86_64 混在環境で不具合出そうなので fork して patch 当ててみることにした。
とりあえず、
  • package の .tar.xz 対応は sieste31/apt-cyg/d0bb8af から pull した
  • mirror の arch 対応は boothj5/apt-cyg/d05f149 から pull した
  • cache の arch 対応は自前で書き起こした
  • root の arch 対応は変更点多くなりそうなので保留中
4番目出来たら multiarch 対応は完璧な気がするけど、ちょっと面倒そう。

以下からレジストリを参照すると、root directory に割り当てられたフォルダを Windows 形式のパスで取得出来る模様
現在の環境/proc/registry/HKEY_LOCAL_MACHINE/SOFTWARE/Cygwin/setup/rootdir
x86 環境/proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Cygwin/setup/rootdir
x86_64 環境/proc/registry64/HKEY_LOCAL_MACHINE/SOFTWARE/Cygwin/setup/rootdir
参考:
とりあえず chroot コマンドが使えたので multiarch 対応の課題で保留中だった root の arch 対応をやってみた。

予め、x86_64 と x86 環境の両方をインストールしておく必要はあるが、
例えば 2013-10-25 現在 x86_64 環境には chere パッケージが提供されていないので、x86_64 環境から x86 環境の chere パッケージをインストールしたいといったような場合、以下のようにすれば良い。
apt-cyg --charch x86 install chere
--charch オプションは x86_64 または x86 の何れかを取ることが出来る。
chroot する関係上、shift で他のパラメータを捨てられると困るので、必ず第1パラメータに与える必要がある。

x86_64 と x86 で標準入出力を融通し合うせいか chroot で shell に interactive オプション与えると readline やら何やらが変なことになるが、とりあえず shell script で使う分には不都合はなさそうな感じ。

インストール

オリジナルのバージョンについては、
カレントディレクトリに最新版を取得するには以下のようにすれば良かったが、これは既に OBSOLETE.
wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg
chmod +x apt-cyg
Cygwin 1.7 でリポジトリが x86_64 と x86 に分かれたのに対応出来てないので、使えない。
github 漁れば対応した fork が多数見つかるはず。

私家版で良ければ、以下のようにしてもらえば良い。
wget https://raw.github.com/kou1okada/apt-cyg/master/apt-cyg
chmod +x apt-cyg
setup.exe で利用していた last-cache と last-mirror は /etc/setup/setup.rc 内に記録されているので
これを apt-cyg に引き継ぐには以下のようにすれば良い。
apt-cyg -c "$(grep -A1 last-cache  /etc/setup/setup.rc | tail -n1 | sed -e 's/^\s*\(.*\?\)\s*$/\1/g')"
apt-cyg -m "$(grep -A1 last-mirror /etc/setup/setup.rc | tail -n1 | sed -e 's/^\s*\(.*\?\)\s*$/\1/g')"

大まかなサブコマンドの対応

apt-cygcygcheckapt-getapt-cacheapt-filedpkg
installinstall
removeremove
updateupdate
show-c-l
findsearch
describeshow
packageof-S
upgrade
-l-L
-psearch,find
list,show

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます