Linux入門 3-9 リポジトリとパッケージ管理 (yum, apt)

[](参照ソース)
[Udemyの動画講座]:https://www.udemy.com/course/linuxlpic/?utm_source=bene-content-marketing&utm_campaign=normal&utm_content=story&utm_term=career&utm_medium=udemyads
[Linux入門 3-8]:https://qiita.com/hoglet/items/34bf1c9b93bdb917ea1c
[Linux入門 3-10]:https://qiita.com/hoglet/items/1327215b771e6a3e08f7

# はじめに
Linux初学者である自分向け用の記事です。[Udemyの動画講座]を参考にしました。
僕の勉強法は`動画を見る`→`実際に動かしてみる`→`問題演習`という流れです。

前回まで：[Linux入門 3-8]

***
# 3. LinuC 101 Ver .10.0(問題、テスト、演習)
# リポジトリとパッケージ管理

## RPMパッケージ管理, yumコマンドによるパッケージ管理

```s
RPM: レッドハット社が開発したパッケージ管理方式
rpm: RPMパッケージを管理(インストール、アップグレード、削除、検索)するためのコマンド
-----------------------------------------------------------------------------------
–i(--install): パッケージをインストール
–U(--upgrade): パッケージをアップグレード(存在しない場合インストールする)
–F(--freshen): パッケージをアップグレード(存在しない場合インストールしない)

上と併用するオプション
–h(--hash): インストールの進捗状況を表示
–v: 詳細情報を表示
–-nodeps: 依存関係を無視してインストール
-–prefix: インストールするディレクトリを指定
–-relocate: インストール済みのパッケージをディレクトリ変更して再インストール
–e(--erase): パッケージを削除

併用するオプション
--nodeps: 依存関係を無視
```
```s
yum: RedHat系で用いられるRPMパッケージの管理ツール
-----------------------------------------------------------------------------------
check-update: アップデート可能なパッケージを表示
update パッケージ名: 指定したパッケージをアップデート(パッケージ名を省略した場合はupdate可能なもの全てupdate)
install パッケージ名: パッケージをインストール
remove パッケージ名: パッケージをアンインストール
info パッケージ名: パッケージの情報を表示
list: 全パッケージを表示
search: 指定したパッケージを検索
grouplist: パッケージグループの一覧を表示
groupinstall: 指定したグループをインストール
provides: 指定したファイルが含まれるパッケージを検索する

/etc/yum.conf: yumで使用する設定ファイル。
/etc/yum.repos.d/: yumコマンドで使用されるリポジトリ情報が格納される。RPMリポジトリのダウンロード先を追加したい場合は、ファイルをこのディレクトリに追加する。リポジトリとはパッケージの保存場所。このディレクトリ内の情報を元にパッケージをインストールする

yumdownloader: RPMパッケージをインストールせずにダウンロードのみを行うコマンド。
yumdownloader –-source: RPMでなくソースファイルをダウンロードする
```

## 実行環境で確認。

`https://centos.pkgs.org/8/okey-x86_64/httpd-2.4.37-12.el8.x86_64.rpm.html`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/ccc4fa64-e297-565a-dede-34d777926ff0.png)

```s
[root@localhost ~]# rpm -ivh http://repo.okay.com.mx/centos/8/x86_64/release/httpd-2.4.37-12.el8.x86_64.rpm
http://repo.okay.com.mx/centos/8/x86_64/release/httpd-2.4.37-12.el8.x86_64.rpm を取得中
警告: /var/tmp/rpm-tmp.iGv4hq: ヘッダー V4 RSA/SHA256 Signature、鍵 ID 13d0a55d: NOKEY
エラー: 依存性の欠如:
        /etc/mime.types は httpd-2.4.37-12.el8.x86_64 に必要とされています
        httpd-filesystem は httpd-2.4.37-12.el8.x86_64 に必要とされています
        httpd-filesystem = 2.4.37-12.el8 は httpd-2.4.37-12.el8.x86_64 に必要とされています
        httpd-tools = 2.4.37-12.el8 は httpd-2.4.37-12.el8.x86_64 に必要とされています
        libapr-1.so.0()(64bit) は httpd-2.4.37-12.el8.x86_64 に必要とされています
        libaprutil-1.so.0()(64bit) は httpd-2.4.37-12.el8.x86_64 に必要とされています
        mod_http2 は httpd-2.4.37-12.el8.x86_64 に必要とされています
        system-logos-httpd は httpd-2.4.37-12.el8.x86_64 に必要とされています
[root@localhost ~]# rpm -V httpd
パッケージ httpd はインストールされていません
[root@localhost ~]# yum install httpd
Docker CE Stable - x86_64                                                        36 kB/s | 3.5 kB     00:00
依存関係が解決しました。
================================================================================================================
 パッケージ                Arch          バージョン                                      リポジトリー     サイズ
================================================================================================================
インストール:
 httpd                     x86_64        2.4.37-43.module_el8.5.0+1022+b541f3b1          appstream        1.4 M
依存関係のインストール:
 apr                       x86_64        1.6.3-12.el8                                    appstream        129 k
 apr-util                  x86_64        1.6.1-6.el8                                     appstream        105 k
 centos-logos-httpd        noarch        85.8-2.el8                                      baseos            75 k
 httpd-filesystem          noarch        2.4.37-43.module_el8.5.0+1022+b541f3b1          appstream         39 k
 httpd-tools               x86_64        2.4.37-43.module_el8.5.0+1022+b541f3b1          appstream        107 k
 mailcap                   noarch        2.1.48-3.el8                                    baseos            39 k
 mod_http2                 x86_64        1.15.7-3.module_el8.4.0+778+c970deab            appstream        154 k
弱い依存関係のインストール:
 apr-util-bdb              x86_64        1.6.1-6.el8                                     appstream         25 k
 apr-util-openssl          x86_64        1.6.1-6.el8                                     appstream         27 k
モジュールストリームの有効化中:
 httpd                                   2.4
トランザクションの概要
...
インストール済み:
  apr-1.6.3-12.el8.x86_64
  apr-util-1.6.1-6.el8.x86_64
  apr-util-bdb-1.6.1-6.el8.x86_64
  apr-util-openssl-1.6.1-6.el8.x86_64
  centos-logos-httpd-85.8-2.el8.noarch
  httpd-2.4.37-43.module_el8.5.0+1022+b541f3b1.x86_64
  httpd-filesystem-2.4.37-43.module_el8.5.0+1022+b541f3b1.noarch
  httpd-tools-2.4.37-43.module_el8.5.0+1022+b541f3b1.x86_64
  mailcap-2.1.48-3.el8.noarch
  mod_http2-1.15.7-3.module_el8.4.0+778+c970deab.x86_64
完了しました!
[root@localhost ~]# yum info httpd
メタデータの期限切れの最終確認: 0:01:26 時間前の 2022年01月07日 02時48分36秒 に実施しました。
インストール済みパッケージ
名前         : httpd
バージョン   : 2.4.37
リリース     : 43.module_el8.5.0+1022+b541f3b1
Arch         : x86_64
サイズ       : 4.3 M
ソース       : httpd-2.4.37-43.module_el8.5.0+1022+b541f3b1.src.rpm
リポジトリー : @System
repo から    : appstream
概要         : Apache HTTP Server
URL          : https://httpd.apache.org/
ライセンス   : ASL 2.0
説明         : The Apache HTTP Server is a powerful, efficient, and extensible
             : web server.

[root@localhost ~]#
```

## Debianパッケージ管理, apt コマンドによるパッケージ管理

```s
dpkg: Debianのパッケージを管理するためのコマンド
–i(--install) パッケージ名: パッケージ をインストール
–r(--remove) パッケージ名: 設定ファイルを残してパッケージを削除
–p(--purge) パッケージ名: 設定ファイルを含めてパッケージを削除
–l(--list): インストール済みのパッケージ一覧を表示
–L(--listfiles) パッケージ名: パッケージによってインストールされたファイル一覧を表示
–I(--info) アーカイブ名: 指定したパッケージのアーカイブ情報を表示
–c(--contents) パッケージ名: パッケージに含まれるファイル一覧を表示
–C(--audit) パッケージ名: パッケージのインストール状態の確認
–s(--status) パッケージ名: パッケージの詳細情報を表示
–S(--search) パッケージ名: 指定した文字列に一致するパッケージを表示

その他オプション
–E: 同じバージョンがインストール済みの場合はインストールしない
–G: システムにインストールされているパッケージが最新の場合、インストールしない

dpkg-reconfigure: すでにインストールされたdebパッケージの状態を再設定できる。対話的にパッケージを再設定する。
```
```s
APT(Advanced Package Tool): dpkgコマンドを拡張した高機能なツール。パッケージ間の依存関係を解決しながらリポジトリというパッケージ管理サイトから、最新のパッケージをダウンロード・インストールできる。

apt-get: APTを使ってパッケージを管理するコマンド（aptコマンドの方が新しいので推奨）
autoclean: ダウンロードしたパッケージから最新版以外を削除
clean: ダウンロードしたパッケージを削除
install パッケージ名: パッケージをインストール or 更新
remove パッケージ名: パッケージを削除
update: パッケージリスト情報を最新に更新
dist-upgrate: Linuxディストリビューションを最新版にアップグレード
upgrade: 全パッケージを最新版にアップグレード

/etc/apt/sources.list: パッケージのダウンロード元を設定したファイル

apt-cache: パッケージの情報の照会やパッケージの依存関係を表示するコマンド
search キーワード: 指定したキーワードを含むパッケージを検索
show パッケージ名: パッケージ情報の表示
showpkg パッケージ名: パッケージに依存したパッケージ一覧を表示
depends パッケージ名: パッケージが依存したパッケージ一覧を表示
```
```s
aptコマンド: apt-getとapt-cacheコマンドを組み合わたようなコマンド。最近はパッケージインストール時にはapt-getでなくaptコマンドが推奨されている

-c 設定ファイル: /etc/apt/sources.list以外の設定ファイルを指定したい場合に利用するオプション
-d: installと併用して用いてパッケージのダウンロードのみを行う
-y: 問い合わせに対して自動的にYesと応答する

list: パッケージのリストを表示する
list --installed: インストールされたパッケージの一覧をリスト表示する
list --upgradable: アップグレード可能なパッケージをリスト表示する
update: パッケージリスト情報を最新に更新
clean: ダウンロードしたパッケージを削除
install パッケージ名: パッケージをインストール or 更新
remove パッケージ名: パッケージを設定ファイルは残して削除
purge パッケージ名: パッケージを設定ファイルを含め完全に削除する
upgrade: インストール済みのパッケージをまとめて更新する
full-upgrade: システムのメジャーバージョンを最新版にアップグレードする
search キーワード: パッケージの説明文からキーワードを検索して該当するパッケージを表示する
autoremove: 必要とされていないパッケージを自動削除する

apti-file: 指定したファイルを含むパッケージを検索する。必要なファイルはわかるがパッケージはわからないという場合に用いる
apt-fileのインストール: apt install apt-file
apt-file update: パッケージ情報を更新する
apt-file search: ファイルが含まれるパッケージを検索する
```

Dockerを用いて検証していく。

```s
[root@localhost ~]# docker run -it ubuntu
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
ea362f368469: Pull complete
Digest: sha256:b5a61709a9a44284d88fb12e5c48db0409cfad5b69d4ff8224077c57302df9cf
Status: Downloaded newer image for ubuntu:latest
root@5fd5595cc0a5:/#
root@5fd5595cc0a5:/#
root@5fd5595cc0a5:/#
root@5fd5595cc0a5:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
```

*To Be Continued...*
[Linux入門 3-10] へ
***