Linux でソフトウェアをインストール
『新しいLinuxの教科書』 20 章 P391 ~
パッケージとは
- パッケージと呼ばれる「コンパイル済みバイナリファイルのアーカイブ」を、パッケージ管理システムを利用してインストールする
- パッケージとは、ソフトウェアの実行ファイル・ドキュメントファイル・設定ファイル・インストール時に必要なスクリプトなどをまとめてアーカイブした1つのファイル
- Linux で主流のパッケージファイル形式は、
rpm
とdeb
の2種類に大別される(ディストリビューションによって差がある)rpm
: Red Hat 形式deb
: Debian 形式
リポジトリとは
- リポジトリとは、パッケージファイルを集めて配布しているサイト
- 公式サイト(Debian -- パッケージ)に掲載されているものもあれば、個人サイトで配布されているもの、ミラーサイトなんてものもある
- Git のリポジトリとは違い、単に「ファイルの配布場所(置き場所)」
- リポジトリを指定してパッケージ情報やパッケージファイルを取得、インストールを行うのがパッケージ管理システム
パッケージ間の依存性
- 多くのパッケージは「先にインストールしておかなければならない別のパッケージ」が存在するケースが多い
- ある目的のパッケージがあり、それよりも先にインストールされていることが必要な状態を「依存性を持つ」と言う
- APT系コマンドはインストール・アンインストール時に依存性を自動的に解決してくれる
dpkg
コマンドを使ってインストールしようとすると、これらの依存性を解決するために1つずつ手作業でパッケージのインストール・削除などを行う必要がある
パッケージの種類
公式と非公式
main
: DFSG(Debian Free Software Guidelines)準拠の Debian 公式パッケージcontrib
: それ自体は DFSG に準拠しているが、利用するうえで必要となる他のパッケージが公式に準拠していないパッケージ(実務でこれを使うケースは結構多いらしい)non-free
: DFSG に準拠していないパッケージ- 「
main
以外は非公式パッケージ」という認識でよい
- 「
安定版・テスト版・不安定版
以下の3つの版があり、よく理解できていない内は「安定版 (stable) のみを使う」という認識でよい
- 安定版 (stable)
- テスト版 (testing)
- 不安定版 (unstable)
apt コマンド
検索
$ apt search vim
- 正規表現で検索
$ apt search ^vim
- 説明文を検索対象にしない。パッケージ名と提供されたパッケージのみを検索対象にする
$ apt search -n vim
- インストール済みパッケージ一覧
dpkg -l
- 検索して絞り込む
apt list --installed | grep vim
(apt list自体には検索機能はない)
- Linux/パッケージ/Debian/apt - パッケージ検索 - yanor.net/wiki
インストール
# apt install <パッケージ名>
- install コマンドで
-y
オプションを入力すると、確認ダイアログY/n
をスキップできる# apt install -y <パッケージ名>
- シェルスクリプトなどでインストールを自動化する際に使われる
sources.list
sources.list
→ パッケージを「どこから取得するか」ということが書かれている大事なファイル/etc/apt/sources.list
- root権限で編集する
# vim /etc/apt/sources.list
- root権限で編集する
- sources.list を編集して保存した後は、
sudo apt update
コマンドで sources.list をプログラムに解析・更新させる- 特にエラーがでなければ問題なく編集できたことを意味する
非公式パッケージをインストールする
- apt-getで見つからないパッケージを追加する方法(debian, ubuntu両方対応) - Qiita
リポジトリを追加
- デフォルトの状態では、公式パッケージのリポジトリしか
sources.list
に記述されていないため、非公式パッケージをインストールするには、まずcontrib
とnon-free
のリポジトリを追加する必要がある - はじめに
$ cat /etc/apt/sources.list
で中身をのぞくと下記のようになっていた
username@os0-000-00000
- :/etc/apt$ cat sources.list
# deb http://ftp.jp.debian.org/debian buster main
deb http://ftp.jp.debian.org/debian buster main
deb-src http://ftp.jp.debian.org/debian buster main
deb http://security.debian.org/debian-security buster/updates main
deb-src http://security.debian.org/debian-security buster/updates main
- 参考記事に沿って進めていくと
- リポジトリの追加には
apt-add-repository
なるパッケージが必要 apt-add-repository
がどこにあるかコマンドラインで調べたい場合はapt-file
パッケージを使う- なのでまずは
# sudo apt install apt-file
- 更新する
# sudo apt update
- 探す
$ apt-file search apt-add-repository
- 以下のように表示され、
software-properties-common
のパッケージに含まれていることを意味するよう
username@os0-000-00000
- :/etc/apt$ apt-file search apt-add-repository
software-properties-common: /usr/bin/apt-add-repository
software-properties-common: /usr/share/man/man1/apt-add-repository.1.gz n
Reading package lists... Doneapt$ sudo apt install -y software-properties-common
- なので
# sudo apt install -y software-properties-common
- (
-y
はインストール実行の確認ダイアログY/n
をスキップするオプション)
- (
- これでようやくリポジトリの追加ができる
apt-add-repository
パッケージが使えるようになった - あとは
non-free
、ついでにcontrib
のリポジトリを追加する# sudo apt-add-repository non-free
# sudo apt-add-repository contrib
username@os0-000-00000
- :/etc/apt$ sudo apt-add-repository non-free
'non-free' distribution component enabled for all sources.
username@os0-000-00000
- :/etc/apt$ sudo apt-add-repository contrib
'contrib' distribution component enabled for all sources.
- "enabled" と書かれているのでうまく噛み合っている模様
- 改めて
$ cat /etc/apt/sources.list
で中身をのぞくと下記のように変更されていた
# 変更前
username@os0-000-00000
- :/etc/apt$ cat sources.list
# deb http://ftp.jp.debian.org/debian buster main
deb http://ftp.jp.debian.org/debian buster main
deb-src http://ftp.jp.debian.org/debian buster main
deb http://security.debian.org/debian-security buster/updates main
deb-src http://security.debian.org/debian-security buster/updates main
# 変更後
username@os0-000-00000
- :/etc/apt$ cat sources.list
# deb http://ftp.jp.debian.org/debian buster main
deb http://ftp.jp.debian.org/debian buster main non-free contrib
deb-src http://ftp.jp.debian.org/debian buster main non-free contrib
deb http://security.debian.org/debian-security buster/updates main non-free contrib
deb-src http://security.debian.org/debian-security buster/updates main non-free contrib
- ここからようやく非公式パッケージ(
non-free
型の iozone3 というパッケージ)をインストールする
# sudo apt update
# sudo apt install -y iozone3
- バージョン確認でインストール完了していることを確認する
$ iozone -v
username@os0-000-00000
- :/etc/apt$ iozone -v
'Iozone' Filesystem Benchmark Program
Version $Revision: 3.429 $
Compiled for 64 bit mode.
- 念の為、
contrib
のパッケージ(muttdown)もインストールしてみたところ問題なさそうだった
username@os0-000-00000
- :/etc/apt$ sudo apt install -y muttdown
Reading package lists... Done
Building dependency tree
Reading state information... Done
(中略)
username@os0-000-00000
- :/etc/apt$ muttdown -v
muttdown 0.3.3
- ということは、
apt-add-repository
パッケージをインストールしたり、リポジトリを/etc/apt/sources.list
に追加したりするのは(環境の変更など無ければ)最初だけでよいということ??? - ここまで結構な時間を使ったので、とりあえずこの先で非公式パッケージをインストールする際に行き詰まったら改めて調べることにする