Portage ユーザガイド
1.
はじめに
最新Portage の取得
Gentoo Linux をインストールし、少しの間使用していると、いくつかのパッケージにいくつかのバグあるいは、
おかしな動作を見つけるかもしれません。また最新の Gentoo Linux ソフトウェアパッケージをインストールしたり、
現在インストールされているパッケージを更新したりしたいでしょう。
最新の Portage ツリーを得るために使用することが可能なanonymous rsync サーバを提供しています。ここでは、その使用方法を述べます。
Portageツリーを同期させるために次のコメンドを使用してください。
Code Listing 1.1: Getting portage up to date |
# emerge sync
|
emerge syncは自動的に--cleanオプションを設定します。
これは、/usr/portage ツリー のあなたの個人的な変更や追加を削除してしまいます。
もしあなたが作成したebuildをメインPortage ツリーと別に管理したいのなら、PORTDIR_OVERLAY機能を使用してください。
Code Listing 1.2: Using PORTDIR_OVERLAY |
PORTDIR_OVERLAY="/dir/where/your/ebuilds/are"
|
もしあなたがたくさんのebuildの修正や、bugの修正をし、Gentoo Linux Development Teamの一員になりたいと考えているなら、
Daniel Robbinsか
Seemant Kulleen に連絡して、情報を得てください。
Portage の更新
Portage ツリーを使う前に、Portage を更新することは重要です。更新をするためには、
下記を実行してください。
Code Listing 1.3: Updating Portage |
# emerge -up system
# emerge -u system
|
これで portage の最新のバージョンを使うでしょう。
そして、インストールされたソフトウェアを更新するために、ebuild システムを使用しはじめることができます。
2.
emerge の導入
emerge --pretend
パッケージをインストールする前に、何が依存によってインストールされるか、
どのパッケージがアップーデートされるかを知っておくのは良い考えです。emerge --pretend またはemerge -p でこのことができます。
Code Listing 2.1: Using emerge -p |
# emerge -p xchat
These are the packages that I would emerge, in order.
Calculating dependencies......... done!
[ebuild U] sys-libs/zlib-1.1.3-r2 to /
[ebuild U] dev-libs/glib-1.2.10 to /
[ebuild N ] media-libs/jpeg-6b-r2 to /
[ebuild N ] x11-base/xfree-4.0.3-r3 to /
[ebuild N ] x11-libs/gtk+-1.2.10-r1 to /
[ebuild N ] media-libs/giflib-4.1.0-r3 to /
[ebuild N ] media-libs/tiff-3.5.6_beta to /
[ebuild N ] media-libs/imlib-1.9.10 to /
[ebuild N ] net-irc/xchat-1.4.3 to /
|
特にこの場合、X がインストールされていないマシン上で xchatをemergeすることを想定しています。
このように、emerge --pretend は最初に指定されたパッケージを満足するために、
いくつかの依存するパッケージが必要であることを正確に確認します。
特に、sys-libs/zlib と dev-libs/glib は更新される必要があります。
そしてその後の一連の ebuild (もちろん、x11-base/xfree を含む) は、
emerge される必要があります。
USE 環境変数と emerge
上記では、/etc/make.conf 内の USE 変数に gnome
は定義されていないシステム上で emerge --pretend を実行しました。
これは、オプションの GNOME サポートが、その場合、有効にならないことを意味します。
しかしながら、xchat はオプションの GNOME サポートを持っています。
したがって、/etc/make.conf 内の USE 環境変数に gnome を追加した後の
emerge --pretend の出力を見てみましょう。
Code Listing 2.2: Using emerge with USE variables |
# emerge -p xchat
These are the packages that I would emerge, in order.
Calculating dependencies............................ done!
[ebuild N ] media-libs/jpeg-6b-r2 to /
[ebuild N ] gnome-base/libghttp-1.0.9 to /
[ebuild N ] media-libs/audiofile-0.2.1 to /
[ebuild N ] media-sound/esound-0.2.22-r2 to /
[ebuild N ] gnome-base/gnome-env-1.0 to /
[ebuild N ] gnome-base/libxml-1.8.11 to /
[ebuild N ] gnome-base/ORBit-0.5.8 to /
[ebuild N ] gnome-base/oaf-0.6.5 to /
[ebuild U] dev-libs/glib-1.2.10 to /
[ebuild N ] net-libs/libwww-5.3.2-r1 to /
[ebuild N ] media-libs/giflib-4.1.0-r3 to /
[ebuild N ] dev-util/guile-1.4-r3 to /
[ebuild U] sys-libs/zlib-1.1.3-r2 to /
[ebuild N ] x11-base/xfree-4.0.3-r3 to /
[ebuild N ] x11-libs/gtk+-1.2.10-r1 to /
[ebuild N ] media-libs/tiff-3.5.6_beta to /
[ebuild N ] media-libs/imlib-1.9.10 to /
[ebuild N ] gnome-base/gnome-libs-1.2.13 to /
[ebuild N ] gnome-base/glibwww-0.2-r1 to /
[ebuild N ] gnome-base/gdk-pixbuf-0.11.0 to /
[ebuild N ] gnome-base/gconf-1.0.0 to /
[ebuild N ] gnome-base/gnome-vfs-1.0.1 to /
[ebuild N ] gnome-base/control-center-1.4.0.1 to /
[ebuild N ] gnome-base/scrollkeeper-0.2 to /
[ebuild N ] dev-util/xml-i18n-tools-0.8.1 to /
[ebuild N ] gnome-base/libglade-0.16-r1 to /
[ebuild N ] gnome-base/gnome-core-1.4.0.4 to /
[ebuild N ] net-irc/xchat-1.4.3 to /
|
見ての通り、USE 変数に gnome を追加することで、
emerge はxchat がオプションの GNOME サポートを含めるべきであることを認識します。
もちろん、このオプションの GNOME サポートが、正確にコンパイルかつ実行されるために、
GNOME が最初にインストールされます。emerge はこの全ての出力を表示し、
emerge されるべき ebuild のリストへ GNOME によって必要とされる様々なパッケージを追加します。
USE 変数は、正確に設定されない場合があり、
これは様々なオプションの拡張のためのサポートを不意に含めたり除いたりということの原因になります。
そのため、実際の emerge を実行する前にemerge --pretend を常に実行するように勧めます。
特に、新しい見慣れないebuild のために。
これであなたが何を期待しているかがわかるでしょう。:)
一旦すべてが OK であると確認できれば、--pretend を取ることにより、
実際の emerge を実行することができます。
Code Listing 2.3: Emerging xchat |
# emerge xchat
|
全ての依存物が emerge された後、(もしそれらがすでに存在する場合、
すべてのパッケージがemergeされるとはかぎりませんが)
xchatソースは
(/usr/portage/distfiles に)ダウンロードされ、検査、展開され、
コンパイル、そして一時的なディレクトリ(sandboxと呼びます)にインストールされます。その後、
ローカルファイルシステムへと emerge されます。
インストールされたファイルと全てのファイルの md5sum を含むパッケージデータベースは、
/var/db/pkg/net-irc/xchat-1.4.3/CONTENTS に作成されます。
あるパッケージでどのUSEフラグが使用できるか、そしてあなたのシステムでどれがオンになっているか知りたい場合には、-cまたは--verbose引数をemerge -pへ加ええます。
Code Listing 2.4: --verboseを使用してのemerge |
# emerge -pv gentoo-sources
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild U ] sys-kernel/gentoo-sources-2.4.20-r5 -build +crypt -evms2
-aavm -usagi
|
変更点を知る
すでにインストールしてあるパッケージのバージョンとPortageに存在するパッケージのバージョンの間の変更点を知りたい場合には、--changelogまたは-l引数を加えます。
Code Listing 2.5: Viewing the ChangeLog |
# emerge -pl mozilla
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild U ] net-www/mozilla-1.3-r1 [1.2.1-r5]
*mozilla-1.3-r1
22 Mar 2003; Martin Schlemmer <azarah@gentoo.org> mozilla-1.3-r1.ebuild :
Add Gtk2 patch. Add default/prefs/xft.js when Xft is enabled. Some other
long overdue cleanups.
*mozilla-1.3
21 Mar 2003; Jay Kwak <jayskwak@gentoo.org> mozilla-1.3.ebuild :
Add XIM input patch for GTK
18 Mar 2003; Martin Schlemmer <azarah@gentoo.org> mozilla-1.3.ebuild :
New version.
13 Mar 2003; Olivier Reisch <doctomoe@gentoo.org> mozilla-1.2.1-r5.ebuild :
Marked ppc stable
*mozilla-1.3_beta
23 Feb 2003; Martin Schlemmer <azarah@gentoo.org> mozilla-1.3_beta.ebuild :
New version.
|
3.
パッケージの更新
標準的なPortageのアップデート方法は、emerge --updateまたはemerge -uです。
Code Listing 3.1: Using emerge -u |
# emerge -u xchat
|
Portage は "safe" unmerge と呼ばれる仕組みを使用します。それは、
単にオリジナルファイルを削除するということです。もしファイルが、
なんらかの方法で上書き、あるいは変更されていたら、ファイルシステム上に残しておきます。
(おそらくは、パッケージのより新しいバージョンをインストールしたのでしょう。)
よって、もし xchat の新しいバージョンを merge した後、
古いバージョンをunmerge したなら、xchat の実行ファイルはファイルシステムから削除されません。
よって、それはより新しいタイムスタンプかつ異なる md5sum を持ちます。
いつでも、アプリケーションのいくつかのバージョンが利用可能であることを保証するので、
safe unmerge は実にすばらしいです。もし、最初に unmerge をしなければならなかったとしたら、
新しいバージョンがダウンロード、コンパイル、インストール、
そして emerge されているしばらくの間、xchat は利用できないでしょう。
Important:
Portage は現在 "config file protection" と呼ばれる特別な機能を持っています。
この機能の目的は、新しいパッケージのインストールによって既に存在する設定ファイル
を壊してしまうことを防ぐことです。デフォルトでは、config file protection は、
/etc と KDE 設定ディレクトリで作動します。今後、もっと追加するかもしれません。
より詳しくは、emerge --help configを入力してください。
|
4.
ブロックされたパッケージの解決方法
現在のところ、インストールされたパッケージが他のパッケージのインストールをブロックすることが時々起こります。
これはあるパッケージの機能が別のパッケージに移動したとき、又は二つのパッケージに互換性が無いときに起こることがあります。
ブロックしているパッケージは、ブロックされているパッケージがemergeされる前に、取り除かれる必要があります。
Code Listing 4.1: ブロックされたパッケージのemerge |
# emerge -pv libbonobo
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[blocks B ] gnome-base/bonobo-activation (from pkg gnome-base/libbonobo-2.4.0)
[ebuild U ] gnome-base/ORBit2-2.8.1 [2.6.3] -doc +ssl
[ebuild U ] gnome-base/libbonobo-2.4.0 [2.2.3] -doc
|
上記は、bonobo-activationパッケージがlibbonobo-2.4.0をブロックしている例です。
Code Listing 4.2: ブロックしているパッケージをシステムから取り除く |
# emerge -C bonobo-activation
# emerge libbonobo
|
Removing bonobo-activation from the system will allow
libbonobo-2.4.0 to emerge succesfully.
システムからbonobo-activationを取り除くと、libbonobo-2.4.0をemergeすることができるようになります。
Important:
unmerge(emerge -C)の実行は、たとえ他のパッケージの依存関係が存在していてもパッケージを取り除きますので、システムを壊してしまう可能性があります。
|
5.
Portageの動作をコントロールする
Portageの動作を変えたい場合には、/etc/make.confを編集します。
このファイルはPortageの動作を変更するために定義する変数(と、変数と値のサンプル)が含まれています。
たとえば、ソースコードのダウンロード方法を変更したい場合には、FETCHCOMMANDを必要に応じて変更します。
/etc/make.confには、定義の仕方を学ぶことができるたくさんのサンプルの変数が含まれています。
また、make.confmanページ(man make.conf)を見たり、もっと奥深くまでPortageを知りたければ、
Portage Manual
(日本語訳)を読みましょう。
もし一回限りの変更が必要な場合には、/etc/make.confを2回編集する代わりに環境変数としてセットすることができます。
たとえば、AUTOCLEAN="no" emerge kdeはemerge kdeの間だけ、autocleaningを行ないません。
6.
マスクされたパッケージとはなんですか?
多くの人達が、なぜemerge -u worldしたときに新しいパッケージが含まれないのだろうと不思議に思います。
良い例はxfree-4.3.0(執筆時点でのバージョンで)です。
emerge syncした後で、続いてemerge -u worldをしても、最新版としてそれを見ることはないでしょう。
これはなぜでしょうか?
その理由は、そのパッケージが"masked"としてマークされているからです。
そのパッケージは特定の手段を取らない限り、自動的にはインストールされません。
マスクされたパッケージのインストールを可能にする方法の説明として、
Gentoo ForumsにあるMasked Packages FAQ
を見てみることをお勧めします。
The contents of this document are licensed under the Creative Commons -
Attribution / Share Alike license.
|