Gentoo Linux/Portage

提供: KuroWiki
移動先: 案内検索

emerge

ファイル

/var/log/emerge.log
emerge した結果が記録されるファイル。
/var/lib/portage/world
ユーザー指定パッケージの全リストが書かれている。このファイルは編集可能。world クラスのアップデートで更新して欲しいパッケージを追加したり、更新してほしくないパッケージを削ったりしてかまわない。
/etc/make.conf
ビルドプロセスのための変数が書かれている。Gentoo インストールの時にも使用しているはず。このファイルは編集可能。make.globals の内容を上書きするためのもの。
/etc/dispatch-conf.conf
自動で設定ファイルの更新・バックアップを操作するための設定が書かれている。
/etc/make.profile/make.defaults
パッケージをインストールするとき、それぞれについてデフォルトで有効になる USE フラグが書かれている。このファイルは編集不可。
/use/portage/profiles/use.desc
USE フラグのマスターリストが機能の説明と一緒に書かれている。このファイルは編集不可。
/etc/make.profile/virtuals
virtual 依存関係を解決するために使われるデフォルトパッケージのリストが書かれている。このファイルは編集不可。
/etc/make.profile/packages
基本システムとして使われるパッケージのリストが書かれている。system と world クラスがこのファイルを参照する。このファイルは編集不可。
/etc/make.globals
ビルドプロセスのためのデフォルト変数が書かれている。このファイルは編集不可。

オプション

-a(--ask)
パッケージをアップデートするか、中止するか回答を求める。
-b(--buildpkg)
パッケージをインストールすることに加え、処理するすべての ebuild についてバイナリパッケージもビルドする。開発者向け。
-B(--buildpkgonly)
-bとほとんど同じ。開発者向け。
-l(--changelog)
アップグレードされるパッケージの changelog エントリーが表示される。
--columns
コピーペーストしやすい形でパッケージ名、新バージョン、旧バージョンが表示される。
-d(--debug)
デバッグモードで動作させる。開発者向け。
-D(--deep)
パッケージの直接の依存関係だけチェックするのではなく、パッケージの依存ツリー全体を考慮に入れる。
-e(--emptytree)
インストールされたパッケージのツリーが仮想的に libc だけ含むように手を加える。開発者向け。
-f(--fetch-all-uri)
パッケージをビルドせず、fetch だけを行う。
-g(--getbinpkg)
Portage が見つけた各バイナリーパッケージの情報をダウンロードする。
-G(--getbinpkgonly)
-gとほとんど同じ。
-h(--help)
ヘルプを表示する。
--newuse
Portage に、コンパイルしたあとUSEフラグが変化したパッケージを更新対象に含めるようにする。
--noconfmem
Portage に、CONFIG_PROTECT のディレクトリ内の設定ファイルがすでにマージされていることを示すマージ記録を無視させる。
-O(--nodeps)
依存するパッケージをインストールせず、指定されたパッケージだけをインストールする。
-n(--noreplace)
コマンドラインで指定されたパッケージですでにインストールされているものを飛ばす。
--nospinner
そのセッションではバーの回転を無効にする。
--oneshot
通常どおり emerge するが、今後アップデートするための world プロファイルにはパッケージを追加しない。
-o(--onlydeps)
指定されたパッケージ自身ではなく、そのパッケージに依存するパッケージをインストール(もしくはインストールするふりを)する。
-p(--pretend)
実際にパッケージをインストールせず、どんなパッケージがインストールされるのかを表示する。
--quiet(-q)
全体的に Portage が表示する出力を減らす。
--resume
最後のインストール操作を再開する。この操作は失敗したらエラーを返すだけという点に注意。
-S(--searchdesc)
検索文字列がパッケージ名に加え、説明フィールドにもマッチする。説明も正規表現でマッチする。
--skipfirst
--resumeといっしょに使った時だけ有効のオプション。
-t(--tree)
指定したターゲットについての依存関係のツリーをインデントを用いて表示する。
-u(--update)
パッケージを利用可能な最新バージョンにアップデートする。
-U(--upgradeonly)
パッケージをアップデートするが、インストールされているパッケージのバージョンを下げるようなアップデートは行わない。このオプションは非推奨で今後使うべきではない。今後は、/etc/portage/package.*を使うべきである。
-k(--usepkg)
バイナリーパッケージが使えるのであれば、emerge にバイナリパッケージ($PKGDIR から読み取る)を使い時間の食うコンパイルを避ける。
-v(--verbose)
詳細モードで emerge を動かす。
-V(--version)
emerge のバージョン番号を表示する。
文字列 意味
N 新規(まだインストールされていない)
S 新規、SLOTインストール(並立するバージョン)
U 更新、(バージョン変更)
D ダウングレード、(最新バージョンより古いものを入れる)
R 入れ替え、(同じバージョンを再度インストール)
F 制限付きパッケージの fetch、(手動でダウンロード)
f 制限付きパッケージの fetch、(すでにダウンロード済み)
I インタラクティブ(ユーザーの入力が必要)
B インストール済みパッケージによってブロックされている
b 他のパッケージにブロックされている(自動的に衝突が解決される)

パッケージ情報の更新

# emerge --sync

アップデートを行う前に必ず行う。なお、1日1回行うだけで良い。頻繁に行うと kick される。

システムの更新

どのパッケージが更新されるか確認する

# emerge -up system

更新を実行する

# emerge -u system

パッケージをインストールする

依存するパッケージを確認する

# emerge -pv apache2

パッケージを更新する

# emerge -u apache2

完全なシステムの更新

# emerge -avuND world

依存するパッケージを削除するので以下も実行。

# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild

revdep-rebuild がない場合、emerege gentoolkit でインストール。

Portage のアップデート

* An update to portage is available. It is _highly_ recommended
* that you update portage now, before any other packages are updated.
* To update portage, run 'emerge portage' now.

このようなメッセージが表示されたら、portage をアップデートする。

# emerge portage

profile の変更

emerge すると以下のメッセージが表示されることがある。

!!! Your current profile is deprecated and not supported anymore.
!!! Use eselect profile to update your profile.
!!! Please upgrade to the following profile if possible:
        default/linux/amd64/13.0

プロファイルを変更する必要があるので、コマンドを実行。

# eselect profile list
Available profile symlink targets:
  [1]   default/linux/amd64/13.0
  [2]   default/linux/amd64/13.0/selinux
  [3]   default/linux/amd64/13.0/desktop
  [4]   default/linux/amd64/13.0/desktop/gnome
  [5]   default/linux/amd64/13.0/desktop/kde
  [6]   default/linux/amd64/13.0/developer
  [7]   default/linux/amd64/13.0/no-multilib
  [8]   default/linux/amd64/13.0/x32
  [9]   hardened/linux/amd64
  [10]  hardened/linux/amd64/selinux
  [11]  hardened/linux/amd64/no-multilib
  [12]  hardened/linux/amd64/no-multilib/selinux
  [13]  hardened/linux/uclibc/amd64

設定したいプロファイルの番号を設定する。

# eselect profile set 1

blocking package

 * Error: The above package list contains packages which cannot be
 * installed at the same time on the same system.

  (sys-apps/modutils-2.4.27-r1::gentoo, ebuild scheduled for merge) pulled in by
    sys-apps/modutils required by (virtual/modutils-0::gentoo, installed)

  (sys-apps/kmod-12-r1::gentoo, ebuild scheduled for merge) pulled in by
    >=sys-apps/kmod-12 required by (sys-fs/udev-197-r8::gentoo, ebuild scheduled for merge)
    sys-apps/kmod[tools] required by (virtual/modutils-0::gentoo, installed)

この例は、sys-apps/modutilsとsys-apps/kmodがお互いにブロックしあっている。sys-apps/modutils の新しいモジュールが sys-apps/kmod なので、sys-apps/modutils を unmerge して削除する。

# emerge -C sys-apps/modutils

終わったら、この間、サーバを再起動しないこと。

このまま再度 emerge すると、sys-apps/modutils と sys-apps/kmod をインストールしようとしてブロックしてしまうので、sys-apps/modutils をインストールしないようマスクする。

# nano -w /etc/portage/package.mask

sys-apps/modutils だけ記述して保存する。

これで、emerege -u world すれば良い。

etc-update

 * IMPORTANT: X config files in '/etc' need updating.
 * See the CONFIGURATION FILES section of the emerge
 * man page to learn how to update config files.

/etc 以下にある設定ファイルを更新する必要があるので確認する。

# etc-update
Scanning Configuration files...
The following is the list of files which need updating, each
configuration file is followed by a list of possible replacement files.
1) /etc/locale.gen (1)
2) /etc/ntp.conf (1)
3) /etc/ssh/sshd_config (1)
Please select a file to edit by entering the corresponding number.
              (don't use -3, -5, -7 or -9 if you're unsure what to do)
              (-1 to exit) (-3 to auto merge all files)
                           (-5 to auto-merge AND not use 'mv -i')
                           (-7 to discard all updates)
                           (-9 to discard all updates AND not use 'rm -i'):

設定が必要なファイルは、(1)~~というふうにリストアップされる。1つずつ設定ファイルの差分を確認する。何も考えずに、-3、-5、-7、-9 を選択しないように。それらの意味は以下。

  • -1、etc-update を終了する
  • -3、(残りの)全てのファイルを自動的にマージする(通常行わない)
  • -5、mv -i を使わず自動的にマージする(通常行わない)
  • -7、全ての更新をやめる(etc-update しても表示されなくなる)(通常行わない)
  • -9、全ての更新を rm -i を使わず終了する(etc-update しても表示されなくなる)(通常行わない)

次に、番号を選択すると、diff 画面が表示される。以下は、/etc/ntp.conf の例である。

Showing differences between /etc/ntp.conf and /etc/._cfg0000_ntp.conf
--- /etc/ntp.conf       2012-12-02 18:38:54.489996003 +0900
+++ /etc/._cfg0000_ntp.conf     2013-03-30 17:17:17.795676790 +0900
@@ -11,11 +11,10 @@
 #server pool.ntp.org

 # Pools for Gentoo users
-#server 0.gentoo.pool.ntp.org
-#server 1.gentoo.pool.ntp.org
-#server 2.gentoo.pool.ntp.org
-#server 3.gentoo.pool.ntp.org
-server 192.168.1.11
+server 0.gentoo.pool.ntp.org
+server 1.gentoo.pool.ntp.org
+server 2.gentoo.pool.ntp.org
+server 3.gentoo.pool.ntp.org

 ##
 # A list of available servers can be found here:
@@ -50,4 +49,4 @@
 # not allowed to configure the server or used as peers
 # to synchronize against, uncomment this line.
 #
-restrict 192.168.1.0 mask 255.255.255.0 nomodify nopeer notrap
+#restrict 192.168.0.0 mask 255.255.255.0 nomodify nopeer notrap

先頭に - が表記されているのは既存ファイルの部分(=更新すると削除される部分)、+ が表記されているのは上書きされる内容。問題なければ、q を押して内容確認を終了。

次に、設定ファイルをどうするか聞かれる。

File: /etc/._cfg0000_ntp.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again
5) Save update as example config
Please select from the menu above (-1 to ignore this update):
  • 1、オリジナルファイルを更新ファイルで上書きする(オリジナルファイルを削除するかどうか確認あり)
  • 2、更新ファイルを削除し、既存のファイルを維持する(更新ファイルを削除するかどうか確認あり)
  • 3、インタラクティブなマージを行う
  • 4、もう一度比較を表示する
  • -1、この更新をキャンセル

例えば2を選ぶと以下が表示される。

Deleting /etc/._cfg0000_ntp.conf
rm: remove regular file '/etc/._cfg0000_ntp.conf'?

ここでyを選ぶと、更新ファイルは削除される。

すると、設定ファイル選択画面のさきほど確認した選択肢が消える。これを続けて設定ファイルが表示されなくなるまで作業を行う。最後に以下が表示されれば終了。

Exiting: Nothing left to do; exiting. :)

USE フラグ

グローバル USE フラグ
システム全体に影響する。USE フラグと言われたら通常このこと。
ローカル USE フラグ
パッケージ特有の判断に影響する。

emerge コマンドに一緒に記入

# USE="hoge hoge" emerge hoge

/etc/make.conf

gentooをインストールする時に作成する、中核となるUSEフラグ設定。全ての USE フラグは /usr/poratge/profiles/use.desc にリストされている。

/etc/portage/package.use

システム全体には適用したくないがパッケージは入れたい時に有効。以下は、php に対して様々なオプションを設定している例。

dev-lang/php cli apache2 curl gd mysql mysqli truetype soap zip xmlreader intl

/etc/portage/package.keywords

=app-portage/gentwoo-0.0.20120705 ~amd64

gcc

gcc をアップデートすると emerge のあらゆるパッケージでコンパイルが失敗するようになる。gcc プロファイルを確認。

# gcc-config -l
 * gcc-config: Active gcc profile is invalid!

 [1] x86_64-pc-linux-gnu-4.6.3

最後に米印がついていない場合は設定されていないので、設定する。

# gcc-config x86_64-pc-linux-gnu-4.6.3
 * Switching native-compiler to x86_64-pc-linux-gnu-4.6.3 ...
>>> Regenerating /etc/ld.so.cache...                                [ ok ]

 * If you intend to use the gcc from the new profile in an already
 * running shell, please remember to do:

 *   . /etc/profile

米印がついたか確認する。

# gcc-config -l
[1] x86_64-pc-linux-gnu-4.6.3 *

カーネルアップデート

emerge すると gentoo-sources や hardened-sources の新バージョンが表示されたら、カーネルをアップデートする。

# emerge -u gentoo-sources または hardened-sources

eselect でシンボリックリンクを最新のカーネルに変更する。

# eselect kernel list
# eselect kernel set 1

ここからは、genkernelではなく、手動で設定する。この方法は、Gentooインストール時に行う手順と全く同じである。

# cd /usr/src/linux
# make menuconfig

カーネルソースツリーは、.config で保存する。でなければ、次のコマンドでコンパイルができない。

# make && make modules_install

コンパイルが終わったら、ディレクトリにコピー。

# cp arch/x86_64/boot/bzImage /boot/kernel-3.8.13-gentoo-r1

grub2 の場合

grub2-config コマンドを実行する。

# grub2-mkconfig -o /boot/grub/grub.cfg

grub の場合

grub.conf を変更し、新しいカーネルで起動するようにする。grub.confは、genkernelかそうでないかによって、内容が異なるので注意。

# nano -w /boot/grub/grub.conf
title Gentoo Linux x86_64-3.8.13-gentoo-r1
...省略...
kernel /boot/kernel-3.8.13-gentoo-r1 root=/dev/sda3

grubをインストールする。

# grub --no-floppy
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

再起動

システムを再起動する。

# reboot

再起動後、uname -a で新しいカーネルで起動するか確認。

参考文献