石岡@中央農研・資材利用研です。
kinneko <ydate@xxxxxxxxxxxx> wrote:
> hdinstall して apt-get が普通にできるのであれば、パッ
> ケージ探しは、apt-cash search を使うのが便利かもしれませ
> ん。debian.org でも既存パッケージの検索サービスをやって
> います。
apt-cache なんてのがあったんですね。依存関係を知る手段がないものかと思
いつつも、Web の方のパッケージリストを見ていました。
# まあ、大抵そのままダウンロードだったからいいんですけど。
> > > usbcd は、わたしの試した範囲ではまだ動いていません。
USB のデバイスへの対応ってどんなものなんでしょうか。ML の過去ログを見
たところ、HDD は使えたって話はあったのですが。こちらで産総研の
20020828 版を試したところ、MO ドライブは認識されたのですが、デスクトッ
プに表示されるアイコンが sda1〜4 で、それをクリックしても開かずにやや
悩みました。正解は /dev/sda だったんですけどね。
> > このusbcdは是非期待したいのです。
> > 何しろHD無し、FD/CDは外付けで行きたいのでUSBが欲しいです。
>
> HD 無しでやるには、メモリがたくさん必要ですよ?
そのためのパッケージ削除なんでしょうか。今のところ、私の作っているもの
は CD-R に焼くイメージが 160MB くらいです。圧縮されている KNOPPIX が
150MB くらいで、圧縮前のが 350MB くらいです。これで、X(blackbox) と
ブラウザ(konqueror)が起動します。普通の人が使わないものとして
apache, php, mysql が入っているので、もっと削れると思います。
# ただし、locales は ja_JP しか入れていないため、多言語対応するとなる
# とあと 100MB くらいは取ると思います。目的によってはもっと削ることが
# できるでしょうから、相殺されるかもしれませんが。
少し精神的にゆとりが出来たので、大量削除の筋道の簡単なメモだけ書きます。
まず必要なのは、最小限のパッケージのリストです。といっても、作業を始め
る段階ではリストは無いでしょうし、実際にはこれを調整するのが最終目的に
なります。
私の方で使っているリストを添付したら FreeMail の方で reject されてしまっ
たので、山田さんには直接送ります。他に欲しい人がいたら言ってください。
手順としては、chroot した後に、現在のパッケージの状態を取得します。
# dpkg --get-selections > original.txt
次に、perl のスクリプトを用意します(私は purge.pl って名前にしてます)。
これは dpkg での設定を purge に変更するものです。ただし、hold のものは
そのまま、パッケージ名に knoppix と入っているものは install にします。
while(<>){
split(/\t/);
$package = @_[0];
if($_ =~ /hold/){
system("echo $package hold | dpkg --set-selections");
}elsif($_ =~ /knoppix/){
system("echo $package install | dpkg --set-selections");
}else{
system("echo $package purge | dpkg --set-selections");
}
}
で、このスクリプトを original.txt を引数に動かします。
# perl purge.pl original.txt
これにはそこそこ時間がかかります。どう変わったか確認したかったら、
dpkg --get-selections の出力を見てください。
続いて、最小限のパッケージのみ install に変更します。同様に perl のス
クリプトを作ります(私は minimize.pl と言う名前にしています)。
while(<>){
split(/\t/);
$package = @_[0];
if($_ =~ /hold/){
system("echo $package hold | dpkg --set-selections");
}elsif($_ =~ /deinstall/){
system("echo $package deinstall | dpkg --set-selections");
}elsif($_ =~ /install/){
system("echo $package install | dpkg --set-selections");
}else{
system("echo $package purge | dpkg --set-selections");
}
}
これを、最小限のパッケージリストを引数に動かします。
# perl minimize.pl minimun.txt
これで、最小限のパッケージリストに書かれている状態が反映されます。
続いてパッケージの削除ですが、
# script process.log
とでもして、過程のログを取っておいた方がいいと思います(exit でログ取
りは終わります)。その後、
# apt-get dselect-upgrade
とします。依存関係に問題がなければ、大量のパッケージ名が表示されたあと、
0 packages upgraded, 0 newly installed, 996 to remove and 0 not upgraded.
Need to get 0B of archives. After unpacking 1618MB will be freed.
Do you want to continue? [Y/n]
と出ます。ここで y リターンで削除が始まります。途中で質問してくる場合
もあるので、削除されていく様子を眺めていましょう。ディレクトリは削除さ
れない場合も多いので、それも削りたいならログを参考にしないといけないで
しょう(うまくスクリプトを作ればこれも一気に削除出来ると思います)。
依存関係に問題があった場合、
# apt-get dselect-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
Sorry, but the following packages have unmet dependencies:
konq-speaker: Depends: festival but it is not going to be installed
libqt3-dev: Depends: libmng-dev (>= 1.0.3) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
E: Internal Error, problem resolver broke stuff
などと出ます。パッケージ数が少ない場合は、
# echo konq-speaker purge | dpkg --set-selections
# echo libmng-dev install | dpkg --set-selections
などとして個々に対応すれば良いと思います。多かった場合は、ログからパッ
ケージ名を切り出して、
while(<>){
chomp;
$package = $_;
system("echo $package install | dpkg --set-selections");
}
というスクリプトの引数にパッケージ名の入ったファイルを指定するなどして、
対応して下さい。
削除が終わったあと、dpkg --get-selections でパッケージの状態を見ると、
おそらく purge のまま残っているものがあると思います。それは、hold になっ
ているパッケージとの兼ね合いなどで、指定は purge だけど削除されなかっ
たものだと思います(自分でもよく分かっていません)。dpkg -l の出力を見
ると、
pi kdesktop 3.0.4-1 KDE Desktop
といった表示になっていると思います。最初の pi の意味については、dpkg
か dselect のマニュアルを見れば意味がわかると思います。
で、これらのパッケージについては、
# apt-cache depends <パッケージ名>
で依存関係を確認して削除して行くしか無いかな、と思っています。
最終的には手作業が入りますが、一度最小構成のリストが出来てしまえば、再
度削除が必要になった時にはあっさりと進みます。
# まあ、サイズが小さくなるから、ディレクトリごとバックアップを取ってお
# くのも気楽ですけど。
とりあえず、こんなところで。
--------------------------------------------------------
石岡 厳 <ISHIOKA Gen> e-mail: gen@xxxxxxxxxxx
独立行政法人 農業技術研究機構 中央農業総合研究センター
土壌肥料部 資材利用研究室
--------------------------------------------------------
|