[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*";