Debian のレポジトリーへのネットワーク負荷を低減するために、 APT
を通してパッケージをダウンロードする際には、必要に応じて
http_proxy 環境変数を設定するか、/etc/apt/apt.conf
の中の http の値を設定し、squid
を使ったローカルの
http プロキシをセットアップするようにしたい。
これはネットワークアップグレードのパフォーマンスを非常に向上させる。 この効果は
LAN上に複数の Debian ボックスがある際に更に顕著である。
apt_preferences(5)
に記載された pin
機能は非常に強力であるが、依存性のために他の基本的なプログラムパッケージの新しいバージョン引き込みやすいと言うことがあるので全ての依存性の問題を解決するわけではない。
chroot 手法は、 システムの安定性と最新ソフトウエアバージョンアクセスの両方を確保できるので望ましい手法である。
本章は Woody システムに準拠しているが、(apt_preferences(5)
と
/etc/apt/preferences
に関連したトピックスを除くと)ほとんどの情報は
Potato システムにも当てはまる。
もし全てのデベロッパー向けのドキュメンテーションを読むのが辛いなら、本章をまず読み Debian の testing や unstable を含めた全パワーを楽しんでください:-)
dselect – メニュー式パッケージ管理ツール (トップレベル) dpkg – パッケージをインストール (パッケージファイル中心) apt-get – パッケージをインストール (パッケージアーカイブ中心、CLI APT) tasksel – タスクをインストール (一連のパッケージ) aptitude – パッケージをインストール (パッケージとタスク, ncurses APT) deity – また別の ncurses APT ツール synaptic, gsynaptic – また別の GUI APT ツール
これらは同レベルのツールではありません。 dselect
は APT
(そのコマンドラインコマンドは apt-get
) や dpkg
の上で走っています。
APT は 取得可能なパッケージを追跡するために /var/lib/apt/lists/*
を使いますが、 dpkg
は /var/lib/dpkg/available
を使います。 apt-get
又は aptitude
などの同様のプログラムを
使って直接パッケージをインストールした場合、dselect select,
tasksel や dpkg -l を起動する前に
dselect
の [U]pdate 選択メニュから
/var/lib/dpkg/available
を更新するか、シェルコマンド
"dselect update" を確実に実行してください。
パッケージの依存性に従い、apt-get
は自動的に
depends
するパッケージを引っ張ってきますが、recommends や
suggests するパッケージはそのままにします。一方、
dselect
はこれらのパッケージの選択に対するメニュドリブンな制御
を提供し、depends、 recommends および
suggests に基づくパッケージ選択を促します。
aptitude
は depends, recommends
および suggests に基づいて
自動的に全パッケージを引っ張って来るオプションを提供します。
apt-cache - ローカルキャッシュにあるパッケージアーカイブをチェックする dpkg-reconfigure - 既にインストールしたパッケージを再設定する (debconf を使っている場合) dpkg-source - source パッケージファイルを管理 dpkg-buildpackage - パッケージファイルの構築の自動化 ...
task と呼ばれるパッケージ群をインストールすることが可能ですし、 パッケージそれぞれをインストールしたり、下で述べるパッケージ管理ツール を用いてシステムを更新することもできます。
tasksel
又は aptitude
を用いて task をインストール
tasksel
は Debian Task インストーラ であり、
システムのインストール中に "シンプル" なオプションとして
提供されます。
複数のパッケージが要求する共通の機能をインストールする必要が ある場合、これが最良の方法です。コマンドを次のように確実に実行してください:
# dselect update # tasksel
aptitude
も task へのアクセス手段を提供します。
task の選択ができるだけでなく、メニューを通じて task
内のパッケージをそれぞれ選択/除外できます。
ここに挙げる混在環境を追いかけようとする場合、パッケージの依存性の 衝突に出くわすかもしれません。flavor を混在させるのは良い考えでは ありません。次に挙げる方法はいくらかのリスクを喜んで許容する人の ための方法です。
testing を追いかけている間にパッケージを選択して更新する場合、
(Woody 以降の) APT システムを apt_preferences(5)
機能を用いるために Woody 版の APT
への移行, 第 2.1 節 としてセットアップする 必要があります。
まず、 stable, testing ならびに unstable
用のソースを /etc/apt/sources.list
に追加します。
そして、/etc/apt/preferences
を編集して、適切な Pin-Priority
を設定します。 [1]
Package: * Pin: release a=stable Pin-Priority: 500 Package: * Pin: release a=testing Pin-Priority: 600 Package: * Pin: release a=unstable Pin-Priority: 50
dselect
dselect
を起動すると、自動的に "Required",
"Important" および "Standard"
パッケージの全てを選択します。 Potato システムでは、 teTeX や Emacs
のような巨大なプログラムもこれらのカテゴリに所属
していたため、最初のインストールではこれらのインストールを ('_'
をタイプすることにより) 手動で解除するのがベストでした。 Woody では、これらは
"Optional" パッケージカテゴリに移動しました。
dselect
はいくらか奇妙なユーザインターフェースを持ちます。
4個のあいまいなコマンドがあります。 (Capital means CAPITAL!):
キーストローク アクション Q 終了。現在の選択を認め、とにかく終了する。 (依存性を上書きする) R 戻る! 悪気はありません。 D しまった! dselect が考えていることは分かりません。 U 全てを推奨される状態にセットする。
D や Q により、リスクを負って衝突した選択を
選ぶことができます。これらのコマンドを注意深く扱ってください。
現在は、dselect
は suggests や
recommends の選択を通じたきめの細かい依存性制御を
提供する、熟成したメニュドリブンなツールです。
雑音を減らすために、 "expert" オプションを含む行を
/etc/dpkg/dselect.cfg
に追加してください。
低速なマシンでは、パッケージを検索するためには他の高速なマシンで
dselect
を走らせたり、パッケージのインストールのために
apt-get installを使うと良いかもしれません。
dselect
は Pin-Priority により選択されないパッケージへの
アクセス手段は提供しません。
aptitude
aptitude
は dselect
に似たメニュドリブンな新しい
パッケージインストーラです。apt-get
の代わりのコマンドライン
コマンドとしても使えます。 aptitude(1)
をご覧ください。
aptitude
は通常小文字の一文字のキーコマンドを受け付けます。
キーストローク アクション F10 メニュ ? キーストロークヘルプを表示 u パッケージアーカイブ情報を更新 g 選択パッケージのダウンロードおよびインストール q 現在のスクリーンを終了し、変更点を保存する x 現在のスクリーンを終了し、変更点を無視する Enter パッケージの情報を閲覧
aptitude
は depends, recommends
および suggests に基づいて必要な全パッケージを自動的に
引っ張ってくるオプションを提供します。 メニュの F10 -> Options ->
Dependency handling を選択 することにより、この挙動を変更できます。
aptitude
はパッケージの全バージョンへのアクセス手段を提供します。
apt-cache
およびapt-get
コマンド上の例で記述しているように testing を追いかけていると、 次のようなコマンドを用いてシステムを管理できます:
これは testing ディストリビューションを追いかけ、システムの 全パッケージを更新し、testing から依存する物をインストール します。
これは testing ディストリビューションを追いかけ、 システムの全パッケージを更新しますが、testing からインストール し、依存性を解決します。
これは testing ディストリビューションを追いかけ、システムの
全パッケージを dselect
の選択に従って更新します。
これは package とこのパッケージに依存するものを testing ディストリビューションからインストールします。
これは unstable ディストリビューションから package をインストールしますが、testing ディストリビューションから 、このパッケージに依存するパッケージをインストールします。
これは unstable ディストリビューションから package をインストールしますが、unstable の Pin-Priority を 990 に 設定することにより、unstable ディストリビューションから このパッケージに依存するパッケージもインストールします。
これは foo bar ... パッケージのステータスをチェックします。
これは foo bar ... パッケージの情報をチェックします。
これは foo パッケージの特定のバージョン 2.2.4-1 をインストールします。
これは foo パッケージをインストールし、bar パッケージを削除します。
これは bar パッケージを削除しますが、カスタマイズした 設定ファイルをそのままに保ちます。
これは bar パッケージと共に、カスタマイズした設定ファイルも 削除します。
上の例では、-u オプションにより、apt-get
が
アップグレードする予定のパッケージを表示し、実行に移る前にユーザに通知します。
次のコマンドは -u オプションを標準の動作に設定します:
$ cat >> /etc/apt/apt.conf << . // 更新するパッケージを常に表示する (-u) APT::Get::Show-Upgraded "true"; .
実際に更新せずに更新をシミュレートするためには、 -s オプションを 使ってください。
Debian のどの flavor を追いかけるかによって、要求に合うように APT システムのセットアップ, 第 3.2.2 節 の
/etc/apt/preference
を変更できます:
stable を追いかける: testing の Pin-Priority を 50 に変更 testing を追いかける: 上記設定を保持 testing(unstable) を追いかける: unstable の Pin-Priority を 500 に変更 unstable(testing) を追いかける: unstable の Pin-Priority を 800 に変更
A guideline for the choice of Pin-Priority is to move from the top to bottom in the above table as the time moves from a time immediately after a distribution release to a time of freeze for the next release.
注意: Debian の testing flavor を追いかけることには、 セキュリティ修正が非常に遅いという副作用があります。
Debian の flavor を混在させている場合、stable に testing または unstable を混ぜると、 testing または unstable から意図せずに主要なパッケージを バグを持っている可能性があるにもかかわらず引っ張ってくることが良くあります。 ですから警告しておきます。
必須ではないパッケージは熟成されていないバージョンを追いかけるけれど、
いくつかの主要なパッケージは熟成されたバージョンを保持するための
/etc/apt/preferences
の例は examples
subdirectory
に preferences.testing
や
preferences.unstable
として得られます。
一方、preferences.stable
は全パッケージを stable
にダウングレードさせます。
全パッケージを stable にダウングレードするには、
/etc/apt/preferences
を次のように編集します:
Package: * Pin: release a=stable Pin-Priority: 1001
そして "apt-get upgrade" を実行し、Pin-Priority > 1000 に従いダウングレードを強行します。ささいな依存性に関する異常が生じる かもしれないことを警告しておきます。
/etc/apt/preferences
の概観
APT システムのセットアップ, 第 3.2.2 節 に示した
/etc/apt/preferences
の例では、 最初の行の "Package: *"
は本セクションが全パッケージに適用されることを 意味しています。あるパッケージに
Pin-Priority を指定するため、 "*"
の代わりにパッケージ名を使いたいかもしれません。
次の行の "Pin: release a=stable" は apt-get
が
"Archive: stable" 行を持つ Release
ファイルを含む
アーカイブから Packages.gz
を取得することを意味しています。
最後の行の "Pin-Priority: 500" は Pin-Priority を 500 に指定しています。
同じ名前のパッケージが複数ある場合は、通常最大の Pin-Priority 値を持つ パッケージがインストールされます。
ここに、Pin-Priority の意味を示します:
この範囲の Pin-Priority ではパッケージのダウンロードが許されます。
パッケージのダウングレードが許されません。いくつかの主要な Pin-Priority 値 を示します:
apt-get(8)
オプションの
-t によりセットされる優先度。
--target-release と同じ効果が /etc/apt/apt.conf
に次のような設定を行うことにより得られます:
# echo 'APT::Default-Release "testing";' >> /etc/apt/apt.conf
コマンドラインオプション --target-release と
/etc/apt/apt.conf
の設定は /etc/apt/preferences
の設定に優先します。/etc/apt/preferences
で遊ぶ場合は
この干渉に注意してください。
本章の知識により、永遠の upgrade 生活をすごせます。 :)
特定のパッケージに関する問題に直面している場合、助けを求めたり、
バグレポートを出す前にこれらのサイトをチェックしましょう。 (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 システムの更新, 第 2.3 節 に記述したように unstable 又は testing にアップグレードする場合に 発生する可能性があります。 ほとんどの場合、これはアップグレードされるパッケージが新たに解決されない 依存性の問題を持つためです。
# apt-get dist-upgrade
これが動かない場合、もんだ意が解決するまで次のコマンドを繰り返し実行してください:
# apt-get upgrade -f # エラーが起きても upgradeを続ける ... 又は # apt-get dist-upgrade -f # エラーが起きても dist-upgrade を続ける
時々本当に壊れたアップグレードスクリプトにより持続的な問題を起こすことがあります。この種の状況を解決するには、/var/lib/dpkg/info/packagename.{post,pre}{inst,rm}
スクリプトを調べ、次を実行するのがよいでしょう:
# dpkg --configure -a # 部分的にインストールされたパッケージを全て設定
スクリプトに設定ファイルが無いと言っている場合、対応する設定ファイルに対して
/etc/
を調べてください。.new (又は同種の) 拡張子
を持つファイルが存在する場合、名前を変更して拡張子を削除してください。
パッケージの依存性問題は unstable 又は testing に インストールする場合に発生する場合があります。依存性を迂回する手段があります。
# apt-get install -f package # 壊れた依存性を上書きする
これらの状況を修正するための代替手段として、equivs
パッケージを使えます。 /usr/share/doc/equivs/README.Debian
をご覧ください。
dpkg
を用いたレスキュー
dselect
(APT) のクラッシュから、本当に壊れたシステム上で APT
を用いずに dpkg
だけを用いてアドホックに回復できます:
# cd /var/cache/apt/archives # dpkg -i libc6* libdb2* perl* # dpkg -i apt* dpkg* debconf* # dpkg -i * # エラーが起きなくなるまで実行
パッケージが無い場合、次のコマンドを用いて mirror sites
から取得してください:
# mc # "FTP link" を Debian FTP サーバに向けて使用
最近、HTTP/FTP サーバ上の実際のパッケージは古典的な /dist
に置かれず、/pool/
ディレクトリに置かれています。
そして、次のようにインストールしてください:
# dpkg -i /var/cache/apt/archives/packagefile.deb
依存性が壊れている場合、修正するか、次のコマンドを使用してください:
# dpkg --ignore-depends=package1,... -i packagefile.deb # dpkg --force-depends -i packagefile.deb # dpkg --force-depends --purge package # dpkg --force-confmiss -i packagefile.deb # 失った conffile をインストールする
/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 # システムを再インストールし、必要ない物を除外する
/var
のクラッシュ後のシステム回復
/var
ディレクトリはメールなどの定期的に更新されるデータを
含むので、汚染されやすくなっています。このディレクトリを別のパーティションに
分けることにより、リスクを限定できます。故障が発生した場合、 /var
ディレクトリを再構築して Debian システムを回復 する必要があるかもしれません。
最小限 Debian が機能する /var
ディレクトリの基幹部分を同一又は古い
Debian バージョンから、例えば
などを取得し、壊れたシステムの root ディレクトリに置きます。そして
var.tar.gz
# cd / # mv var var-old # 役に立つ内容が残っている場合 # tar xvzf var.tar.gz # Woody の基幹ファイルを使用 # aptitude # 又は dselect
を実行します。これによりシステムが機能するようになるはずです。 パッケージ選択データの回復, 第 3.3.4 節 に記述している技術を用いてパッケージ選択データ の回復をはかどらせることができます。 ([FIXME]: 本手順はさらなる検証が必要。)
Debian レスキューフロッピ/CD 又は マルチブート Linux システム上の別の
パーティションを用いて Linux をブートしてください。 ブート不可能なシステムを
/target
にマウントし、dpkg
の chroot install mode
を使用します。
# dpkg --root /target -i packagefile.deb
そして設定を行い、問題を修正します。
ところで、lilo
が壊れてブート不能になった場合、標準の Debian
レスキューディスクを用いてブートできます。 Linux をインストールしてある root
パーティションを /dev/hda12
と仮定し、ランレベル 3
で起動したいとすると、lilo のプロンプトで次を 入力してください:
boot: rescue root=/dev/hda12 3
そしてフロッピディスク上の kernel を用いてほぼ完全に機能するシステムに ブートできました。(kernel の機能やモジュールがないことによる些細な不都合が 存在するかもしれません。)
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 としても使われます。
これらのコマンドを 愉しむ と、永遠のアップグレード地獄から救い出し、Debian の 涅槃 に導くことができます。:)
あるファイルがどのパッケージに所属するかを見つけるには:
$ dpkg {-S|--search} pattern # インストール済みパッケージにパターン検索 $ zgrep -e pattern /local/copy/of/debian/woody/Contents-i386.gz # debian アーカイブでファイル名パターン検索
又は特別なパッケージコマンドを使います:
# apt-get install dlocate # slocate (locate の安全版と衝突する) $ dlocate filename # dpkg -L と dpkg -S の高速な代替品 ... # apt-get install auto-apt # オンデマンドのパッケージインストールツール # auto-apt update # autp-apt 用の db ファイルを作成 $ auto-apt search pattern # インストールされているかに係わらず、全パッケージをパターン検索
パッケージアーカイブから情報を検索し、表示します。/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 # マッチした source パッケージの説明を表示 $ 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*
キーボードに触らずにインストールするには、次の行を
/etc/apt/apt.conf
に追加してください:
Dpkg::Options {"--force-confold";}
これは apt-get -q -y packagename
を起動するのと同じことです。これは全プロンプトについて自動的に "yes"
で答えるので、問題が発生するかもしれません。ゆえに慎重にこのトリックを使ってください。
apt.conf(5)
および dpkg(1)
をご覧ください。
インストール済みパッケージの再設定, 第 3.4.4 節 に従い、特定のパッケージを後で設定することもできます。
Use the following to reconfigure any already-installed package. 次のコマンドを使ってインストール済みパッケージの再設定を行います。
# dpkg-reconfigure --priority=medium package [...] # dpkg-reconfigure --all # 全パッケージの再設定 # dpkg-reconfigure locales # 特別な locale の生成 # dpkg-reconfigure --p=low xserver-xfree86 # X サーバの再設定
debconf
ダイアログモードが永続的に必要な場合は、
debconf
を再設定してください。
特別な設定スクリプトを持つプログラムがいくつかあります。 [2]
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 システム ...
設定ファイルを維持したままパッケージを削除:
# apt-get remove package ... # dpkg --remove package ...
設定ファイルを含め、パッケージを削除:
# apt-get remove --purge package ... # dpkg --purge package ...
例えば、libc6
と libc6-dev
を dselect
および apt-get -u upgrade package
に対してホールドするには、次を実行します:
# echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections
apt-get -u install package はこの "hold"
により隠されません。 apt-get -u upgrade package 又は
apt-get -u dist-upgrade
に対する自動ダウングレードの強行からパッケージをホールドするには、
/etc/apt/preferences
に次の行を追加してください:
Package: libc6 Pin: release a=stable Pin-Priority: 2000
ここで、 "Package:" エントリは
"libc6*"
のようなエントリを使えません。glibc
source
パッケージに同期したバージョンの全バイナリパッケージを保持する必要がある場合、それらのパッケージを明示的に挙げる必要があります。
次のコマンドによりホールドされたパッケージをリストできます:
dpkg --get-selections "*"|grep -e "hold$"
apt-show-versions
により、インストール済みパッケージのバージョン/flavor をリスト化できます。
$ apt-show-versions | fgrep /testing | wc ... testing からのパッケージ数をカウント $ apt-show-versions -u ... アップグレード可能なパッケージ数 $ apt-get install `apt-show-versions -u -b | fgrep /unstable` ... 全ての unstable パッケージを最新バージョンにアップグレード
APT でパッケージをインストールすると、キャッシュされたパッケージファイルが
/var/cache/apt/archives
に残されるので、これらを消す必要が
あります。
# apt-get autoclean # 必要ないパッケージファイルのみ削除 # apt-get clean # キャッシュされたパッケージファイル全てを削除
パッケージ選択ステータスのローカルコピーを取るには、次を実行します:
$ dpkg --get-selections "*" >myselections # 又は \* を使用
"*" により、myselections が "purge" 用の パッケージエントリにも含まれるようになります。
このファイルを他のコンピュータに転送し、これを使ってインストールできます:
# dselect update # dpkg --set-selections <myselections # apt-get -u dselect-upgrade # 又は dselect install
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
は一行としてください。
そしてソースを取得し、ローカルパッケージを作成します:
$ 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個のパッケージは、パッケージの依存性を
満たすためにインストールする必要があります。debsign
は
devscripts
パッケージにあります。auto-apt
を使うと、依存性を簡単に満足させられるかもしれません。fakeroot
を使うと、root アカウントの不必要な使用を避けられます。
Woody では、依存性の問題は単純にできます。例えば、 ソースのみの
pine
パッケージをコンパイルするには、
# apt-get build-dep pine # apt-get source -b pine
だけです。
APT 並びに dselect
システムとの互換性を持つローカルパッケージの
アーカイブを作成するには、Packages
を作成し、
特定のディレクトリツリーに置く必要があります。
公式の Debian アーカイブと同様のローカル deb リポジトリは次のように 作成できます:
# apt-get 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 # priority と section を調整 # 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 リポジトリは次のように作れます:
# apt-get 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
にエントリを追加することにより、
これらのアーカイブへのリモートからのアクセスを可能にします。
alien
はRed Hat rpm 形式、Stampede slp
形式、Slackware tgz 形式、そして Solaris pkg
形式で供給される バイナリパッケージを Debian deb
パッケージ形式に変換することを 可能とします。他の Linux
ディストリビューションからのパッケージを
システムにインストールしているディストリビューションで使いたい場合、
alien
を使って使用中のディストリビューションのパッケージフォーマットに変換し、インストールできます。alien
は LSB パッケージもサポートします。
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
からのメールによる。 (未検証).
dpkg-divert
コマンド
Diversions というファイルにより、dpkg
は
ファイルをインストールする時に本来意図していた場所ではなく、
退避した 場所にインストールするようになる。
Diversions は Debian パッケージスクリプトで衝突がおこりうる
ファイルを移動させるために使うことができる。システム管理者はパッケー ジ
の設定ファイルや他のファイルを (conffiles としてマーク
されていなければ) dpkg
が新しいバージョンのパッケージを
インストールする時にそれらのファイルを上書きしてしまわないようにするために
diversion を使うことができる。 .
# dpkg-divert [--add] filename # "diversion" を追加 # dpkg-divert --remove filename # "diversion" を削除
本当に必要でない限り、dpkg-divert
を使わない方が
通常は良いでしょう。
equivs
パッケージソースからプログラムをコンパイルした場合、最も良いのは本当のローカルな debian 化したパッケージ (.deb) にすることです。 equivs を最後の手段として使います。
Package: equivs Priority: extra Section: admin Description: Debian パッケージの依存関係を偽るためのパッケージ これはダミーパッケージで、依存情報だけを含んだ Debian パッケージの 作成に使用することができます。
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
に適用します。
/bin/sh
は /bin/bash
又は /bin/dash
の直接のシンボリックリンクです。 古い Bashism
で汚染されたスクリプトとの互換性のため、 /bin/bash
を使う方が安全ですが、POSIX 互換性を強制するには、/bin/dash
を使うのがより良い訓練となります。 2.4 Linux kernel
にアップグレードすると、/bin/sh
を /bin/dash
にセットしがちです。
init
およびランレベル
ブートする標準のランレベルは /etc/inittab
で設定できます。
他のディストリビューションと違い、Debian
はランレベル管理を完全にシステム管理者の責任にしています。System-V スタイルの
init
の Debian 上での 管理は update-rc.d
スクリプトにより行われることを意図しています。
ランレベル 1,2,3 で /etc/init.d/name
を起動し、
ランレベル 4,5 で停止し、優先度番号 20 (通常) を振るには、次のようにします:
# update-rc.d name start 20 1 2 3 . stop 20 4 5 .
init.d
にまだあるスクリプトのシンボリックリンクを削除するには、
次のようにします:
# update-rc.d -f name remove
ランレベルの編集には、私はずるをします。mc
のシェルプロンプトで
Alt-Enter を使ってリンクエントリをコピーしながら、mv
コマンドを
使って手動でエントリを編集します。例えば:
# mv S99xdm K99xdm # xdm (X display manager) を無効にする
クイックハックとして、init.d
スクリプトの先頭に exit
0 を挿入することによりデーモンを無効にさえします。 これらは結局のところ
conffile です。
Debian ディストリビューションはシステムのセキュリティを厳しくし、 システム管理者が有能であることを期待しています。それゆえ、 時々、使いかたを簡単にするとは二次的的な問題とみなされ、多くのデーモン サービスは最高のセキュリティレベルとされ、標準のインストール状態として 使用可能なサービスが少ない (又は全く無い) 状態となっています。
デーモンサービス (Exim, DHCP など) に疑いを持った場合、 ps aux
を起動するか、/etc/init.d/*
や /etc/inetd.conf
の内容を調べましょう。 また、/etc/hosts.deny
も調べましょう。
pidof
コマンドも役立ちます。 (pidof(8)
参照)
最近の Debian において、標準では X11 は TCP/IP 経由の遠隔接続を 許可していません。 SSH での X フォワードも無効にされています。
Debian クイックレファレンス
1.07-2, 2004年 4月 11日 日曜日 08時00分07秒 UTC時間osamu@debian.org
tsuno@ngy.1st.ne.jp