aptコマンドのUbuntuパッケージ管理について

aptって何?

LinuxディストリビューションのUbuntuでうつコマンドで「apt」ってあるじゃないですか?

僕が思った最初のaptへの印象は

aptってなに?

何ができるの?

とりあえず、なんかupdateかけてるのね。

そんな感じです。

「そんな感じです」ではエンジニアとしては失格なので、この記事ではaptについて理解できるように解説していきます。

この記事を読むことで得られる効果は以下のようなことです。

  • エンジニアどうしで話をするときに、周りが何を言っているかを理解できるようになる
  • なんとなくやっていたaptコマンドの理解ができるようになる
  • Linuxのことを深く理解できるようになり、「この人Linuxできるすごい人」という錯覚資産を得ることができる
  • ハッカーみたいでかっこいいな、といった気持ちになる

aptとは

aptとは「Advanced Packaging Tool」の略である。

Advanced = 高度な、先進的な と言った意味になる。

ここではわかりやすいくaptというのは先進的なパッケージツールなんだな、と覚えていこう。

Linuxのディストリビューションには様々な種類があるが、このAdvanced Pakaging ToolはDebian系のLinuxディストリビューションにて使われる先進的なツールです。

Debian系のLinuxディストリビューションの中の一つがUbuntuです。

Linuxは昔は「tar.gz」という圧縮されたファイルを解凍して、必要なソフトをインストールやアップデートしたりしていたみたいだが、それだと大変。(tar.gzについては別に改めて解説したいと思う)

そこで、Debianの開発者たちはパッケージ管理システムを作り上げ、パッケージを管理するための「先進的」なパッケージツールがapt=Advanced Pakageing Toolである。

Ubuntuではこのaptを使ってパッケージをインストールしたり、アップデートをしたりします。

aptのパッケージとは

先ほどからでてくるパッケージって何なの?

と思われた方も多いのではないでしょうか。

では、パッケージされたものを何か物で考えてみましょう。

商品をイメージするとその名の通りパッケージングされたもの

そう、こんなものをそのままイメージに当てはめてもらえれば良い。

aptについてもこのイメージで考えると、この箱の中には以下のようなものが入っている。

パッケージリスト
  • アプリケーションの実行ファイル
  • アプリケーションに必要なライブラリ
  • アプリケーションの設定ファイル
  • アプリケーションのドキュメント
  • Linuxは基本的な余計なソフトが入っていないため、パッケージをインストールすることで、色々とカスタマイズしていくのだ。

    ではこのパッケージ、どこから取得してくるの?というのが次の疑問になるかと思う。

    aptのパッケージはどこにあるの?

    Ubuntuのパッケージコマンドでこんなコマンドを打ったことがあるかと思います。

    sudo apt update
    sudo apt upgrade
    sudo apt install {パッケージ名}

    これ、いったい何をやってるんだろう?と思ったのが、僕の最初の印象です。

    UpdateやInstallをしているということは、どこかからそのファイルなどを取ってきてるだよな?

    その仕組みってどうなっているんだろう?

    と思って深堀りしていきました。

    実際にはパッケージを管理するための貯蔵庫があり、これを”リポジトリ”と呼んでいます。

    そして、リポジトリにはLinuxに必要なものが、パッケージングされたものが貯蔵されており、

    そのパッケージをLinuxにインストールしたり、アップデートするわけです。

    イメージ図はこんな感じ。

    aptするときのリポジトリはどこにあるの?

    リポジトリはインターネット上に存在します。

    Ubuntuの場合、以下のディレクトリにリポジトリを参照するためのコードが記述されています。

    /etc/apt/souce.list

    WindowsであればWSL2などをインストールして、

    cat /etc/apt/souce.list

    などと打ち込むとsouce.listの中身がどんな記述がされているかがわかります。

    catはconcatenate(つなぐ, 連結する)のcatです。

    ファイルの内容を表示するために使用するコマンドです。

    # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
    # newer versions of the distribution.
    deb http://archive.ubuntu.com/ubuntu/ focal main restricted
    # deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted
    
    ## Major bug fix updates produced after the final release of the
    ## distribution.
    deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
    # deb-src http://archive.ubuntu.com/ubuntu/ focal-updates main restricted

    コードをよく眺めてみるとdeb http://xxxxなどと書かれているのがわかります。

    debとはDebianのことです。

    debのフォーマットがこの書き方になっています。

    debではじまるのはコンパイル済みのバイナリパッケージ
    deb-srcではじまるのはソースパッケージを提供するリポジトリ

    Ubuntu20.04 LTSの場合
    focal = リリース時のパッケージ
    focal-updates = 一般的な重要なアップデート, アプリのバグ修正
    focal-security = 重要なセキュリティアップデート

    を行います。

    要するにdeb以降に書かれたリポジトリを参照して、この記述されたリポジトリからパッケージのインストールやアップデートを行うのです。

    以上をまとめるとこんな図になります。

    今回はaptって何?を深堀りしていきました。

    Linuxを操作していると、このコマンドは何をしているんだろう?がたくさんあるので、その都度少しでもわかりやすく説明できるように解説していきたいと思います。

    この記事を書くに至った経緯を少しお話させていただきますと、

    実務でLinuxを使って環境構築を行うことが多くなったためです。

    もともとLinuxを使った環境構築は別の担当者さんが行っていましたが、残念ながら退職してしまったために、代わりに僕がやらざるを得なくなってしまい、逃げ道がなくなったため、Linuxに苦手意識を持っていましたが、そんなことも言っていられず勉強することにしました。

    ただ、日々勉強していくと、苦手と思っていたLinuxもだんだん楽しくなっていき、エラーが出ることにも「まじかよー!」と焦りつつも、そのエラーを解消できたときの喜びが勝って、ますます深めていきたいな、と思いました。

    最近は「ハッキングラボのつくりかた」という本でハッキングについて学んでいる際に、Linuxを仮想で構築して仮想環境上で仮想Linuxから仮想Windowsを乗っ取る、みたいなこともやっていて、ハッキングって映画にでてくるあのターミナルをカタカタしている場面がすごくかっこいいな、という男のロマンもあって、Linuxを楽しく学んでいけてます。

    イメージ

    まだまだ知識は浅いですが、そんなちょっとした遊び心を持って学習していくと、より知識も定着するのではないかな?と思います。

    今後とも、そういったちょっとした要素を取り入れながら記事をご提供できれば幸いです。

    \無料コンテンツを配布しております/

    毎日エンジニアとして勉強をしているのに

    • コードが読めるようにならない
    • コードを書くなんてもってのほか
    • 環境構築ができない(そもそも何をやっているのかわからない)
    • 毎日できない自分に嫌気が差す

    そんな毎日に悩みを抱えている方

    もしかしたら間違った勉強方法をしているかもしれません。

    エンジニアとして生きていくための正しい勉強とは
    一体何でしょうか?
    以下からご確認ください

    コンテンツ無料ダウンロードページ

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です