Cygwinをツールをアップデートするときに、いちいちsetup.exeを起動するのが面倒だ 。
LinuxやRubyとかみたいに、コマンドラインからインストール出来ないかなと思って調べたらありました。それが
apt-cyg
です。以下、詳細をメモメモφ(`д´)メモメモ
apt-cygとは
apt-cygとは、apt-getみたいにコマンドラインからツールのインストールやアップデートをするためのコマンド。
GoogleCodeで公開されている。
apt-cyg - A command-line software installer for Cygwin - Google Project Hosting
apt-cygのインストール方法
事前準備として、以下のコマンドをcygwinに入れておくこと。apt-cygの中で使う。
- Base/gawk
- Archive/bzip2
- Base/tar
- Net/wget
wgetで取得。
$ wget https://apt-cyg.googlecode.com/svn/trunk/apt-cyg
apt-cygは内部的にwgetを使っている。proxy環境でうまくいかない時は、wgetのプロキシ設定が必要。自分は以下の記事を参考にしました。
実行権限を与えて、パスの通った場所に置く。
$ chmod +x apt-cyg
$ mv apt-cyg /usr/bin
これだけで、インストール完了。簡単簡単。
$ apt-cyg --version
apt-cyg version 0.57
Written by Stephen Jungels
Copyright (c) 2005-9 Stephen Jungels. Released under the GPL.
ミラーサーバの設定
cygwinの取得先を日本のサーバに指定しておく。
// 32 bit
$ apt-cyg -m https://ftp.iij.ad.jp/pub/cygwin/x86/ update
// 64 bit
$ apt-cyg -m https://ftp.iij.ad.jp/pub/cygwin/x86_64/ update
apt-cygの使い方
helpを参照
$ apt-cyg --help
apt-cyg: Installs and removes Cygwin packages.
"apt-cyg install <package names>" to install packages
"apt-cyg remove <package names>" to remove packages
"apt-cyg update" to update setup.ini
"apt-cyg show" to show installed packages
"apt-cyg find <patterns>" to find packages matching patterns
"apt-cyg describe <patterns>" to describe packages matching patterns
"apt-cyg packageof <commands or files>" to locate parent packages
Options:
--mirror, -m <url> : set mirror
--cache, -c <dir> : set cache
--file, -f <file> : read package names from file
--noupdate, -u : don't update setup.ini from mirror
--help
--version
リポジトリ(setup.ini)をアップデートする
ローカルで持っているツールの更新情報をアップデートする。
apt-cyg update
ツールをアップデートしてみる
ここでは、すでにインストールされたcppcheckをアップデートしてみる。
既存のcppcheckをまずは削除。
$apt-cyg remove cppcheck
次に、新しいcppcheckをインストールする。
$ apt-cyg install cppcheck
これで、cppcheckのバージョンが1.56から1.58にアップデートされた。
いろんなツールの更新を調べて、一気にアップデートするのはsetup.exeを使ったほうがよさそう。
追記 13/08/12
Cygwinに大きな仕様変更があったようで、32bit版と、64bit版で、Cygwinは分けられたようだ。64bit版には、inetutilsも見つからない・・・。
、久しぶりにapt-cygを実行したらエラー。
$ apt-cyg update
Working directory is /setup
Mirror is https://ftp.iij.ad.jp/pub/cygwin/
--2013-08-12 23:12:06-- https://ftp.iij.ad.jp/pub/cygwin//setup.bz2
ftp.iij.ad.jp (ftp.iij.ad.jp) をDNSに問いあわせています... 202.232.140.143, 202.232.140.144, 2001:240:bb8f::f:300, ...
ftp.iij.ad.jp (ftp.iij.ad.jp)|202.232.140.143|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 404 Not Found
2013-08-12 23:12:06 エラー 404: Not Found。
--2013-08-12 23:12:06-- https://ftp.iij.ad.jp/pub/cygwin//setup.ini
ftp.iij.ad.jp (ftp.iij.ad.jp) をDNSに問いあわせています... 202.232.140.143, 202.232.140.144, 2001:240:bb8f::f:300, ...
ftp.iij.ad.jp (ftp.iij.ad.jp)|202.232.140.143|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 404 Not Found
2013-08-12 23:12:06 エラー 404: Not Found。
Error updating setup.ini, reverting
404 Not Foundだと?
原因は、setup.iniが 32bit番と64bit番でディレクトリが分けられるようになったからだった。
https://ftp.iij.ad.jp/pub/cygwin/にアクセスすると、ディレクトリ構造が変更されていた。
ミラーサイトは以下のように、32bitと64bitで区別する必要がある。
// 32 bit
$ apt-cyg -m https://ftp.iij.ad.jp/pub/cygwin/x86/ update
// 64 bit
$ apt-cyg -m https://ftp.iij.ad.jp/pub/cygwin/x86_64/ update
正式版のapt-cygはこの仕様変更には対応していないみたい。forkしたapt-cygをみつけたので、しばらくはこっちを使うのが良さそう。