LoginSignup
1
2

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-02-01

はじめに

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

前回まで:Linux入門 3-8


3. LinuC 101 Ver .10.0(問題、テスト、演習)

リポジトリとパッケージ管理

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

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

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

併用するオプション
--nodeps: 依存関係を無視
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

[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 コマンドによるパッケージ管理

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パッケージの状態を再設定できる対話的にパッケージを再設定する
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 パッケージ名: パッケージが依存したパッケージ一覧を表示
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を用いて検証していく。

[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


1
2
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
1
2