はじめに

第10章はじめに

Debianベースのシステムでは、プログラムのAPT（Advanced Packaging Tool）は、dpkgプログラムを基とした高度なインテリジェント サービスを提供します。Red Hatベースのシステムでのyumと同じ役割を果たします。主なユーティリティはaptとapt-cacheです。パッケージのインストール、更新、削除時に、依存関係を自動的に解決できます。外部ソフトウェア リポジトリにアクセスして同期を取り、必要に応じてソフトウェアを取得してインストールします。


学習目標
この章の終わりまでに、次のことができるようになります。

APTとは何かを説明できます。
パッケージ クエリを実行できます。
パッケージに関するシステム情報をきちんと整理できます。
apt を使用してパッケージをインストール、削除、アップグレードできます。


APT

APTとは何か？
Debianベースのシステムでは、プログラムのAPT（Advanced Packaging Tool）は、dpkgプログラムを基とした高度なインテリジェント サービスを提供します。Red Hatベースのシステムでのyumと同じ役割を果たします。主なユーティリティはaptとapt-cacheです。パッケージのインストール、更新、削除時に、依存関係を自動的に解決できます。外部ソフトウェア リポジトリにアクセスして同期を取り、必要に応じてソフトウェアを取得してインストールします。

APTシステムは、ファイルの拡張子が.debであるDebianパッケージと連携して動作します。本質的な部分を変更せずにDebianパッケージング システムを採用している、Debianから派生したディストリビューション（UbuntuやLinux Mintを含む）は多数あります。実際、複数のDebianベースのLinuxディストリビューションが、1つのリポジトリを使用することは珍しくありません。

繰り返しになりますが、SynapticやUbuntu Software Centerのような（コンピュータ上の）グラフィカル インターフェイス、もしくはaptitudeなどのAPTの古いフロントエンドは、ここでは扱いません。


apt
aptは、パッケージ管理用の主要なAPTコマンド ライン ツールです。個々のパッケージやシステム全体のインストール、管理、アップグレードに使用できます。ディストリビューションを完全に新しいリリースにアップグレードすることもできますが、これは難しい作業です。

aptがrpmファイルを操作できるようにする（不完全な）拡張機能もあります。

yumやzypperと同様に、複数のリモート リポジトリで動作します。

💡
すべてのインタラクティブな操作を行うために、apt-getを使用する必要はなくなりました。aptという短い名前を使用できます。ただし、apt-getの使用は習慣化されており、スクリプトで使用されています。

優れたインターネット ベースのリソースは、Debianパッケージのウェブ ページとUbuntuパッケージのウェブ ページにあります。これらのデータベースを使用すれば、パッケージを検索し、その内容を調べてダウンロードできます。


クエリ
クエリは、apt-cacheまたはapt-fileユーティリティを使用します。最初にapt-fileをインストールし、そのデータベースを更新する必要があるかもしれません。
インストールする場合：

$ sudo apt install apt-file
$ sudo apt-file update

リポジトリでapache2という名前のパッケージを検索する場合：

$ apt-cache search apache2

apache2パッケージに関する基本情報を表示する場合：

$ apt-cache show apache2

apache2パッケージに関する詳細情報を表示する場合：

$ apt-cache showpkg apache2

apache2のすべての依存パッケージをリストする場合：

$ apt-cache depends apache2

リポジトリでapache2.confという名前のファイルを検索する場合：

$ apt-file search apache2.conf

apache2パッケージ内のすべてのファイルをリストする場合：

$ apt-file list apache2


aptを使用したパッケージのインストール／削除／アップグレード
aptプログラムは、パッケージのインストール、削除、アップグレードを行います。

パッケージ インデックス ファイルをリポジトリ ソースと同期させます。利用可能なパッケージのインデックスを、/etc/apt/sources.listで指定された場所からフェッチする場合：

$ sudo apt update

新しいパッケージをインストールする、または既にインストールされているパッケージを更新する場合：

$ sudo apt install [package]

構成ファイルを削除せずにパッケージをシステムから削除する場合：

$ sudo apt remove [package]

システムからパッケージとその構成ファイルを削除する場合：

$ sudo apt --purge remove [package]

既にインストールされているパッケージに利用可能なすべての更新を実施する場合：

$ sudo apt upgrade

徹底的に依存関係の解決を行っていくつかの古いパッケージを削除して新しい依存関係をインストールする、スマート アップグレードを実行する場合：

$ sudo apt dist-upgrade

よく誤解されるようですが、これは Linuxディストリビューションを新しいバージョンに更新するわけではありません。

💡
update引数で、リポジトリの更新とパッケージのアップグレードの両方を行うyumとは違って、アップグレードする前にリポジトリを更新を行う必要があることに注意してください。Debianベースのシステムでは、これによりyumユーザーがよく混乱します。

古いLinuxカーネル バージョンなど、不要になったパッケージをすべて削除する場合：

$ sudo apt autoremove

キャッシュ ファイルとインストールされているアーカイブ パッケージ ファイルをすべて削除する場合：

$ sudo apt clean

これにより、多くの領域を節約できます。

さらに、最新の情報をシステムに反映する新しいapt  [update | upgrade]コマンドは、このcleanを使用することにより、障害を引き起こすことなく/var/cache/apt*に保存されるデータ量を減らすことができます。


デモ：Ubuntu 17.04でのグラフィカル パッケージ管理の使用方法

このビデオでは、Ubuntu 17.04でグラフィカル パッケージ管理を使用する方法を示します。


演習

演習の要件
本演習を実行するには、Debian、Ubuntu、inux Mint など、Debian ベースのシステムにアクセスできることが必要です。


課題 10.1:APTの基本コマンド

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 10.1: Basic APT Commands

1.  Check to see if there are any available updates for your system.
2.  List all installed kernel-related packages, and list all installed or available ones.
3.  Install the apache2-dev package, or anything else you might not have installed yet. Doing a simple:
$ apt-cache pkgnames
will let you see a complete list; you may want to give a wildcard argument to narrow the list.

Solution 10.1

1.  First synchronize the package index files with remote repositories:
$ sudo apt update
To actually upgrade:
$ sudo apt upgrade
$ sudo apt -u upgrade
(You can also usedist-upgradeas discussed earlier.) Only the first form will try to do the installations.

2.$ apt-cache search "kernel"
$ apt-cache search -n "kernel"
$ apt-cache pkgnames "kernel"

The second and third forms only find packages that havekernelin their name.
$ dpkg --get-selections "*kernel*"
to get only installed packages.  Note that on Debian-based systems you probably should use linux not kernel for kernel-related packages as they don’t usually have kernel in their name. 

3.$ sudo apt install apache2-dev


課題 10.2: パッケージの情報を参照するために apt コマンドを使う 

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 10.2: Using APT to Find Information About a Package

Usingapt-cacheandapt(and notdpkg), find:
1.  All packages that contain a reference tobashin their name or description.
2.  Installed and availablebashpackages.
3.  The package information forbash.
4.  The dependencies for thebashpackage.
Try the commands you used above both asrootand as a regular user. Do you notice any difference?

Solution 10.2

1.$ apt-cache search bash
2.$ apt-cache search -n bash
3.$ apt-cache show bash
4.$ apt-cache depends bash
$ apt-cache rdepends bash


課題 10.3: APT で、パッケージ グループを管理する

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 10.3: Managing Groups of Packages with APT

APT provides the ability to manage groups of packages, similarly to the way yum does it, through the use of metapackages.
These can be thought of asvirtual packages, that collect related packages that must be installed and removed as a group.To get a list of of available metapackages:
$ apt-cache search metapackage
bacula - network backup service - metapackage
bacula-client - network backup service - client metapackage
bacula-server - network backup service - server metapackage
cloud-utils - metapackage for installation of upstream cloud-utils source
compiz - OpenGL window and compositing manager
emacs - GNU Emacs editor (metapackage)
....

You can then easily install them like regular single packages, as in:
$ sudo apt install bacula-client
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
bacula-common bacula-console bacula-fd bacula-traymonitor
Suggested packages:
bacula-doc kde gnome-desktop-environment
The following NEW packages will be installed:
bacula-client bacula-common bacula-console bacula-fd bacula-traymonitor 0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 742 kB of archives.
After this operation, 1,965 kB of additional disk space will be used.
Do you want to continue?[Y/n]

Select an uninstalled metapackage and then remove it.


知識チェック

「第10章 - APT」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。

クイズ開始

問題 10.1
apt install <package>は、新しいパッケージをインストールするために使用されます。True or False?

A. True
B. False

問題 10.2
apt updateは、パッケージを引数として指定できません。True or False?

A. True
B. False

問題 10.3
apt-file find <file path>は、引数として指定されたファイルを提供するパッケージの検索には使用できません。True or False?

A. True
B. False

問題 10.4
apt-cache searchは、パッケージ名と短い説明で検索ができます。True or False?

A. True
B. False


