<< Back to man.lupaworld.com


[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 次のページ ]

Debian リファレンス
第 6 章 - Debian パッケージ管理


現在 aptitude は APT のコンソール版のフロントエンドと みなされています。過去にインストールしたパッケージと依存性を通じて 引っ張って来たパッケージを故意に記憶しています。 故意にインストールしたパッケージによりもはや必要とされなくなった場合、 後者のタイプのパッケージは aptitude により自動的に 削除されます。先進的なパッケージフィルタ機能を持ちますが、設定するのは 難しいでしょう。

現在 synaptic は APT の Gtk 版 GUI フロントエンドと みなされています。 aptitude よりも設定しやすいパッケージフィルタ機能を持ちます。 又、Debian Package Tags を実験的にサポート しています。

Debian のリポジトリへのネットワーク負荷を低減し、ダウンロードを 高速化するためには、パッケージを Debian のミラーサイトから ダウンロードすべきです。

ローカルネットワーク内の複数のマシンに同じパッケージをインストール する必要がある場合、APT を通じたパッケージのダウンロードのために squid を使ってローカルの HTTP プロキシを立ち上げる ことができます。必要ならば、http_proxy 環境変数を設定 したり、 /etc/apt/apt.confhttp 値を 設定してください。

apt_preferences(5) に記載された pin 機能は強力ですが、その影響について理解や管理がしずらい場合が あります。これを先進的な機能とみなすべきです。

chroot, 第 8.6.35 節 に記載された手法を用いることは、 システムの安定性と最新版のソフトウエアへのアクセスの両方を確保できる ために、望ましい手法です。

本章は Woody 以後のシステムに準拠していますが。 いくつかの機能は Sarge 以後であることを要求するかもしれません。


6.1 イントロダクション

もし全てのデベロッパー向けのドキュメンテーションを読むのが辛いなら、本章を まず読み、Debian の testing/unstable によるフルパワーを 楽しみ始めてください :-)


6.1.1 主要なパッケージ管理ツール

     dpkg      – Debian パッケージファイルインストーラ
     apt-get   – APT のコマンドラインフロントエンド
     aptitude  – APT の先進的なコンソール版コマンドラインフロントエンド
     synaptic  – APT の Gtk GUI フロントエンド
     dselect   – メニュドリブンなパッケージマネージャ
     tasksel   – タスクインストーラ

これらはお互いに置き換わるものではありません。 例えば、dselect は APT も dpkg も使用しています。

APT は 取得可能なパッケージを追跡するために /var/lib/apt/lists/* を使いますが、 dpkg/var/lib/dpkg/available を使います。 aptitude や他の APT のフロントエンドを使ってパッケージを インストールしてきて、インストールに dselect を使いたい場合、まず 最初にすべきことは dselect のメニュから [U]pdate を選択する (又は "dselect update" を起動する) ことです。

apt-get は自動的にインストールを要求したパッケージに Depends する パッケージをインストールします。インストールを要求したパッケージに単に Recommends や Suggests するパッケージはインストールしません。

一方、aptitude はインストールを要求したパッケージに Recommends や Suggests するパッケージをインストールするように設定できます。

dselect は選択したパッケージが Recommends や Suggests するパッケージ のリストをユーザに提供し、それらを個別にインストールするかどうかを選択できます。 パッケージの依存性, 第 2.2.8 節 参照。


6.1.2 便利なツール

     dpkg-reconfigure  - 既にインストールしたパッケージを再設定する
                         (debconf を使っている場合)
     dpkg-source       - source パッケージファイルを管理する
     dpkg-buildpackage - パッケージファイルの構築を自動化する
     apt-cache         - ローカルキャッシュにあるパッケージアーカイブをチェックする

6.2 Debian パッケージ管理の基礎

アップグレードの準備, 第 5.2 節 に記述されているように sources.list を設定しましょう。 [34] Debian システムインストールのヒント, 第 3 章, stable, testing, 又は unstable ディストリビューションへのアップグレード, 第 5 章, や 緊急用エディタ, 第 11.2 節 でも言及しています。


6.2.1 task のインストール

特定の使用目的で Debian システムに入れ込むために要求される主要な パッケージ群をインストールできます。 これらのパッケージ群は "task" と呼ばれます。

最初のインストール時に task をインストールする最も単純な方法は tasksel を使用することです。 使用前に

     dselect update

を起動させる必要がある ことに注意してください。

aptitude も task をインストールでき、この目的に 用いるために推奨できるツールです。 インストールの手順に進む前に task 内の個別のパッケージを削除 することを可能とします。


6.2.2 aptitude

aptitudedselect に似たメニュドリブンな新しい パッケージインストーラですが、APT の上に 1 から構築されています。 apt-get の代わりのコマンドラインコマンドとしても使えます。 aptitude(1)/usr/share/doc/aptitude/README をご覧ください。

いったん aptitude を使いはじめたら、他のパッケージを インストールする手段を用いずに使い続けるのが良いでしょう。 そうでないと意図してインストールしたパッケージを追跡するという aptitude の利点を失ってしまいます。

aptitude はフルスクリーンモードで通常小文字の 1文字の キーコマンドを受け付けます。言及しておくべきキーストロークをいくつか 示します。

     キーストローク  アクション
     F10             メニュ
     ?               キーストロークヘルプを表示
     u               パッケージアーカイブ情報を更新
     +               パッケージをアップグレードするか新たにインストールするとしてマークする
     -               パッケージを削除するとしてマークする (設定はそのまま)
     _               パッケージを purge するとしてマークする (設定も削除)
     =               パッケージを hold する
     U               全てのアップグレード可能なパッケージをアップグレードするとしてマークする
     g               選択パッケージのダウンロードおよびインストール
     q               現在のスクリーンを終了し、変更点を保存する
     x               現在のスクリーンを終了し、変更点を無視する
     Enter           パッケージの情報を閲覧
     C               パッケージの変更履歴を閲覧
     l               表示されたパッケージの制限を変更
     /               単語検索
     \               最後の検索を繰り返す

apt-get のように、aptitude は選択したパッケージが Depends するパッケージをインストールできます。aptitude も インストールされるパッケージが Recommends したり Suggests する パッケージを引っ張って来るようなオプションを提供します。 メニュで F10 -> Options -> Dependency handling を選択することにより、 標準の挙動を変更できます。

aptitude の他の利点には次があります。


6.2.3 dselect

Potato を含む stable リリースまでは、dselect は主要なパッケージ管理ツールでした。 Sarge では、aptitude を代わりに使うことを考慮すべきです。

dselect を起動すると、自動的に "Required", "Important", および "Standard" パッケージの全てを選択します。

dselect はいくらか奇妙なユーザインターフェースを持ちます。 ほとんどの人は慣れますが、4 個のコマンドがあります。 (大文字は大文字で入力 することを示します!)

     キーストローク   アクション
     Q           終了。現在の選択を認め、とにかく終了する。
                 (依存性を上書きする)
     R           戻る! 悪気はありません。
     D           しまった! dselect が考えていることは分かりません。
     U           全てを推奨される状態にセットする。

DQ により、リスクを負って衝突した選択を 選ぶことができます。これらのコマンドを注意深く扱ってください。

雑音を減らすために、 "expert" オプションを含む行を /etc/dpkg/dselect.cfg に追加してください。

あなたのマシンでは dselect の動きが遅い場合、 インストールしたいパッケージを決定するために他の (高速な) マシン で dselect を起動して、実際にインストールするためには 低速なマシンで apt-get install を使うことを考えた方が 良いかもしれません。


6.2.4 APT を用いてディストリビューションを追いかける

testing ディストリビューションの変更を追いかけることには、 セキュリティ修正を含むパッケージのインストールが遅れるという副作用 がありうることに注意してください。 そのようなパッケージはまず unstable にアップロードされ、 遅れて testing に移動してきます。

例えば、unstable から選択したパッケージをインストールしながら testing を追いかけることを許可するようなより複雑な例については apt_preferences(5) をご覧ください。

他のパッケージを追いかけながら特定のバージョンであるパッケージをロックする 例については、examples subdirectorypreferences.testingpreferences.unstable として得られます。

ディストリビューションを混在させる、すなわち stabletesting を一緒にしたり、 stableunstable を一緒にすると、 結果的には testingunstable から libc6 のような主要なパッケージを 引っ張って来てしまうでしょう。これらにはバグが含まれていないと保証 できません。警告しておきます。

もう一つの例として、preferences.stable は全てのパッケージの stable へのダウングレードを強制します。

新しいリリースの package を古いリリースのものに ダウングレードすることは Debian では公式にサポートされていません。 しかしながら、新しいバージョンがうまく動かないので、うまく動くバージョンの パッケージを再インストールする目的で特定のパッケージをダウングレード する必要があることが判明するかもしれません。 これらの以前インストールしていたパッケージファイルはローカルの /var/cache/apt/archives/ 又は リモートでは http://snapshot.debian.net/ に見つかるかもしれません。 dpkg を用いたレスキュー, 第 6.3.3 節 もご覧下さい。

新しいリリースの ディストリビューション を古いリリースのものに ダウングレードすることも Debian では公式にサポートされていませんし、 問題を引き起こすでしょう。しかしながら、絶望に駆られた場合に 最後の手段として試す価値はあるかもしれません。


6.2.5 aptitude, apt-getapt-cache コマンド

上の例に記述されたように testing を追いかける間、 次のコマンドを用いてシステムを管理できます。

上の例では、apt-get-u オプションを与えると アップグレードされる全てのパッケージのリストを表示し、次に取る行動を ユーザに促します。 次の例は apt-get が常にこの動作を取るようにします。

     $ cat >> /etc/apt/apt.conf << .
     // Always show packages to be upgraded (-u)
     APT::Get::Show-Upgraded "true";
     .

実際にインストール、削除などをあらゆるパッケージに対して行わずに 同様の行動を取るには、--no-act を使用してください。


6.3 Debian で生き残るためのコマンド

本章の知識により、永遠の upgrade 生活をすごせます。 :)


6.3.1 Debian のバグをチェックし、助けを求める

特定のパッケージに関する問題に直面している場合、助けを求めたり、 バグレポートを出す前にこれらのサイトをチェックしましょう。 (lynx, links, および w3m は 同じように機能します)。

     $ lynx http://bugs.debian.org/
     $ lynx http://bugs.debian.org/package-name  # パッケージ名を知っている場合
     $ lynx http://bugs.debian.org/bugnumber     # バグ番号を知っている場合

"site:debian.org" を含む検索語により Google (www.google.com) を検索して みてください。

疑問がある場合は、良質のマニュアルを読んでください。CDPATH を 次のように設定してください。

     export CDPATH=.:/usr/local:/usr/share/doc

そして次を実行してください。

     $ cd packagename
     $ pager README.Debian # 存在する場合
     $ mc

さらなるサポートリソースを Debian のサポート, 第 15 章 に挙げます。


6.3.2 APT アップグレードのトラブルシュート

パッケージの依存性問題は アップグレード, 第 5.3 節 に記述したように unstable 又は testing にアップグレードする場合に 発生する可能性があります。 ほとんどの場合、これはそのパッケージがまだ得られないパッケージに Depends しているためです。 これらの問題は次の手順を用いて解決できます。

     # aptitude dist-upgrade

これが動かない場合、問題が解決するまで次のコマンドを繰り返し実行して ください。

     # aptitude -f upgrade          # エラーが起きても upgradeを続ける
     ... 又は
     # aptitude -f dist-upgrade    # エラーが起きても dist-upgrade を続ける

時々本当に壊れたアップグレードスクリプトにより持続的な問題を起こすことがあります。この種の状況を解決するには、/var/lib/dpkg/info/packagename.{post,pre}{inst,rm} スクリプトを調べ、次を実行するのがよいでしょう。

     # dpkg --configure -a    # 部分的にインストールされたパッケージを全て設定

スクリプトに設定ファイルが無いと言っている場合、対応する設定ファイルに対して /etc/ を調べてください。.new (又は同種の) 拡張子 を持つファイルが存在する場合、mv して拡張子を削除してください。

パッケージの依存性問題は unstable 又は testing に インストールする場合に発生する場合があります。依存性を迂回する手段があります。

     # aptitude -f  install package # 壊れた依存性を上書きする

これらの状況を修正するための代替手段として、equivs パッケージを使えます。 /usr/share/doc/equivs/README.Debianequivs パッケージ, 第 6.5.2 節 をご覧ください。


6.3.3 dpkg を用いたレスキュー

APT を用いて行き詰まった場合、Debian のミラーからパッケージを ダウンロードし、dpkg を用いてインストールできます。 ネットワークにアクセスできない場合、/var/cache/apt/archives/ にあるパッケージファイルのキャッシュを探せます。

     # dpkg -i fetchmail_6.2.5-4_i386.deb

依存性の衝突によりこのようにパッケージをインストールするのを失敗してしまい、 本当のそのパッケージをインストールする必要がある場合、 dpkg--ignore-depends, --force-depends, や他のオプションを用いて依存性のチェックを上書きすることができます。 詳細は dpkg(8) をご覧下さい。


6.3.4 パッケージ選択データの回復

/var/lib/dpkg/status がなんらかの理由で壊れた場合、 Debian システムはパッケージ選択データを失い、ひどく苦しみます。 /var/lib/dpkg/status-old/var/backups/dpkg.status.* にある古い /var/lib/dpkg/status ファイルを探してください。

このディレクトリが多くの重要なシステムデータを含んでいるので、 別のパーティションに /var/backups/ を保持するのは良い考えです。

古い /var/lib/dpkg/status ファイルが得られない場合、まだ /usr/share/doc/ にあるディレクトリからの情報で回復できます。

     # ls /usr/share/doc | \
       grep -v [A-Z] | \
       grep -v '^texmf$' | \
       grep -v '^debian$' | \
       awk '{print $1 " install"}' | \
       dpkg --set-selections
     # dselect --expert # システムを再インストールし、必要ない物を除外する

6.3.5 /var のクラッシュ後のシステム回復

/var ディレクトリはメールなどの定期的に更新されるデータを 含むので、汚染されやすくなっています。このディレクトリを別のパーティションに 分けることにより、リスクを限定できます。故障が発生した場合、 /var ディレクトリを再構築して Debian システムを回復 する必要があるかもしれません。

最小限 Debian が機能する /var ディレクトリの基幹部分を同一又は古い Debian バージョンから、例えば var.tar.gz などを取得し、壊れたシステムの root ディレクトリに置きます。そして

     # cd /
     # mv var var-old      # 役に立つ内容が残っている場合
     # tar xvzf var.tar.gz # Woody の基幹ファイルを使用
     # aptitude            # 又は dselect

を実行します。これによりシステムが機能するようになるはずです。 パッケージ選択データの回復, 第 6.3.4 節 に記述している技術を用いてパッケージ選択データ の回復をはかどらせることができます。 ([FIXME]: 本手順はさらなる検証が必要。)


6.3.6 ブート不能なシステムにパッケージをインストール

Debian レスキューフロッピ/CD 又は マルチブート Linux システム上の別の パーティションを用いて Linux をブートしてください。 システムをブートする, 第 8.1 節 参照。 ブート不可能なシステムを /target にマウントし、dpkg の chroot インストールモードを使用します。

     # dpkg --root /target -i packagefile.deb

そして設定を行い、問題を修正します。

ところで、lilo が壊れてブート不能になった場合、標準の Debian レスキューディスクを用いてブートできます。 Linux をインストールしてある root パーティションを /dev/hda12 と仮定し、ランレベル 3 で起動したいとすると、lilo のプロンプトで次を 入力してください。

     boot: rescue root=/dev/hda12 3

こうしてフロッピディスク上の kernel を用いてほぼ完全に機能するシステムに ブートできます。(kernel の機能やモジュールがないことによる些細な不都合が 存在するかもしれません。)


6.3.7 dpkg コマンドが壊れた場合どうするか

dpkg が壊れると .deb ファイルがインストール不能になります。 次の手順によりこのような状況からの回復の助けになります。(第 1 行の "links" を好みのブラウザコマンドに置き換えてください。)

     $ links http://http.us.debian.org/debian/pool/main/d/dpkg/
       ... 良好な dpkg_version_arch.deb をダウンロード
     $ su
     password: *****
     # ar x dpkg_version_arch.deb
     # mv data.tar.gz /data.tar.gz
     # cd /
     # tar xzfv data.tar.gz

i386 に対しては、http://packages.debian.org/dpkg が URL としても使われます。


6.4 Debian 涅槃コマンド

これらのコマンドを 愉しむ と、永遠のアップグレード地獄から救い出し、Debian の 涅槃 に導くことができます。:)


6.4.1 ファイルに関する情報

ある特定のファイル名のパターンがどのインストール済みパッケージに 所属するかを見つけるには以下を実行します:

     $ dpkg {-S|--search} pattern

もしくは同様のことを Debian アーカイブ中で見付けるには以下を実行します:

     $ wget http://ftp.us.debian.org/debian/dists/sarge/Contents-i386.gz
     $ zgrep -e pattern Contents-i386.gz

もしくは特別なパッケージコマンドを使います。

     # aptitude install dlocate  
                      # slocate (locate の安全版) と衝突する
     $ dlocate filename         # dpkg -L と dpkg -S の高速な代替品
     ...
     # aptitude install auto-apt # オンデマンドのパッケージインストールツール
     # auto-apt update          # autp-apt 用の db ファイルを作成
     $ auto-apt search pattern  
     # インストールされているかに係わらず、全パッケージをパターン検索

6.4.2 パッケージ情報

パッケージアーカイブから情報を検索し、表示します。 /etc/apt/sources.list を編集して APT が適切なアーカイブを 指すようにしてください。 testing 又は unstable にあるパッケージが現在インストール しているパッケージに対してどうなっているかを知るには、 apt-cache policy を使うのが良いでしょう。

     # apt-get   check      # キャッシュを更新し、壊れたパッケージをチェック
     $ apt-cache search  pattern # テキストの説明からパッケージ検索
     $ apt-cache policy  package # パッケージの priority/dist 情報を表示
     $ apt-cache show -a package # 全 dists のパッケージ説明を表示
     $ apt-cache showsrc package # マッチしたソースパッケージの説明を表示
     $ apt-cache showpkg package # パッケージのデバッグ情報を表示
     # dpkg  --audit|-C          # 部分的にインストールされたパッケージを検索
     $ dpkg {-s|--status} package ...  # インストール済みのパッケージの説明を表示
     $ dpkg -l package ...    # インストール済みパッケージのステータスを表示 (1行毎)
     $ dpkg -L package ...    # 指定したパッケージに含まれるファイル名リストを表示

apt-cache showrc は Woody リリースではドキュメント化されていませんが、使えます :)

また、次に挙げるファイルからもパッケージ情報を検索できます(これらを見るのに mc を使っています)。

     /var/lib/apt/lists/*
     /var/lib/dpkg/available

次のファイルを比較すると、最後のインストールセッションで何が起きたかが 正確に分かります。

     /var/lib/dpkg/status
     /var/backups/dpkg.status*

6.4.3 APT によりキーボードに触らずにインストール

キーボードに触らずにインストールするには、次の行を /etc/apt/apt.conf に追加してください。

     Dpkg::Options {"--force-confold";}

これは aptitude -y install packagename を起動するのと 同じことです。これは全プロンプトについて自動的に "yes" で答えるので、 問題が発生するかもしれません。ゆえに慎重にこのトリックを使ってください。 apt.conf(5) および dpkg(1) をご覧ください。

インストール済みパッケージの再設定, 第 6.4.4 節 に従い、特定のパッケージを後で設定することもできます。


6.4.4 インストール済みパッケージの再設定

次のコマンドを使ってインストール済みパッケージの再設定を行います。

     # dpkg-reconfigure --priority=medium package [...]
     # dpkg-reconfigure --all   # 全パッケージの再設定
     # dpkg-reconfigure locales # 特別なロケールの生成
     # dpkg-reconfigure --p=low xserver-xfree86 # X サーバの再設定

debconf ダイアログモードが永続的に必要な場合は、 debconf を再設定してください。

特別な設定スクリプトを持つプログラムがいくつかあります。 [36]

     apt-setup     - /etc/apt/sources.list の生成
     install-mbr   - Master Boot Record manager のインストール
     tzconfig      - ローカル time zoneゾーンの設定
     gpmconfig     - gpm マウスデーモンの設定
     sambaconfig   - Potato で Samba の設定を行う (Woody は debconf を使用)
     eximconfig    - Exim (MTA) の設定
     texconfig     - teTeX の設定
     apacheconfig  - Apache (httpd) の設定
     cvsconfig     - CVS の設定
     sndconfig     - サウンドシステムの設定
     ...
     update-alternatives - 標準のコマンドの設定、例えば vim を vi に設定
     update-rc.d         - System-V init スクリプトマネージャ
     update-menus        - Debian menu システム
     ...

6.4.5 パッケージの削除及びパージ

設定ファイルを維持したままパッケージを削除します。

     # aptitude remove package ...
     # dpkg  --remove package ...

設定ファイルを含め、パッケージを削除します。

     # aptitude purge package ...
     # dpkg    --purge        package ...

6.4.6 古いパッケージを hold する

例えば、libc6libc6-devdselect および aptitude install package に対して hold するには、次を実行します。

     # echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections

aptitude install package はこの "hold" により隠されません。 aptitude upgrade package 又は aptitude dist-upgrade に対する自動ダウングレードの強行から パッケージを hold するには、 /etc/apt/preferences に次の行を追加してください。

     Package: libc6
     Pin: release a=stable
     Pin-Priority: 2000

ここで、 "Package:" エントリは "libc6*" のようなエントリを 使えません。glibc ソースパッケージに同期したバージョンの 全バイナリパッケージを hold する必要がある場合、それらのパッケージを明示的に 挙げる必要があります。

次のコマンドにより hold されたパッケージのリストを表示できます。

     dpkg --get-selections "*"|grep -e "hold$"

6.4.7 stable/testing/unstable システムの混在

apt-show-versions により、特定のディストリビューションによる パッケージのバージョンをリストできます。

     $ apt-show-versions | fgrep /testing | wc
     ... testing からのパッケージ数をカウント
     $ apt-show-versions -u
     ... アップグレード可能なパッケージ数
     $ aptitude install `apt-show-versions -u -b | fgrep /unstable`
     ... 全ての unstable パッケージを最新バージョンにアップグレード

6.4.8 キャッシュされたパッケージファイルを取り除く

APT でパッケージをインストールすると、キャッシュされたパッケージファイルが /var/cache/apt/archives に残されるので、これらを消す必要が あります。

     # apt-get autoclean # 必要ないパッケージファイルのみ削除
     # apt-get clean     # キャッシュされたパッケージファイル全てを削除

6.4.9 システム設定の記録/コピー

パッケージ選択ステータスのローカルコピーを取るには、次を実行します。

     $ dpkg --get-selections "*" >myselections   # 又は \* を使用

"*" により、myselections が "purge" 用の パッケージエントリにも含まれるようになります。

このファイルを他のコンピュータに転送し、これを用いてインストール可能です。

     # dselect update
     # dpkg --set-selections <myselections
     # apt-get -u dselect-upgrade    # 又は dselect install

6.4.10 stable システムへのパッケージ移植

stable システムの部分的なアップグレードのためには、ソースパッケージを 用いて stable 環境でパッケージを再構築するのが望ましいです。 パッケージ再構築により、依存性による強引なパッケージアップグレードを避けることが できます。まず、次のエントリを /etc/apt/sources.list に追加します。

     deb-src http://http.us.debian.org/debian testing \
      main contrib non-free
     deb-src http://non-us.debian.org/debian-non-US testing/non-US \
      main contrib non-free
     deb-src http://http.us.debian.org/debian unstable \
      main contrib non-free
     deb-src http://non-us.debian.org/debian-non-US unstable/non-US \
      main contrib non-free

ここで、deb-src に対する各エントリは印刷時の制限のために 2行に分割 されていますが、実際の sources.list は 1行としてください。

そしてソースを取得し、ローカルパッケージを作成します。

     $ apt-get update  # ソースパッケージの検索リストを更新
     $ apt-get source package
     $ dpkg-source -x package.dsc
     $ cd package-version
       ... 要求されたパッケージを検査 (.dsc ファイル中の Build-depends) し、
           それらもインストールする。"fakeroot" パッケージも必要。
     
     $ dpkg-buildpackage -rfakeroot 
     
       ...又は (サイン無し)
     $ dpkg-buildpackage -rfakeroot -us -uc #必要ならば後で "debsign" を使用
     
       ...そしてインストール
     $ su -c "dpkg -i packagefile.deb"

普通、パッケージの依存性を満たすために "-dev" サフィックスが付く 2, 3個の パッケージをインストールする必要があります。debsigndevscripts パッケージにあります。auto-apt を使うと、依存性を簡単に満足させられるかもしれません。fakeroot を使うと、root アカウントの不必要な使用を避けられます。

Woody では、依存性の問題は単純にできます。例えば、 ソースのみの pine パッケージをコンパイルするには、

     # apt-get build-dep pine
     # apt-get source -b pine

だけです。


6.4.11 ローカルパッケージのアーカイブ

APT と dselect システムとの互換性を持つローカルパッケージの アーカイブを作成するには、Packages を作成し、 特定のディレクトリツリーに置く必要があります。

公式の Debian アーカイブと同様のローカル deb リポジトリを次のように作成できます。

     # aptitude install dpkg-dev
     # cd /usr/local
     # install -d pool # 真のパッケージはここに置きます
     # install -d dists/unstable/main/binary-i386
     # ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override
     # editor override # prioritysection を調整
     # dpkg-scanpackages pool override /usr/local/ \
        > dists/unstable/main/binary-i386/Packages
     # cat > dists/unstable/main/Release << EOF
     Archive: unstable
     Version: 3.0
     Component: main
     Origin: Local
     Label: Local
     Architecture: i386
     EOF
     # echo "deb file:/usr/local unstable main" \
        >> /etc/apt/sources.list

代わりに、手早いけど汚いローカル deb リポジトリを次のように作れます。

     # aptitude install dpkg-dev
     # mkdir /usr/local/debian
     # mv /some/where/package.deb /usr/local/debian
     # dpkg-scanpackages /usr/local/debian /dev/null | \
       gzip - > /usr/local/debian/Packages.gz
     #  echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list

HTTP や FTP メソッドによりディレクトリへのアクセス手段を供給し、 /etc/apt/sources.list にエントリを追加することにより、 これらのアーカイブへのリモートからのアクセスを可能にします。


6.4.12 alien バイナリパッケージへの変換又はインストール

alien は Red Hat rpm 形式、Stampede slp 形式、Slackware tgz 形式、そして Solaris pkg 形式で供給される バイナリパッケージを Debian deb パッケージ形式に変換することを 可能とします。他の Linux ディストリビューションからのパッケージを システムにインストールしているディストリビューションで使いたい場合、 alien を使って使用中のディストリビューションのパッケージフォーマットに変換し、インストールできます。alien は LSB パッケージもサポートします。


6.4.13 自動でコマンドをインストールする

auto-apt はオンデマンドのパッケージインストールツールです。

     $ sudo auto-apt update
      ... データベースを更新
     $ auto-apt -x -y run
     Entering auto-apt mode: /bin/bash
     Exit the command to leave auto-apt mode.
     $ less /usr/share/doc/med-bio/copyright # 存在しないファイルにアクセスする
      ...  このファイルを供給するパッケージをインストールする
      ... 依存するパッケージもインストールする

6.4.14 インストールされたパッケージファイルを検証する

debsums は MD5 チェックサムを用いてインストールされたパッケージファイルの検証ができます。いくつかのパッケージは MD5 チェックサムを得られません。 システム管理者が可能な一時的な修正はこのようなものです。

     # cat >>/etc/apt/apt.conf.d/90debsums
     DPkg::Post-Install-Pkgs {"xargs /usr/bin/debsums -sg";};
     ^D

Joerg Wendland joergland@debian.org からのメールによる (未検証)。


6.4.15 最適化された sources.list

簡単に言うと、最適化された sources.list を作成するための手の込んだ努力は USA に住んでいる私にとってはあまり効果を生みませんでした。 私は apt-setup を使って近くのサイトを手動で選びました。

apt-spy はレイテンシとバンド幅に基づいて自動で sources.list を作成します。 netselect-apt はより完全な sources.list を作成しますが、最適なミラーサイト を選択する、より優れた方法 (ping 時間の比較) を使用しています。

     # aptitude install apt-spy
     # cd /etc/apt ; mv sources.list sources.list.org
     # apt-spy -d testing -l sources.apt

6.5 他の Debian 独特な点


6.5.1 dpkg-divert コマンド

Diversions というファイルにより、dpkg は ファイルをインストールする時に本来意図していた場所ではなく、 退避した 場所にインストールするようになります。 Diversions は Debian パッケージスクリプトで衝突が起こりうる ファイルを移動させるために使うことができます。システム管理者はパッケー ジ の設定ファイルや他のファイルを (conffiles としてマーク されていなければ) dpkg が新しいバージョンのパッケージを インストールする時にそれらのファイルを上書きしてしまわないようにするために diversion を使うことができます。 (ローカル設定の保存, 第 2.2.4 節) 参照.

     # dpkg-divert [--add]  filename # "diversion" を追加
     # dpkg-divert --remove filename # "diversion" を削除

本当に必要でない限り、dpkg-divert を使わない方が 通常は良いでしょう。


6.5.2 equivs パッケージ

ソースからプログラムをコンパイルした場合、最も良いのは本当のローカルな debian 化したパッケージ (.deb) にすることです。 equivs を最後の手段として使います。

     Package: equivs
     Priority: extra
     Section: admin
     Description: Debian パッケージの依存関係を偽るためのパッケージ
      これはダミーパッケージで、依存情報だけを含んだ Debian パッケージの
      作成に使用することができます。

6.5.3 Alternative コマンド

vi コマンドが vim を起動するようにするには、 update-alternatives を使います。

     # update-alternatives --display vi
     ...
     # update-alternatives --config vi
       Selection    Command
     -----------------------------------------------
           1        /usr/bin/elvis-tiny
           2        /usr/bin/vim
     *+    3        /usr/bin/nvi
     
     default[*] を保つために Enter を打つか、selection 番号 2 をタイプしましょう。

Debian alternatives システムのアイテムは /etc/alternatives/ に シンボリックリンクとして保持されています。

好みの X Window 環境を設定するには、update-alternatives/usr/bin/x-session-manager/usr/bin/x-window-manager に適用します。 詳細は、X セッションのカスタマイズ, 第 9.4.5.1 節 を参照。

/bin/sh/bin/bash 又は /bin/dash の直接のシンボリックリンクです。 古い Bashism で汚染されたスクリプトとの互換性のため、 /bin/bash を使う方が安全ですが、POSIX 互換性を強制するには、/bin/dash を使うのがより良い訓練となります。 2.4 Linux kernel にアップグレードすると、/bin/sh/bin/dash にセットしがちです。


6.5.4 ランレベルの使い方

インストール直後は、ほとんどの Debian パッケージはサービスを ランレベル 2 から 5 まで起動するように設定します。 これゆえに、カスタマイズされていない Debian システムではランレベル 2, 3, 4, と 5 には何の違いがありません。Debian はローカルの管理者に任せています。 ランレベルのカスタマイズ, 第 2.4.3 節 に記述しているようにランレベルをカスタマイズすることを ローカルの管理者に任せています。 これは他の有名な GNU/Linux ディストリビューションにより用いられている ランレベルの方法とは異なります。 ブートシーケンスの終わりで X ディスプレイマネージャが起動されないように ランレベル 2 で xdmgdm を無効にしたい時が 来るかもしれません。 その時はランレベル 3 から起動するように変更できます。 ランレベルについてのより詳しい情報は ランレベル, 第 2.4.2 節 をご覧下さい。


6.5.5 デーモンサービスを無効にする

Debian 開発者はシステムのセキュリティを深刻にとらえています。 多くのデーモンサービスは最小のサービスと機能を有効にして インストールされます。

デーモンサービス (Exim, DHCP など) に疑いを持った場合、 ps aux を起動するか、/etc/init.d/*/etc/inetd.conf の内容を調べましょう。 また、/etc/hosts.deny ( PAM を用いたログイン制限, 第 9.2.1 節 参照 )も調べましょう。 pidof コマンドも役立ちます。 (pidof(8) 参照)

最近の Debian において、標準では X11 は TCP/IP 経由の遠隔接続を 許可していません。 TCP/IP 越しに X を使う, 第 9.4.6 節 参照 SSH での X フォワードも無効にされています。 リモートの X サーバに接続する – ssh, 第 9.4.8 節 参照


[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 次のページ ]

Debian リファレンス

CVS, 2005年 4月 3日 月曜日 22時59分00秒 UTC時間

Osamu Aoki (青木 修) osamu@debian.org
翻訳: 角田 慎一 tsuno@ngy.1st.ne.jp
著者, 第 A.1 節