apt

Linux でソフトウェアをインストール

『新しいLinuxの教科書』 20 章 P391 ~

パッケージとは

  • パッケージと呼ばれる「コンパイル済みバイナリファイルのアーカイブ」を、パッケージ管理システムを利用してインストールする
  • パッケージとは、ソフトウェアの実行ファイル・ドキュメントファイル・設定ファイル・インストール時に必要なスクリプトなどをまとめてアーカイブした1つのファイル
  • Linux で主流のパッケージファイル形式は、rpmdeb の2種類に大別される(ディストリビューションによって差がある)
    • rpm : Red Hat 形式
    • deb : Debian 形式

リポジトリとは

  • リポジトリとは、パッケージファイルを集めて配布しているサイト
  • 公式サイト(Debian -- パッケージ)に掲載されているものもあれば、個人サイトで配布されているもの、ミラーサイトなんてものもある
  • Git のリポジトリとは違い、単に「ファイルの配布場所(置き場所)」
  • リポジトリを指定してパッケージ情報やパッケージファイルを取得、インストールを行うのがパッケージ管理システム

パッケージ間の依存性

  • 多くのパッケージは「先にインストールしておかなければならない別のパッケージ」が存在するケースが多い
  • ある目的のパッケージがあり、それよりも先にインストールされていることが必要な状態を「依存性を持つ」と言う
  • APT系コマンドはインストール・アンインストール時に依存性を自動的に解決してくれる
    • dpkg コマンドを使ってインストールしようとすると、これらの依存性を解決するために1つずつ手作業でパッケージのインストール・削除などを行う必要がある

パッケージの種類

公式と非公式

  1. main : DFSG(Debian Free Software Guidelines)準拠の Debian 公式パッケージ
  2. contrib : それ自体は DFSG に準拠しているが、利用するうえで必要となる他のパッケージが公式に準拠していないパッケージ(実務でこれを使うケースは結構多いらしい)
  3. non-free : DFSG に準拠していないパッケージ
    • main 以外は非公式パッケージ」という認識でよい

安定版・テスト版・不安定版

以下の3つの版があり、よく理解できていない内は「安定版 (stable) のみを使う」という認識でよい

  1. 安定版 (stable)
  2. テスト版 (testing)
  3. 不安定版 (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
  • sources.list を編集して保存した後は、sudo apt update コマンドで 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
  1. リポジトリの追加には apt-add-repository なるパッケージが必要
  2. apt-add-repository がどこにあるかコマンドラインで調べたい場合は apt-file パッケージを使う
  3. なのでまずは # sudo apt install apt-file
  4. 更新する # sudo apt update
  5. 探す $ apt-file search apt-add-repository
  6. 以下のように表示され、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 に追加したりするのは(環境の変更など無ければ)最初だけでよいということ???
  • ここまで結構な時間を使ったので、とりあえずこの先で非公式パッケージをインストールする際に行き詰まったら改めて調べることにする