Fink behind firewall

提供: MacWiki
2013年3月26日 (火) 21:18時点におけるMebaR (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

Snow Leopard にて、firewall の背後から cvs server を利用しての install法

ここでは、http proxy 経由で firewall を越えることができる場合を考える。 proxy server の host 名を proxy.example.com、 その port を 8080 とする。 fink の installer にこれらの情報をどう教えこむかが問題。

Snow Leopard では、fink の binary installer が無いので、 source (fink-0.29.10.tar.gz) から install する必要がある。 Ref. http://www.finkproject.org/download/srcdist.php

 $ tar zxf fink-0.29.10.tar.gz
 $ cd fink-0.29.10

Snow Leopard 附属の cvs は、1.12.13 なので、proxy 経由で cvs server に接続できる。proxy は, repository に接続する method の option として指定する。たとえば、pserver で 接続する場合は、これに option を加えて、

  pserver;proxy=proxy.example.com;proxyport=8080

といった具合。

Ref.


ここでは、fink-0.29.10 内の二つの file に patch を当てて対応する。


perlmod/Fink/SelfUpdate/CVS.pm への patch[編集]

 --- CVS.pm.orig	2010-02-03 11:57:14.000000000 +0900
 +++ CVS.pm	2010-02-03 12:40:37.000000000 +0900
 @@ -202,7 +202,7 @@
 			  $cmd = "cvs ${verbosity} -z3 -d$cvsrepository";
 		  }
 		  else {
 -			$cmd = "cvs -d:pserver:anonymous\@$cvsrepository login";
 +			$cmd = "cvs -d\":pserver;proxy=proxy.example.com;proxyport=8080:anonymous\@$cvsrepository\" login";
 			  if ($username ne "root") {
 				  $cmd = "/usr/bin/su $username -c '$cmd'";
 			  }
 @@ -210,7 +210,7 @@
 				  die "Logging into the CVS server for anonymous read-only access failed.\n";
 			  }
 			  else {
 -				$cmd = "cvs ${verbosity} -z3 -d:pserver:anonymous\@$cvsrepository";
 +				$cmd = "cvs ${verbosity} -z3 -d\":pserver;proxy=proxy.example.com;proxyport=8080:anonymous\@$cvsrepository\"";
 			  }
 		  }
 	  } else {

とりあえず proxy が hardcode してあるので、これを適当に編集して使う.


作業開始[編集]

 $ ./bootstrap
 $ /sw/bin/pathsetup.sh
 $ fink selfupdate-cvs
 $ fink update-all


/sw/lib/fink/mirror/postintall.pl への patch[編集]

repository の指定で、proxy の情報が含まれるときの副作用を解消する。

一例は、fink-mirror の postinst が失敗するようになる。 これは、CVS/Root の format を読む場合、proxy の情報に対応していないため。

これを修正する。ad hoc かもしれない

 --- mirror/postinstall.pl.orig	2010-02-03 13:06:10.000000000 +0900
 +++ mirror/postinstall.pl	2010-02-03 13:19:19.000000000 +0900
 @@ -53,14 +53,14 @@
      open(IN,'<',"$sentinel_cvs/Root") or die "can't open $sentinel_cvs/Root: $!";
      while (defined($_=<IN>)) {
 	   chomp;
 -        if (/^(:\w+:\w+)@(.+)$/) {
 +        if (/^(:\S+:\S+)@(.+)$/) {
 	       $method_user = $1;
 	       $repo = $2;
 	   }
      }
      close(IN);
      die "couldn't parse $sentinel_cvs/Root\n" unless ((defined $method_user) and (defined $repo));
 -    if (defined $method_user and $method_user eq ":pserver:anonymous") {
 +    if (defined $method_user and $method_user =~ /^:pserver(.*):anonymous$/) {
 	  $repo_file = "/sw/lib/fink/URL/anonymous-cvs";
      } else {
 	  $repo_file = "/sw/lib/fink/URL/developer-cvs";


いろいろ大事なものが無いので、 unstable を使う。/sw/etc/fink.conf の Trees: の行の末尾に次を追加

 unstable/main 

ここで、unstable/ctypto を加えるとまずいようだ。そして、仕上::

 $ fink selfupdate
 $ fink update-all

あとは普通に使えるはず。

どこかで、dpkg --configure fink-mirrors が必要らしい。。。

Wiki内の関連ページ[編集]