APT-の手引き

APTとは?

APTとはAdvanced Packaging Toolの略でシステム管理者(つまりあなた)がDebianのパッケージ(debファイル)をインストールしたり、どのパッケージがインストールされているかなどを管理するためのいくつかのプログラムとスクリプトの総称です。

ソースリスト

APTシステムにはインストールまたはアップグレードできるパッケージの場所についての情報を保持するsources.listと呼ばれるファイルが必要です。

Eros-プレリリース2以降のインストールの場合

Eros-プレリリース2以降のインストールでは /etc/apt/sources.list の扱いが変わってこのファイルは空になっています。 代わりに次の名のフォルダーが使われています:
/etc/apt/sources.list.d/

このフォルダーには2つのファイルがあります:
/etc/apt/sources.list.d/debian.list
/etc/apt/sources.list.d/sidux.list

このやり方には簡単な(自動的な)ミラー切り替えができるという利点があり、リストの交換もより安全にできます。

ここに自分のソースリストファイル /etc/apt/sources.list.d/*.list を加えることもできます。

Eros-プレリリース1, Gaia, Tartaros または Chaosのインストールの場合

ソースリスとは/etc/apt/sources.listです。

siduxのISOは次のようなsources をデフォルトとして使っています:

# Free University Berlin/ spline (Student Project LInux NEtwork), Germany
deb ftp://ftp.spline.de/pub/sidux/debian/ sid main contrib non-free fix.main fix.contrib fix.non-free
#deb-src ftp://ftp.spline.de/pub/sidux/debian/ sid main contrib non-free fix.main fix.contrib fix.non-free

non-freeが必要な場合のためのsources.listは常にアップデートされています。2007年2月27日午前8時(UTC)現在の内容は:

# See sources.list(5) for more information, especially
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.
# The /etc/apt/sources.list.d/ directory provides a way to add sources.list
# entries in separate files that end with sources.list file.

# Unstable
deb http://ftp.us.debian.org/debian/ unstable main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ unstable main contrib non-free

# Testing
#deb http://ftp.us.debian.org/debian/ testing main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ testing main contrib non-free

# Experimental
#deb http://ftp.us.debian.org/debian/ experimental main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ experimental main contrib non-free

# Free University Berlin/ spline (Student Project LInux NEtwork), Germany
deb ftp://ftp.spline.de/pub/sidux/debian/ sid main contrib non-free fix.main fix.contrib fix.non-free
#deb-src ftp://ftp.spline.de/pub/sidux/debian/ sid main contrib non-free fix.main fix.contrib fix.non-free

ノート: この例で使われているftp.usはドイツのレポジトリーを表します。 rootとして、このファイルを変更して、近くのレポジトリーを使うように設定できます。 たとえば ftp.us を ftp.jp または ftp.uk という具合に。 大抵の国にレポジトリーがあるのでバンドウィドスの節約になりスピードも改良されます。

パッケージについての最新の情報を得るためにAPTはデータベースを使っています。 このデータベースにはパッケージだけでなく、そのパッケージが動くために他のどのパッケージが必要であるかの情報(依存関係と呼ばれます)も含まれています。 apt-getというプログラムはこのデータベースを見て、インストールするパッケージの依存関係をすべて解決するパッケージを選びます。 このデータベースを更新するのために apt-get update のコマンドがあります。

# apt-get update
	(which returns)
Get:1 http://sidux.com sid Release.gpg [189B]
Get:2 http://sidux.com sid Release.gpg [189B]
Get:3 http://sidux.com sid Release.gpg [189B]
Get:4 http://ftp.de.debian.org unstable Release.gpg [189B]
Get:5 http://sidux.com sid Release [34.1kB]
Get:6 http://ftp.de.debian.org unstable Release [79.6kB]

新しいパッケージのインストール

APTのデータベースが更新され、インストールしたいパッケージの名がわかっていたら、次のコマンドでそのパッケージをインストールできます。 例として qemu という名のパッケージと依存関係のあるパッケージすべてをインストールするには: (パッケージの探し方は後ほど)

# apt-get install qemu
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
  bochsbios openhackware proll vgabios
Recommended packages:
  debootstrap vde
The following NEW packages will be installed:
  bochsbios openhackware proll qemu vgabios
0 upgraded, 5 newly installed, 0 to remove and 20 not upgraded.
Need to get 4152kB of archives.
After unpacking 11.9MB of additional disk space will be used.
Do you want to continue [Y/n]? n

パッケージの除去

つぎのコマンドでインストールされているパッケージが除去できます. ただし上のコマンドでインストールされた依存関係のファイルは自動的に除去されません。 これについては後ほど deb-orphanの項で

# apt-get remove example
apt-get remove gaim
Reading package lists... Done
Building dependency tree... Done
The following packages will be REMOVED:
  gaim gaim-irchelper
0 upgraded, 0 newly installed, 2 to remove and 310 not upgraded.
Need to get 0B of archives.
After unpacking 4743kB disk space will be freed.
Do you want to continue [Y/n]?
(Reading database ... 174409 files and directories currently installed.)
Removing gaim-irchelper ...
Removing gaim ...

上記の最後のコマンドでは gaim というパッケージの設定ファイルは消去されていません。 そのため後でまた同じパッケージをインストールするとこの設定が使われることになります。

設定ファイルも一緒に消してしまいたい場合は次のコマンドを使います:

# apt-get remove --purge gaim
Reading package lists... Done
Building dependency tree... Done
The following packages will be REMOVED:
  gaim*
0 upgraded, 0 newly installed, 1 to remove and 309 not upgraded.
Need to get 0B of archives.
After unpacking 4678kB disk space will be freed.
Do you want to continue [Y/n]? Y
(Reading database ... 174405 files and directories currently installed.)
Removing gaim ...
Purging configuration files for gaim ...

/etc/gaim のファイルが消去されるだけでなく、すべての設定ファイルが抹消されます。 ただしここで取り除かれるパッケージのインストールの際に作られたもの以外のファイルはコマンドの実行後にも残ります。

データベースがアップデートされた後、新しいバージョンのあるパッケージを表示することができます。 (初めての実行前に apt-show-versions をインストールしてください)

# apt-show-versions -u
libpam-runtime/unstable upgradeable from 0.79-1 to 0.79-3
passwd/unstable upgradeable from 1:4.0.12-5 to 1:4.0.12-6
teclasat/unstable upgradeable from 0.7m02-1 to 0.7n01-1
libpam-modules/unstable upgradeable from 0.79-1 to 0.79-3
fonts-ttf-west-european/unstable upgradeable from 1.3-9 to 1.3-1-1
fonts-ttf-decoratives/unstable upgradeable from 1.3-1 to 1.3-1-1
sysv-rc/unstable upgradeable from 2.86.ds1-3 to 2.86.ds1-4
libpam0g/unstable upgradeable from 0.79-1 to 0.79-3
unionfs-utils/unstable upgradeable from 1.0.14+cvs2005092318w-M1 to 1.0.14+cvs2005092908w-M1libpam-runtime/unstable upgradeable from 0.79-1 to 0.79-3
passwd/unstable upgradeable from 1:4.0.12-5 to 1:4.0.12-6
teclasat/unstable upgradeable from 0.7m02-1 to 0.7n01-1
libpam-modules/unstable upgradeable from 0.79-1 to 0.79-3
fonts-ttf-west-european/unstable upgradeable from 1.3-9 to 1.3-1-1
fonts-ttf-decoratives/unstable upgradeable from 1.3-1 to 1.3-1-1
sysv-rc/unstable upgradeable from 2.86.ds1-3 to 2.86.ds1-4
libpam0g/unstable upgradeable from 0.79-1 to 0.79-3
unionfs-utils/unstable upgradeable from 1.0.14+cvs2005092318w-M1 to 1.0.14+cvs2005092908w-M1

一つのパッケージを依存パッケージを含めて新しいバージョンにアップデートするには次の(gcc-4.0をアップデートする)例のようにします:

apt-get install gcc-4.0
Reading package lists... Done
Building dependency tree... Done
gcc-4.0 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and xxx not upgraded

ダウングレードまたはパッケージの保持

時にはインストールしたばかりの最新パッケージに大きなバグがあるため前のバージョンに戻したり、インストールされている最新でないパッケージを維持する必要があるかもしれません。

ホールド(保持)

echo package hold|dpkg --set-selections

ホールドの終了

echo package install|dpkg --set-selections

ホールドになっているパッケージの表示:

dpkg --get-selections | grep hold

ダウングレード

ここでは例としてkmahjonggをダウングレードします:

  1. /etc/apt/sources.list のtesting の行を有効にする
    (行の始めの#を消してコメントからはずす)。 次のようになります:
    deb http://ftp.nl.debian.org/debian/ testing main contrib non-free
  2. apt-get update
  3. apt-get install -t testing kmahjongg
  4. 今インストールされたパッケージをホールドにする:
    echo kmahjongg hold|dpkg --set-selections
  5. /etc/apt/sources.list の testing の行をコメントに戻す
  6. apt-get update

このパッケージを最新のものにしたくなったら:

echo kmahjongg install|dpkg --set-selections
apt-get update
apt-get install kmahjongg

インストールされたシステムのアップグレード - dist-upgrade

システム全体をアップグレードしたい場合は dist-upgrade を行います。 まず必ず sidux のウェッブサイトに警告がないかをチェックし、とくにシステムがアップデートしようとしているパッケージに問題がないかを確認してください。 必要があればパッケージのダウングレードとホールドの項目にしたがってパッケージをholdにします

Debian sid で upgrade のコマンドだけでアップグレードするのは推薦できません。

dist-upgradeの頻度について

dist-upgrade はなるべく定期的に行います。 理想的には一週間か二週間に一度、少なくとも一ヶ月に一度ならば安心です。 二、三カ月に一度ならまだなんとかぎりぎり大丈夫といえるかもしれません。 標準でないパッケージや自分でコンパイルしたパッケージを使っている場合はいつ互換性の問題でシステムが滅茶苦茶になってもおかしくないのでさらに注意が必要です。

ダウンロードだけする方法

あまり知られていないけれど、どのパッケージがdist-upgradeによって更新されるかを調べるのに非常に便利なオプションとして -d フラッグがあります:

apt-get dist-upgrade -d

この -d オプションは dist-upgrade のパッケージをインストールなしにただダウンロードするコマンドで、Xの上でもコンソールから安全に実行でき、あとで仕事が終わってからinit 3 でdist-upgradeを行うことができます。 このコマンドを使えば列記されたパッケージをチェックしたり、または下のように、実行を中止することもできます。

apt-get dist-upgrade -d
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  elinks-data
The following packages have been kept back:
  git-core git-gui git-svn gitk icedove libmpich1.0ldbl
The following packages will be upgraded:
  alsa-base bsdutils ceni configure-ndiswrapper debhelper
  discover1-data elinks file fuse-utils gnucash
  gnucash-common initscripts isdnutils-base libaprutil1
  libcapi20-3 libdvdread3 libfuse2 libmagic1 libvlc0
  linux-sound-base locales mount mozilla-plugin-vlc
  python-glade2 python-gtk2 siduxcc siduxcc-common strace
  sysv-rc sysvinit sysvinit-utils tzdata util-linux vlc
  vlc-nox
35 upgraded, 1 newly installed, 0 to remove and 6 not upgraded.
Need to get 23.4MB of archives.
After this operation, 594kB of additional disk space will be used.
Do you want to continue [Y/n]?
Y
Yを選べば現行のシステムを変更することなく新しいパッケージをダウンロードします

'dist-upgrade -d' がパッケージをダウンロードしたあとすぐ、またはしばらくたってからdist-upgradeを完了したいと思ったら、次の指示に従ってください。

決して決して、絶対にdist-upgradeやupgradeをXの上から行わないこと。
まずsidux のメイン・サイトで最新の警告を読みます。 unstableのレポジトリーの性質上、日々新しいパッケージがアップデートされるため、dist-updateに付きそう危険をあらかじめ知らせるための警告です。
KDEをログアウト。 
Ctrl+Alt+F1を押してテキストモードに 
rootとしてログイン, init 3とタイプ 
apt-get update
apt-get dist-upgrade
もしxorgがアップデートされていて、バイナリのドライバば必要なグラフィックカードを使っている場合
get-sidux-binary-gfxを実行してドライバを再インストール
最後に
init 5 && exit 
決してadeptやsynaptic,aptitudeといったツールを使ってdist-updateまたはupdateを行わないこと!:

init 3に行かずにアップデートする癖がつくと、今にきっとひどい目にあいますよ。 警告しましたよ!!!!!!!!!!!

dist-upgradeにapt-get以外の方法を使ってはいけない理由

adept, aptitude, synaptic, kpackageといったパッケージマネージャはSidに起こるような大きな変化 (依存関係の変更、パッケージ名の変更、メンテ用のスクリプトの変更など)に常にうまく対処できるようには作られていません。 これは別に上記のツールの開発者の過失というわけではなく、Debianのstableのために優れた道具を開発したことを讃えるべきですが、単にDebian Sidの特殊な要求に対処するのには向いていないというだけのことです。

パッケージを探すためにはどんなツールを使っても構いませんが、実際にパッケージのインストール/除去またはdist-upgradeをするときにはあくまでapt-getを使うようにしてください。

複雑な依存関係の入り組んだパッケージ選択にあたって, 少なくともadept, aptitude, synaptic, kpackageといったパッケージマネージャは決定論的に作られてはいません。 めまぐるしく変化するSidや、品質管理に疑問の残る外部レポジトリーのことも考えると, わざわざ破局を招いているようなものです。 (外部レポジトリーはsiduxに含まれていませんし、特に使用を勧めるものではありませんが、あれこれ使われているのが実際でしょう)。 もう一つ注意してほしいことはこれらGUIのパッケージマネージャはinit 5またはXウィンドウ上で実行される必要があることで、dist-upgrade (またはsiduxから推奨されていない'update')をXの上で行うのは、たとえ今日,明日は無事にすんでも、いつかきっとシステムに回復不可能なダメージを与えることになるでしょう。

それに比べてapt-getはやるべきことだけを厳密に行うプログラムです。 依存関係に問題があったら正確に指摘するので原因をデバッグ/修正できますし、もしapt-getが(ライブラリの移行などのため)現行システムの半分を消去しようとしていたら、何か変だぞとちょっと調べてみるのはそれこそアドミンの(つまりあなたの)仕事です。

そのためDebian自体の配布でも他のパッケージマネージャではなく、apt-getが使われているわけです。

apt-cacheを使ってパッケージを探す

APTシステムのもう一つとても便利なコマンドとして apt-cacheがあります。 APTのデータベースをサーチしてパッケージについての情報を表示します。 例: 名前または説明の中に"sidux"と"manual"の両方が現れるパッケージを探すには:

$ apt-cache search sidux manual
sidux-manual-de - the official de sidux manual
sidux-manual-ro - the official ro sidux manual
sidux-manual-hr - the official hr sidux manual
sidux-manual-common - the official sidux manual - common files
sidux-manual-en - the official en sidux manual
sidux-manual-ru - the official ru sidux manual
sidux-manual-dk - the official dk sidux manual
sidux-manual - the official sidux manual - all languages
sidux-manual-nl - the official nl sidux manual
sidux-manual-es - the official es sidux manual

特定のパッケージについてもっと知りたかったら:

$ apt-cache show sidux-manual-en
Package: sidux-manual-en
Priority: optional
Section: doc
Installed-Size: 1088
Maintainer: Kel Modderman <kel@otaku42.de>
Architecture: all
Source: sidux-manual
Version: 01.12.2007.06.03-1
Depends: sidux-manual-common
Filename: pool/main/s/sidux-manual/sidux-manual-en_01.12.2007.06.03-1_all.deb
Size: 391222
MD5sum: 60f2175c3c5709745a4b4256ccc3c49d
SHA1: e275a0b27628b6aa210a4ced48d3646b438e78b8
SHA256: 2792580c7a091521301064180a1d0d8901f0a4af407b90432b9f8d8b6b3603ca
Description: the official en sidux manual
 This manual is divided into common sections, for example, a subject pertaining
 to partitioning is found in Partitioning your Hard Drive, and topics regarding
 the Internet/WIFI are grouped in Internet and Networking. There are some
 topics that cannot be grouped or require stand-alone status.
 .
 As with any new documentation there will be errors/mistakes/typos, although we
 hope otherwise regarding errors and mistakes (typos we can live with) please
 forgive us.
 .
 As the body of work grows, more documentation will be added and we at sidux are
 sure that this will prove to be a very valuable resource for you and we thank
 you for being a part of sidux.

そのパッケージのインストールできるバージョン(sources.listの内容によって違います)を表示するには:

$ apt-cache policy sidux-manual-en
sidux-manual-en:
  Installed: (none)
  Candidate:01.12.2007.06.03-1
  Version table:
     01.12.2007.06.03-1 0
        500 http://sidux.com sid/main Packages

APTシステムの詳細はAPT-HOWTO(日本語版)をご覧ください (英語版はこちらへ)

kio-aptを使ってパッケージを探す

kio-slaveというしかけを使ってKonquerorGUIで何の危険もなくAPTパッケージを探すことができます。 これはインストールやアップデートするオプションのないAPTパッケージのサーチエンジンです。

これはdist-upgradeをついそのままXの上から実行してしまいたくなる恐れのある、adept, aptitude, synapticやkpackageといったDebian sidには向かないパッケージマネージャの代わりとして安心して使えるプログラムです。

このプログラムでAPTデータベースとDebianのウェッブサイトの両方のパッケージサーチができ、apt-cache policy と apt-cache show の情報の要約が表示されます。

kio-aptの使い方:

  • apt:/search? キーワード:apt-cache searchのように、パッケージ名や説明にキーワードが使われているを含むパッケージをサーチする
  • apt:/show? パッケージ名: apt-cache showのように、パッケージについての詳しい情報を表示する。 policyの情報も同時に表示される
  • apt:/policy? パッケージ名: apt-cache policyのように、パッケージのpolicy (バージョン情報)を表示する
  • apt:/list? パッケージ名: パッケージに含まれるファイルを表として表示する。
kio-apt-1
kio-apt-2

kio-aptのインストール

sux
apt-get update && apt-get install kio-apt

konquerorを走らせLocation:の欄に

apt:/

とタイプしてEnterキーを押す。 簡潔な表示や拡張された表示など、様々なオプションについては次のウェッブページを参考にしてください。

APTシステムの詳細はAPT-HOWTO(日本語版)をご覧ください (英語版はこちらへ)

Page last revised 20/06/2008 1130 UTC