0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ubuntu】パッケージ管理についてパターンを整理してみた

Posted at

結論

最新の安定版のパッケージ使いたい yes→ 3.1方式でリポジトリ登録
no↓
対象のバージョンはdeb形式でリポジトリにある(最悪公式リポジトリでなくても) yes→3.2方式でリポジトリ登録
no↓
今回は触れないソースを探してインストールする方式になりそう(ソース:http://nginx.org/en/download.html)

目的

Ubuntuのnginxパッケージのインストールを通じてパッケージ管理を理解する

概要

方法は下記の2つ
① ソースからインストール → 割愛(ソースからインストールしてコンパイルすれば基本行ける)
② リポジトリに登録

以下は2のパターンで使う

1.リポジトリの登録方法(やっていることは基本的に同じはず)
1.1 リポジトリ追加コマンドを使う(add-apt-repositoryコマンド)
1.2 viコマンドで直書き
1.3 aptlyコマンド (https://gihyo.jp/admin/serial/01/ubuntu-recipe/0485)

2.リポジトリの登録先
2.1 /etc/apt/sources.list → 既存のリポジトリのリストに追加する
2.2 /etc/apt/sources.list.d/hoge.list → 新しくリポジトリを作成する
どちらでもできないことはないが標準で入ってるもの(2.1)と区別するために2.2がオススメ

3.リポジトリの情報をどこから持ってくる?
3.1公式リポジトリの場所をリポジトリのフォーマットに基づいて指定する(deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...])
3.2wgetなどで直接パッケージをサーバ内に配置してそれをfileスキーマでリポジトリから参照する


下記参考リンクのスキーマを満たす方法がいろいろある
https://gihyo.jp/admin/serial/01/ubuntu-recipe/0677#sec2

いざ検証

方法1(3.1に該当)

※厳密な手順はこちら(http://nginx.org/en/linux_packages.html#Ubuntu)

APTリポジトリのGPG鍵を取得して登録gpgコマンドでデコードをしてnginx-archive-keyring.gpgを作成しました。なおgpgキーは登録したAPTリポジトリからダウンロードするパッケージの正当性を証明するために使われます

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

sources.list.dに新しく作るほうがいいです(推奨)。あえて変化球でsources.listにリポジトリのフォーマットに基づいて登録します

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list
# リポジトリを追加したのであぷで
apt update
apt list | grep nginx

最後のコマンドでnginxのパッケージ一覧確認したが私は下記のnginxが含まれていた
nginx/stable,now 1.23.3-1~jammy amd64 [residual-config]
あとはsudo apt install nginxとすればインストールされる

方法2(3.2に該当)

※ぶっちゃけこちらの方のほうが丁寧に説明してる(https://gihyo.jp/admin/serial/01/ubuntu-recipe/0677#sec5)
今回は試しにnginx_1.21.6-1~jammy_amd64.debを使う

sudo mkdir -p /srv/apt/repository/nginx_1.21.6
sudo chown $USER: /srv/apt/repository/nginx_1.21.6
cd /srv/apt/repository/nginx_1.21.6
wget http://nginx.org/packages/mainline/ubuntu/pool/nginx/n/nginx/nginx_1.21.6-1~jammy_amd64.deb

下記コマンドで対象リポジトリのメタデータ作成(sudo suに切り替えた)

apt-ftparchive packages . > Packages
echo "deb [trusted=yes] file:///srv/apt/repository/nginx_1.21.6/ ./" \
  | sudo tee /etc/apt/sources.list.d/local.list
sudo apt update

最後のコマンドでnginxのパッケージ一覧確認したが私は下記のnginxが含まれていた
nginx/unknown 1.21.6-1~jammy amd64 [upgradable from: 1.18.0-6ubuntu14.3]
あとはsudo apt install nginxとすればインストールされる

裏方法

aptで直接リポジトリ指定 | dpkg -i で指定(dpkg -i は一般的な方法なので割愛)
実はわざわざリポジトリを作成しなくても直接下記のようにリポジトリをインストールするだけでnginxを使えるようになる

apt install /srv/apt/repository/nginx_1.21.6/nginx_1.21.6-1~jammy_amd64.deb

以下は↑コマンド結果抜粋

# aptコマンドで取得するパッケージの一個目を表す
Get:1 /srv/apt/repository/nginx_1.21.6/nginx_1.21.6-1~jammy_amd64.deb nginx amd64 1.21.6-1~jammy [1002 kB]

# nginxをインストールする都合でサービスの設定を一部書き換えている
Service restarts being deferred:
 systemctl restart networkd-dispatcher.service
 systemctl restart unattended-upgrades.service
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?