Vitruvian Penguin
knoppix

[knoppix:0870] Re: RedHat でknoppix をインストール?

Date: Mon, 27 Jan 2003 16:05:11 +0900 (JST)
X-mailer: Mew version 2.2 on Emacs 20.7 / Mule 4.1 (AOI)
石岡@中央農研・資材利用研です。

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

独立行政法人 農業技術研究機構 中央農業総合研究センター
土壌肥料部 資材利用研究室
--------------------------------------------------------
<Prev in Thread] Current Thread [Next in Thread>