DELOGs
リポジトリ? パッケージ? aptコマンドって?

リポジトリ? パッケージ? aptコマンドって?

リポジトリやパッケージについてしっかり把握して、aptコマンドについて整理

初回公開日

最終更新日

リポジトリって何? からレベルからはじめている超初心者なので、自分への備忘録として記録しておきます。 主にUbuntuの運用において理解したいので、Ubuntuに寄せてまとめています。

1.概要

リポジトリ(Repository) とは、ソフトウェアパッケージ)が集められている倉庫のことです。
例えるなら… スマホの「アプリストア」 に相当します。
  • Android の Google Play ストア
  • iPhone の App Store
のように、Ubuntu も「アプリのダウンロード元(リポジトリ)」があります。 そして、Ubuntuでは/etc/apt/sources.list に登録されているURLがリポジトリになります。
bash
1cat /etc/apt/sources.list
スマホの「アプリストア」であれば、それぞれのプラットフォームで管理されているので、ネットを通してアプリストアを開いて、最新のリポジトリから好きなソフトウェアパッケージ)をダウンロードします。
しかし、Ubuntuのリポジトリは/etc/apt/sources.list にあるので、これを最新のものにする必要があります。 こうして、リポジトリ内のパッケージを管理するコマンドがaptコマンドです。 apt は Advanced Package Tool の略で、パッケージのインストール・更新・削除・検索を簡単に管理できるコマンドラインツールです。パッケージ間の依存関係の解決やリポジトリの管理を自動で行ってくれる便利なコマンドになります。下記はその一例。
リポジトリ内のパッケージリストの更新
bash
1sudo apt update
インストール済みパッケージのアップグレード
bash
1sudo apt update

2.リポジトリとは?

「リポジトリ」= 何かを整理して保存する場所 という意味です。ITの世界では、いくつかの異なる意味で使われます。

Linuxでの「リポジトリ」

Linuxでは「ソフトウェアの倉庫」 のことを指します。公式リポジトリやPPA(Personal Package Archive): 個人・企業が提供する追加のパッケージ、サードパーティリポジトリ(Google、Dockerなど)があります。

GitHubでの「リポジトリ」

GitHubなんかでもよくリポジトリという言葉は聞きます。 GitHub や Git では「コードを保存・管理する場所」 のことを指します。 「プログラムのバージョン管理」や「共同開発」に使われます。
(例)GitHub のリポジトリ:
Gitコマンド を使って、リポジトリにコードを保存・変更・共有します。
bash
1git clone https://github.com/nginx/nginx.git

その他の「リポジトリ」

データベースやAI分野でも「リポジトリ」という言葉を使います。
  • 画像や動画のデータを保存するリポジトリ
  • AIモデル(機械学習のデータ)を保存するリポジトリ
  • 企業の内部文書を保管するリポジトリ など

まとめ

分野リポジトリの意味
Linuxソフトウェアパッケージの倉庫(apt で管理)
Git/GitHubソースコードを管理する場所
データ管理画像・動画・AIモデルなどの保存場所

2.パッケージとは?

パッケージ(Package) とは、ソフトウェア(アプリ)をまとめたファイル のこと。
スマホで例えると…パッケージ = インストールするアプリ(YouTube, LINE, Instagramなど)
Ubuntuでは、nginx, apache2, vim, openssl などがパッケージ
パッケージの中身は?
  • 実行ファイル(プログラム本体)
  • 設定ファイル
  • 依存ライブラリ情報 など
Ubuntuでは .deb という形式のパッケージファイル が使われます。

3.リポジトリとパッケージの関係

  • リポジトリ(倉庫)にパッケージ(アプリ)がたくさん入っている
  • apt を使えばリポジトリからパッケージを取得してインストールできる!
(例)
bash
1sudo apt install nginx
上記のコマンドを実行すると、「apt」 が リポジトリ(/etc/apt/sources.list のURLリスト)を検索して、「nginx」パッケージをダウンロードしてインストールします。

4.aptコマンドって?

すでにここまでの記述で何度も登場しているaptコマンドについても改めてまとめておきます。
apt」 は、UbuntuやDebian系のLinuxディストリビューションで使用されるパッケージ管理ツールです。 dpkg のフロントエンドとして動作し、依存関係の解決やリポジトリの管理を自動で行ってくれます。 「dpkg 」はパッケージを直接管理するローレベルツールになり、「apt」は「dpkg 」を利用するためのフロントエンドツールになります。 つまり、「apt」 は依存関係の解決やリポジトリからのダウンロードを自動で行うが、実際のインストール・削除処理は 「dpkg」が担当しているということになります。
昔はapt-getというコマンドもありましたが、Ubuntu 16.04 以降では apt が推奨されるようになりました。

apt の基本コマンド

▼パッケージリストの更新
bash
1sudo apt update
  • /etc/apt/sources.list に記載されたリポジトリ情報を取得し、最新のパッケージリストを更新する。
  • これを実行しないと、古い情報をもとにパッケージをインストールすることになり、問題が発生する可能性がある。
▼パッケージのアップグレード
bash
1sudo apt upgrade -y
  • インストール済みのパッケージを最新バージョンに更新する。
  • -y をつけると、確認なしで自動的に「Yes」を選択。
▼フルアップグレード(依存関係の変更を伴う更新)
bash
1sudo apt full-upgrade -y
  • upgrade は既存のパッケージを更新するが、新しい依存関係が必要な場合はインストールしない。
  • full-upgrade は新しい依存関係も考慮し、必要ならパッケージを削除・追加する。
▼パッケージのインストール
bash
1sudo apt install <パッケージ名> 2 3# 例 4sudo apt install nginx
  • 指定したパッケージと、その依存関係をすべてインストールする。
▼パッケージの削除
bash
1sudo apt remove <パッケージ名>
  • 指定したパッケージのみ削除(設定ファイルは残る)。
▼設定ファイルも含めてパッケージを削除する
bash
1sudo apt purge <パッケージ名>
▼インストール済みパッケージの確認
bash
1apt list --installed | grep <パッケージ名>
▼システム内の不要なパッケージを削除
bash
1sudo apt autoremove -y
  • 依存関係が解決され、不要になったパッケージを削除。
▼キャッシュの削除
bash
1sudo apt clean
  • ダウンロード済みの .deb ファイルを削除してディスクの空きを確保。
以上でUbuntuのパッケージ管理については大枠把握したと言えると思っています。 「パッケージリストの更新」や「パッケージの更新」は実際のサーバ運用でもかなりの頻度で行うことになります。
この記事の執筆・編集担当
DE

松本 孝太郎

DELOGs編集部/中年新米プログラマー

ここ数年はReact&MUIのフロントエンドエンジニアって感じでしたが、Next.jsを学んで少しずつできることが広がりつつあります。その実践記録をできるだけ共有していければと思っています。