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

[debian-users:00324] dselect and dpkg-mountable



中原です。

dselect に関する話題が続いていますので、いくつか思いついた亊を書いてみ
ます。いろいろな方のインストールに関するメモが WWW でアクセスできるよ
うですが、申しわけありませんが私はほとんど見ていません。よくしられてい
ることもあるかと思いますが御容赦ください。また以前述べたことをくりかえ
していることもあると思いますが御容赦ください。

*** dselect + dpkg-mountable について ***

dselect の選択画面が繁雑なのは皆同意することです。しかしパッケージの依
存関係のチェックには dselect は十分威力を発揮します。ただ、依存関係チェッ
クの画面でのキー操作 (Q,X,R,U,D) には少しは慣れておく必用があります。
(これが一番のハードルですが。私は Q と R しか覚えていません。)

また 1.1.X から 1.2.Y へや 1.2.X から 1.2.Y に upgrade する時などには
dselect に自動的にパッケージの選択をまかすのが楽です。今後 dselect が
どう改善されていくのかわかりませんが、dselect に少しは慣れて、使いやす
くする提言をしていくのも大事だと思います。

もう一つの dselect に対する不満、install が遅いというのは、改善されつ
つあります。ftp メソッドでは改善されています。mountable メソッドが
project/experimental にある dpkg-mountable パッケージで使用できます。
これを利用すると install の遅さは改善されます。(これは将来の dselect 
には組みこまれると思います。) mountable メソッドでは install 時のログが
/var/log/dpkg-mountable に残るのも助かります。

さらに select の cdrom メソッド、nfs メソッドや mounted メソッド等では、
stable、non-free、contrib、local 毎にインストールするので依存関係が正
しくてもエラーがでるバグがありました。

よくある例としては ghostview と gs-aladdin を同時に選択すると、
ghostview がgs に依存していて、gs-aladdin が(virtual package) "gs" を
提供していて依存関係は問題ないのに、gs-aladdin が non-free セクション
なので、ghostview のインストール時に"gs" がないというエラーを出すとこ
とです。

mountable メソッドでは、一度にインストールを行うのでこのようなことに気
をつかう必用がなくなりました。

ただ、今の dpkg-mountable パッケージには、Pre-Depends をうまく扱えない
バグとか、dpkg --print-carchitecture に起因するバグとか、Filename フィー
ルドを扱いそこなうバグとかがあるのが難点です。

ある程度慣れた人は dpkg-mountable を使ってみてはいかがですか。

*** dpkg --set-selcetions について ***

また、dpkg には --get-selections とか --set-selections というオプショ
ンがあります。--get-selections オプションを使うと dselect の外でパッケー
ジの選択 (install, hold, delete, purge の指示) が出来ます。

dpkg --get-selections では標準出力に

adduser						install
ae						install
amd						install

のような一覧表が出力されます。

また、Select-List というファイルが

xpdf install
pcmcia-cs hold
a2ps deinstall
amd purge

という内容のとき、
	dpkg --set-selections < Select-List
とすると、dselect 選択画面で xpdf を install、pcmcia-cs を hold、
a2ps を remove、amd を purge したのと同じ状態になります。

ここで、dselect を起動し、Select に移りエンターキーを押して依存関係の
チェックをし、不足パッケージを dselect に選んでもらって、Install、
Config、Remove、Quit で update 完了です。
(ただし、上で述べた dselect のバグで mountable メソッドを使わないと、
一度にたくさんのパッケージを選択するとエラーが起ることがあります。)

mountable メソッドを使うと (Access で mountable という項目が増える。)
1 個のパッケージの install でもストレスなしで使用できます。
(私は、数個のパッケージの install、remove には dpkg を使いますが)

dpkg --get-selections、dpkg --set-selections と mountable メソッドを使
用すると、複数のマシンに debian をインストールする時や、再インストール
しなおす時に dselect の Select画面でインタラクティブに行なう場面を省略
できます。

また、dpkg --get-selection の出力の形で、おすすめパッケージ集を交換す
ると便利かもしれません。

*** dpkg --set-selections と dselect をつかって ***

私のところでは、数十台のマシンに debian がインストールされていますが、
dpkg --set-selections と dselect でしのいでいます。だいたいの雰囲気を
述べてみます。

* 一台のマシンで標準的なパッケージのインストールをします。
	  dpkg --set-selections > Select-List 
  等でパッケージの状態を保存しておきます。
  基本的なもので、マシン依存なものは (xserver、kernel-image 等) は
  標準 Select-List から除いておきます。(別のリストを用意したりします。)

他のマシンでは、

* (フロッピー等からインストールを開始し)、Reboot します。

* Reboot 後の最初の dselect では 
  * Access を適切に選択
  * Update を行なう。
  * Select では単に Enter。
    依存関係チェックは dselect のいいなりにする (Enter を押す)
  * Install を行う。
  * Quit.

  (本来この部分は不要なのですが、dpkg-mountable のバグで、今のバージョ
   ンで最初から mountable メソッドを使うのは、慣れない人はやめた方がよ
   いでしょう。) 

* dpkg-mountable パッケージを (フロッピー、ftp 等で用意し)
  	dpkg -i dpkg-mountable_XXX.deb
  でインストールする。

* dpkg --set-selections < Select-List 
  でパッケージを選択する。
  マシン依存なパッケージを (xserver、プライベート kernel-image 等を)
  dpkg --set-selections を使って選択します。

* 必用なら debian のディストリビューションのあるメディアを /mnt 等に
  mount しておく。 

* dselect を起動
  * Access で mountable を選ぶ。
  * Update 
  * Select では単に Enter.
    依存関係チェックだけする。修正の必用があれば行う。
  * Install
  * Remove
  * Quit

* mountable メソッドのバグで Install 時 Filename field が無いとかいう
  メッセージがでるパッケージがあります。これらのパッケージはインストー
  ルされないので、何度か Update からやりなおすとインストールされるよう
  になるようです。

* なお、私のところではインストール時のインタラクティブな設定はなるべく
  やらずに、設定ファイルをインストール前や後でバッチで書きかえるように
  しています。

* あとは、各マシンのオーナごとの好みで、いくつかのパッケージを追加、削
  除します。いくつかの好みにあわせて、
    Select-List-basic
    Select-List-expert
    Select-List-NttTeX
    Select-List-AV
  などというファイルを用意しておけば楽です。

*** dselect を使って Update する時の注意 ***

自動的にアップデートされては困るパッケージは dselect で HOLD しておく
ことが大事です。

* pcmcia-cs パッケージ
  PCMCIA を介してインストールしている途中に pcmcia-cs パッケージがアッ
  プデートされると、ネットワークやディスクアクセスが中断されインストー
  ルが失敗する。

* netscape パッケージ
  対応する Linux 用 netscape の tar ファイルが /tmp にないといけないのだが、
  アップデートする前に必用かどうかわからないので、大抵忘れている。
  悪いことに、再インストールも失敗するような状態になることがある。
  (この時は dpkg -i --force-depends などでインストールする。)

*** dpkg の --force-depends オプション ***

dselect とは直接関係ありませんが、(パッケージのバグで) 依存関係が満さ
れていないパッケージをインストールしたい時があります。
また、パッケージが remove も install もできない状態に陥いることが残念
ながら起こることがあります。その時は
	dpkg -i --force-depends 
や
	dpkg -r --force-depends 
等を使う必用がでてきます。--force-XXX を使ったインストールは dselect 
では今のところできません。各種 --force-XXX オプションの一覧は
	dpkg --force-help
で得られます。(このあたりが改善されないと、debian は難しいという評判
がでるでしょうね。)

-- 
中原 早生
広島大学総合科学部 
nakahara@xxxxxxxxxxxxxxxxxxxxx