Linuxとは何か?(2)ソフトのインストールはパッケージマネージャのAPTを使う

2019年9月27日

Linuxをいじり始めてからかれこれ22年ほど経ちました。あのころはGUIを設定するのにビデオカードのプロパティを1つずつ試して、成功するまで総当たりで設定したものです。今のLinuxはビデオカードの認識に失敗するようなことはなくなりました。Linuxはすごく進化したな。

Linuxの中でも大きく進歩した機能にパッケージマネージャがあります。ディストリビューションによってちょっと違ったりしますが。この記事では私が愛用しているDebian LinuxのパッケージマネージャAPTについて紹介します。

パッケージマネージャとは何か

Windowsのパッケージ管理方法

パッケージマネージャとは何か?を理解してもらうにはWindowsのソフトウェア管理について考えて貰えばイメージしやすいと思います。

私はWindowsでC#の開発環境を構築することがよくありますが、人気のあったWindowsは寿命が長くなり、サービスパックがいくつも出るので環境構築が大変でした。

例えば名作であったWindows XPにC#をインストールする際はVisual Studioをインストールする前に、SP1、SP3、IE8、.NetFrameworkの順でインストールしなければなりませんでした(細かいバージョンは忘れましたが)。上記のソフトはどれもインストールに数時間かかります。

しかも普通の人がインストールする場合はVisual Studioをインストールしようとすると「.Net Frameworkが必要です」と表示され、.NetFrameworkをインストールしようとすると「Internet Explore 8以上が必要です」と表示され、Internet Exploreをインストールしようとすると・・・といつまでたってもインストール作業に入れません。

このようなソフトウェアの関係を依存関係と言います。なぜソフトウェアの間で依存関係が発生するかというとソフトウェアの開発ではライブラリを使用するからです。

ライブラリとは多くのソフトウェアで使われるようなよくある処理を開発者の使いやすいようにひとかたまりにしたものです。例えば「ファイル名を指定してい保存」の際に現れるダイアログなどは一からプログラムを作らなくてもライブラリから借りてくれば簡単に表示されせることができます。

このライブラリは時代とともに少しずつ変わって行くので、ソフトウェア開発のときにどのバージョンのライブラリを使ったかによって依存関係が発生してしまうのです。

Linux用ソフトの依存関係

このような依存関係は実はLinuxのソフトをインストールする時にもありました。Linuxのパッケージマネージャがまだ普及していなかった頃は、Debian Linuxのウェブサイトの情報を見て、1つ1つパッケージをダウンロードしてインストールしていました。

Linuxのパッケージ開発は多くのボランティアの開発者によって行われているため、Windowsに比べて依存関係が細かくなりがちでした。例えば1番有名なWebサーバーのApacheはDebianのパッケージ情報では下のリンク先のように表示されます。

赤丸は依存関係があるのでインストールが必要、青四角は依存は無いがインストールを推奨、緑ひし形は一緒に使う可能性のあるものです。これらのソフトウェアの下にも依存関係があります。昔はすべての依存関係を一個一個確認してインストールしていました。

Linuxのパッケージマネージャはすごい

このような問題を解決するためにパッケージマネージャが登場しました。パッケージマネージャは上記の依存関係をすべて勝手にチェックして、必要なパッケージは同時にすべてインストールしてくれます。

Windowsの環境構築ではたびたび依存関係のエラーに見舞われますが、Linuxはのパッケージマネージャは強力でエラーはほぼ起こりません。Apacheと依存関係のあるソフトは100を超えると思いますが、正確にすべてをインストールしてくれます。(特殊なことをしようとすると失敗することもあります。)

APTの使い方

Debian LinuxのパッケージマネージャはAPT(Advanced Packaging Tool)と言います。Redhat系ではYumです。MacOSではHomebrewなど何種類かあるようです。この記事ではAPTについて紹介します。

DebianのAPTでインストールできるソフトウェアはDebian.orgのサーバーに保存されています。APTを使ってソフトウェアをインストールする際にそのサーバーからインストーラをダウンロードしてきますが、その前にサーバー内のインストール可能なソフトウェアの一覧をダウンロードします。

~# apt update

上記のコマンドでインストールの準備が整いました。試しにslをインストールしてみましょう。slはlsを間違って打った時に表示されるコマンドです。

# apt install sl
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following packages were automatically installed and are no longer required:
fonts-wine libwine libwine:i386 wine32:i386 wine64
Use ‘sudo apt autoremove’ to remove them.
The following NEW packages will be installed:
sl
0 upgraded, 1 newly installed, 0 to remove and 82 not upgraded.
Need to get 26.4 kB of archives.
After this operation, 98.3 kB of additional disk space will be used.
Get:1 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 sl amd64 3.03-17build2 [26.4 kB]
Fetched 26.4 kB in 0s (929 kB/s)
Selecting previously unselected package sl.
(Reading database … 123795 files and directories currently installed.)
Preparing to unpack …/sl_3.03-17build2_amd64.deb …
Unpacking sl (3.03-17build2) …
Setting up sl (3.03-17build2) …
Processing triggers for man-db (2.8.3-2ubuntu0.1) …

上記のように新しくどんなパッケージがインストールされてどのくらいの容量を消費して、など情報が表示されます。

ではここでslと打ち込んで見てください。slがインストールされていればSLが走ります。これならうっとうしくて、もうlsを打ち間違わないようになりますね。

ソフトウェアのアンインストールも簡単です。slが役に立たないコマンドだなと気づいた方は次のようにアンインストールしてください。

# apt remove sl

このコマンドでslのパッケージとslにしか使われていないパッケージが削除されます。slと依存関係があっても他のソフトで使われているライブラリは削除されません。

APTで使えるソフトウェア

ATPで使えるソフトウェアは私も全体がわかりません。Debianのウェブサイトでパッケージの検索ができます。またリンク先ページの下の方に「すべてのパッケージ」というリンクがありますので、そこでAPTの全パッケージの一覧を見ることができます(巨大です)。

まとめ

この記事ではLinuxのパッケージマネージャとDebianのパッケージマネージャAPTについて紹介しました。Linuxの長所を3つ上げろと言われたたら、私はオープンソース(タダ)と、PC/AT互換機で動くことと、APTの3つを上げます。

皆さんもLinux使ってみてください。