ページ更新: 2015-07-22 (水) (1122日前)

関連: Cygwin/インストール, Cygwin/cyg-apt

(2009-07-07 新規作成)

目次

[編集]

情報源 #

Cygwin 1.7.22 で setup.bz2 や setup.ini が取得できない件:

[編集]

メモ #

[編集]

2017年1月の状況 {#y201701] #

[編集]

Google Code 版が xz 形式への対応、x86/x86_64 ディレクトリに対応 (2014-02-22) #

$ LANG=C svn info http://apt-cyg.googlecode.com/svn/trunk
Path: trunk
URL: http://apt-cyg.googlecode.com/svn/trunk
Relative URL: ^/trunk
Repository Root: http://apt-cyg.googlecode.com/svn
Repository UUID: f2a461e8-04e4-11de-bcc6-d9108be23e13
Revision: 34
Node Kind: directory
Last Changed Author: info@skl.me
Last Changed Rev: 34
Last Changed Date: 2014-02-20 05:36:57 +0900 (Thu, 20 Feb 2014)
$ LANG=C svn log -l 15 http://apt-cyg.googlecode.com/svn/trunk
------------------------------------------------------------------------
r34 | info@skl.me | 2014-02-20 05:36:57 +0900 (Thu, 20 Feb 2014) | 4 lines

Merge remote-tracking branch 'upstream/master'

Conflicts:
	README.md
------------------------------------------------------------------------
r33 | info@skl.me | 2014-02-20 05:34:52 +0900 (Thu, 20 Feb 2014) | 1 line

Fix svn merge conflicts
------------------------------------------------------------------------
r32 | info@skl.me | 2014-02-20 05:34:47 +0900 (Thu, 20 Feb 2014) | 1 line

Change default mirror to mirrors.kernel.org
------------------------------------------------------------------------
r31 | info@skl.me | 2014-02-20 05:34:42 +0900 (Thu, 20 Feb 2014) | 1 line

Update README.md
------------------------------------------------------------------------
r30 | info@skl.me | 2014-02-20 05:34:37 +0900 (Thu, 20 Feb 2014) | 1 line

Readme update.
------------------------------------------------------------------------
r29 | info@skl.me | 2014-02-20 05:34:32 +0900 (Thu, 20 Feb 2014) | 1 line

Add xz archive support.
------------------------------------------------------------------------
r28 | info@skl.me | 2014-02-20 05:34:27 +0900 (Thu, 20 Feb 2014) | 10 lines

Handle the x86/x86_64 split when downloading setup.ini

Cygwin recently introduced an x86_64 version and so all the mirrors
now have x86 or x86_64 in their paths, depending on which version
you've installed.

The only change required is when the setup file is fetched.

The setup file itself contains the paths prefixed with either
x86 or x86_64
------------------------------------------------------------------------
r27 | info@skl.me | 2014-02-20 04:42:39 +0900 (Thu, 20 Feb 2014) | 1 line

Merge remote-tracking branch 'skl/master'
------------------------------------------------------------------------
r26 | info@skl.me | 2014-02-20 04:42:35 +0900 (Thu, 20 Feb 2014) | 1 line

Update README.md
------------------------------------------------------------------------
r25 | info@skl.me | 2014-02-20 04:42:30 +0900 (Thu, 20 Feb 2014) | 1 line

Update README.md
------------------------------------------------------------------------
r24 | info@skl.me | 2014-02-20 04:42:24 +0900 (Thu, 20 Feb 2014) | 1 line

Initial commit
------------------------------------------------------------------------
r22 | info@skl.me | 2014-02-18 05:50:50 +0900 (Tue, 18 Feb 2014) | 1 line

Merge branch 0.58
------------------------------------------------------------------------
r18 | sjungels | 2010-04-28 03:55:43 +0900 (Wed, 28 Apr 2010) | 1 line

added edge case for obsolete packages
------------------------------------------------------------------------
r17 | sjungels | 2010-04-27 20:08:50 +0900 (Tue, 27 Apr 2010) | 1 line

1. tightened regex install expression; 2. used wget -N where appropriate
------------------------------------------------------------------------
r12 | sjungels | 2009-08-10 23:16:43 +0900 (Mon, 10 Aug 2009) | 1 line

Merged patch that adds --noupdate flag
------------------------------------------------------------------------
[編集]

Cygwin 1.7.23, ミラーサイトのディレクトリ変更への対応, Cygwin 32bit版と64bit版の自動判別 #

(2013-08-12, 2013-08-13, 2013-08-17, 2014-02-21)

apt-cyg version 0.59, subversion revision 34 が対応したので、この項目の作業は不要になった。

apt-cyg version 0.57 (subversion revision 18) に以下の修正を行うパッチを作成した。

  • Cygwin 1.7.22 で 32bit版 (x86) と 64bit版 (x86_64) の2種類のパッケージが正式に提供された際に、ミラーサイト上の setup.bz2 や setup.ini の位置が変更されている (32bit用と64bit用の2種類が用意された)。このため、apt-cyg version 0.57 (subversion revision 18) では、wget で setup.bz2 や setup.ini を取得できず (HTTPステータス 404 Not Found)、エラーになる。このエラーを解消する。
    • 具体的には、Cygwinの種別を arch コマンド (uname -m と同じ) で判別して、ミラーサイト上の setup.bz2 や setup.ini のディレクトリ名を切り替えるようにした。

(apt-cyg version 0.57 revision 18 からの変更箇所)

Index: apt-cyg
===================================================================
--- apt-cyg	(revision 18)
+++ apt-cyg	(working copy)
@@ -30,7 +30,14 @@
   exit 1
 fi
 
+if test $(arch) = 'x86_64'
+then
+  ARCH='x86_64'
+else
+  ARCH='x86'
+fi

 function usage()
 {
   echo apt-cyg: Installs and removes Cygwin packages.
@@ -95,14 +102,14 @@
   then
     touch setup.ini
     mv setup.ini setup.ini-save
-    wget -N $mirror/setup.bz2
+    wget -N $mirror/$ARCH/setup.bz2
     if test -e setup.bz2 && test $? -eq 0
     then
       bunzip2 setup.bz2
       mv setup setup.ini
       echo Updated setup.ini
     else
-      wget -N $mirror/setup.ini
+      wget -N $mirror/$ARCH/setup.ini
       if test -e setup.ini && test $? -eq 0
       then
         echo Updated setup.ini

気が向いたら、transcode-open/apt-cyg · GitHub をforkするかも(すでに4人がforkしてるけど)。

なお、setup.ini に記載されているパッケージの位置はミラーサイトの Cygwin ディレクトリからの相対パスで書かれている。 よって

  • すべてのミラーサイトで、常に 32bit版は x86, 64bit版は x86_64 に存在するはず。
    • 理由: 同一でないのなら setup.ini や setup.bz2 をサイトごとに修正する必要がある。しかしそのようにしたら署名 (*.sig)もサイトごとに用意する必要がある。
  • apt-cyg 内のパッケージを取得する部分は修正は不要である。従来どおり「ミラーサイトのURL + '/' + setup.ini の installフィールド」で求められるので。

(以下、32bit版の setup.ini より抜粋)

# This file is automatically generated.  If you edit it, your
# edits will be discarded next time the file is generated.
# See http://cygwin.com/setup.html for details.
#
release: cygwin
arch: x86
setup-timestamp: 1376251390
setup-version: 2.819

@ a2ps
sdesc: "Anything to PostScript converter"
... (略)
install: x86/release/a2ps/a2ps-4.14-2.tar.bz2 1102043 fa7aa8dc017776e42d3f4a0794c80e58
source: x86/release/a2ps/a2ps-4.14-2-src.tar.bz2 2952496 e3277c296a06293aa3581541a58451cf

(以下、64bit版の setup.ini より抜粋)

# This file is automatically generated.  If you edit it, your
# edits will be discarded next time the file is generated.
# See http://cygwin.com/setup.html for details.
#
release: cygwin
arch: x86_64
setup-timestamp: 1376335987
setup-version: 2.819

@ a2ps
sdesc: "Anything to PostScript converter"
...(略)
install: x86_64/release/a2ps/a2ps-4.14-2.tar.bz2 1109452 0c7db48206362a7a8d29793a6ff7daec
source: x86_64/release/a2ps/a2ps-4.14-2-src.tar.bz2 2952031 64bf902da22115cf59fcc9ae5443cf7c
[編集]

インストール済みのパッケージ更新はできない #

(2013-08-13)

apt-cyg には、インストール済みのパッケージを更新する機能 (apt-get upgrade) は無い。

試しに、以下のようにしてみたが、インストール済みパッケージは再インストールされなかった。

$ apt-cyg show | xargs apt-cyg -u install

あきらめて、setup.exe で Pending を選ぶことにする。

[編集]

-m (--mirror) の記録先は /etc/setup/last-mirror #

(2013-07-07)

apt-cyg で参照するミラーを変更するには、-m (--mirror) オプションを使う。

ミラーサイトの一覧は Cygwin Mirror Siteshttp://cygwin.com/mirrors.lst にある。

例: IIJ から http でミラーにアクセスする

$ apt-cyg --mirror http://ftp.iij.ad.jp/pub/cygwin update

この設定は、以後ずっと記録されるので、以後は -m (--mirror) オプションの指定は不要になる。

この設定の記録先は、cyg-apt (シェルスクリプト) を見ると、/etc/setup/last-mirror だった。

[編集]

インストール #

(2013-07-07)

現時点の最新版 r18 (2010-04-28) を Subversion で入手して用いた。

他に必要なCygwinパッケージは apt-cyg (シェルスクリプト) の先頭付近に記載されているし、 足りなければちゃんと表示されるようだ:

apt-cyg の先頭付近より抜粋:

WGET=`which wget 2> /dev/null`
BZIP2=`which bzip2 2> /dev/null`
TAR=`which tar 2> /dev/null`
GAWK=`which awk 2> /dev/null`
if test "-$WGET-" = "--" || test "-$BZIP2-" = "--" || test "-$TAR-" = "--" \
  || test "-$GAWK-" = "--"
then
  echo You must install wget, tar, gawk and bzip2 to use apt-cyg.
  exit 1
fi

Cygwin 1.7.20 の場合、wget 以外のものは標準でインストールされていた。 よって、wget だけは setup.exe でインストールしておくこと。

自分の場合、GnuWin32 の方のwgetが使われていて mintty (ja_JP.utf-8設定した) で表示内容が文字化けしていたので、 Cygwin パッケージのwgetをインストールして解決した。

Cygwin 1.7.30 (2014-05-23) + apt-cyg r34 では、Baseカテゴリのほかに, wget, bzip2, xz が必要 (tar, gawk は Base カテゴリでインストールされる)。

wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg
chmod +x apt-cyg
cp apt-cyg /usr/bin/