[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:21156] Re: apt on offline env. (Re: Re: XFree86 の install について )



From: Taku YASUI <tach@debian.or.jp>
Subject: [debian-users:21151] Re: apt on offline env. (Re:  Re: XFree86 の install について )
Date: Fri, 3 Mar 2000 17:05:28 +0900

よしもと@はじめてましてです

> upgrade するものだけ,持ってくるような方法ってありますか?

私も以前同様な事で悩んだ事があり、その時は下記の方法でGetしました。

apt-get -d --reinstall -y install package1 [package2] [...]

	         -d : downloadのみ行う。(パッケージの展開はしない)
	--reinstall : すでにインストール済でもインストール動作を行う。
	         -y : downloadの確認(Yes/No)を行わない。

これを自動で行うスクリプトを作り無事目的を達成しました。
# 参考までにスクリプトを添付します。

GetしたFileは「/var/cache/apt/archives/」に入るので、それをMOなりに焼き
ました。

ではでは。
#! /usr/local/bin/perl

# アーギュメント数チェック
if( @ARGV >1 ){
#  print "Mac(SEEQ8101) Model Frame Data Generator Ver 0.1\n";
  print "アーギュメント不正!!\n";
  print "usage:\n";
  print "getdebinspkg -size\n\n";
  exit(-1);
}

#$PkgFile = "dists/stable/".$ARGV[0]."/binary-i386/Packages.gz";	# file_in_name取得

#$PkgFile =~ s/stable/slink/;

$TmpDir   = "/tmp";
$TmpFile1 = $TmpDir."/getdebinspkg001"; # インストール済のパッケージ一覧
$TmpFile2 = $TmpDir."/getdebinspkg002"; # 各々のインストール済のパッケージ詳細

# インストール済のパッケージ一覧を作る
system "dpkg --get-selections|grep -v deinstall > " .$TmpFile1;

##########################################################################
# 各パッケージのサイズ及び総計を求める

if( @ARGV == 1 && $ARGV[0] == "-size")
  {
    $LINE = 0;
    $SubTotal = 0;
    open( IN1  , "<".$TmpFile1  ) ||   die "can't open $TmpFile1 :$!\n";
    #open( OUT , ">".$TmpFile2  ) ||   die "can't open $TmpFile2 :$!\n";
    while( <IN1> ) 			# 1 line get
      {
	#  chop;
	@data1   = split(/ |\t/);
	system "dpkg -p ".@data1[0]."|grep ^Size >" .$TmpFile2;
	open( IN2  , "<".$TmpFile2  ) ||   die "can't open $TmpFile2 :$!\n";
	while( <IN2> ) 			# 1 line get
	  {
	    chop;
	    @data2   = split(/ |\t/);
	  }
	$LINE++;
	$SubTotal += @data2[1];
	print "No.$LINE:Size=@data2[1]:SubTotal=$SubTotal:@data1[0] \n";
      }
    close IN1;
    close IN2;
    #close OUT;
  }

##########################################################################
# apt-getでパッケージをgetする。(/var/cache/apt/archives/〜に入る)

$LINE = 0;
$SubTotal = 0;
open( IN1  , "<".$TmpFile1  ) ||   die "can't open $TmpFile1 :$!\n";
while( <IN1> ) 			# 1 line get
  {
    chop;
    @data1   = split(/ |\t/);
    system "apt-get -d --reinstall -y install ".@data1[0];
  }
close IN1;

system "rm -f ".$TmpDir."/getdebinspkg*";