パッケージ管理 - Arch 系 pacman - 操作

 クラウディア
1. 基本
2. データベース更新
3. 検索
4. パッケージインストール
5. 削除 yay
6. 削除 pacman
7. アップグレード

1. 基本

 もっとも基本となる形は

pacman <オペレーション> [...]
 だそうです。

$ pacman -h
使用方法:  pacman <オペレーション> [...]
オペレーション:
    pacman {-h --help}
    pacman {-V --version}
    pacman {-D --database} <オプション> <パッケージ>
    pacman {-F --files}    [オプション] [パッケージ]
    pacman {-Q --query}    [オプション] [パッケージ]
    pacman {-R --remove}   [オプション] <パッケージ>
    pacman {-S --sync}     [オプション] [パッケージ]
    pacman {-T --deptest}  [オプション] [パッケージ]
    pacman {-U --upgrade}  [オプション] <ファイル>

オペレーションと一緒に 'pacman {-h --help}' を使うことでオプションを一覧できます

2. データベース更新

 検索が「pacman -Fs ファイル名」らしい(後で、データベースの検索らしいことが判明)ので、やってみると

$ pacman -Fs net-tools
警告: database file for 'core' does not exist (use '-Fy' to download)
警告: database file for 'extra' does not exist (use '-Fy' to download)
警告: database file for 'community' does not exist (use '-Fy' to download)
警告: database file for 'multilib' does not exist (use '-Fy' to download)
 なんだかデータベースをダウンロードするなり、更新するなりしなければならないらしい・・・。

$ pacman -Fy
:: パッケージデータベースの同期中...
 core                   1397.9 KiB   534K/s 00:03 [############################################] 100%
 extra                     8.6 MiB   929K/s 00:10 [############################################] 100%
 community                22.5 MiB   991K/s 00:23 [############################################] 100%
 multilib                291.9 KiB  1042K/s 00:00 [############################################] 100%

3. 検索


pacman -F  パッケージ名	← データベースを検索
pacman -Ss パッケージ名	← リモートのリポジトリを検索
pacman -Qs パッケージ名	← インストール済のパッケージを検索
 いずれも「パッケージ名」は一部分でも可能です。  実際にやってみます。

$ pacman -Fs ifconfig
core/net-tools 1.60.20180212git-1
    usr/bin/ifconfig
 なるほど、「『ifconfig』は『core/net-tools』の 中にあります」ちゅうことですね。  ただし、このオプション、覚えにくいです。  「pacman」あるところ、「pamac」が存在し、「pamac」は、検索であれば、コマンドラインからも使えます。

pamac search パッケージ名
 こっちの方が、スペルが長いようでいて、覚えやすいです。

4. パッケージインストール


pacman -S パッケージ名
 だそうな。  実際にやってみます。

$ pacman -S net-tools
:: Some packages should be upgraded first...
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (2) archlinux-keyring-20190123-2  manjaro-system-20190124-3

合計ダウンロード容量:  0.67 MiB
合計インストール容量:  0.95 MiB
最終的なアップグレード容量:  0.09 MiB

:: インストールを行いますか? [Y/n] y
:: パッケージを取得します...
 archlinux-keyring-20190123-2-any    685.1 KiB   268K/s 00:03 [############################################] 100%
 manjaro-system-20190124-3-any         4.4 KiB  0.00B/s 00:00 [############################################] 100%
(2/2) キーリングのキーを確認                                  [############################################] 100%
(2/2) パッケージの整合性をチェック                            [############################################] 100%
(2/2) パッケージファイルのロード                              [############################################] 100%
(2/2) ファイルの衝突をチェック                                [############################################] 100%
(2/2) 空き容量を確認                                          [############################################] 100%
:: パッケージの変更を処理しています...
(1/2) 更新 archlinux-keyring                                  [############################################] 100%
==> archlinux.gpg からキーを追加...
==> キーリングの信頼されたキーに署名...
  -> キーに署名 DDB867B92AA789C165EEFA799B729B06A680C281...

・・・	略	・・・

  -> キーに署名 D8AFDDA07A5B6EDFA7D8CCDAD6D055F927843F1C...
==> 所有者信頼値をインポート...
gpg: inserting ownertrust of 4
==> キーリングの破棄されたキーを無効化...
  -> キー 7FA647CD89891DEDC060287BB9113D1ED21E1A55 を無効化...

・・・	略	・・・

  -> キー 8840BD07FC24CB7CE394A07CCF7037A4F27FB7DA を無効化...
==> 信用データベースを更新...
gpg: 次回の信用データベース検査は、2019-06-02です
(2/2) 更新 manjaro-system                                     [############################################] 100%
:: トランザクション後のフックを実行...
(1/1) Arming ConditionNeedsUpdate...

依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (1) net-tools-1.60.20180212git-1

合計ダウンロード容量:  0.13 MiB
合計インストール容量:  0.50 MiB

:: インストールを行いますか? [Y/n] y
:: パッケージを取得します...
 net-tools-1.60.20180212git-1-x86_64 128.8 KiB   189K/s 00:01 [############################################] 100%
(1/1) キーリングのキーを確認                                  [############################################] 100%
(1/1) パッケージの整合性をチェック                            [############################################] 100%
(1/1) パッケージファイルのロード                              [############################################] 100%
(1/1) ファイルの衝突をチェック                                [############################################] 100%
(1/1) 空き容量を確認                                          [############################################] 100%
:: パッケージの変更を処理しています...
(1/1) インストール net-tools                                  [############################################] 100%
:: トランザクション後のフックを実行...
(1/1) Arming ConditionNeedsUpdate...
 てな感じで、無事インストールでけたようです。

5. 削除 yay

 削除は、「How to Install and Remove Packages in Arch Linux」によれば、「pacman」でないのである。  そういえば、今日(2021年9月3日)まで、削除したことなかったな・・・。  参考サイトの通りにするならば

yay -R パッケージ名
 なのだ。  しかもこれ、「sudo」や「root」ユーザ権限でやっちゃいけなくれ。  実際に、「EndeavourOS 2021.08.27」で「code(Visual Studio Code)」を「root」ユーザ権限で消そうとしたら

$ yay -R code
 -> yay を root や sudo で実行しないでください。
 てなこと言われちゃいましたので、ログインユーザでやり直し。

$ yay -R code
[sudo] hogehoge のパスワード:
依存関係を確認しています...

パッケージ (1)  古いバージョン  最終的な変化

code            1.58.0-1          -87.22 MiB

合計削除容量:  87.22 MiB

:: 以上のパッケージを削除しますか? [Y/n] y
:: パッケージの変更を処理しています...
(1/1) 削除 code                                                       [--------------------------------------] 100%
:: トランザクション後のフックを実行...
(1/2) Arming ConditionNeedsUpdate...
(2/2) Updating the desktop file MIME type cache...
 なるほど、コマンド自体が、「sudo」を使用するのであるな。  まぁ、無事に削除できたようです。

6. 削除 pacman

 前項は、書いた当時のわたしの勉強不足で、「pacman」でも削除できます。  削除の基本は

pacman -R パッケージ名
 依存パッケージを同時に削除するには

pacman -Rs パッケージ名
 さらに

pacman -Rsc パッケージ名
 ちゅうのもありますが、最後は何まで削除するのは忘れちゃいました。  削除途中で

以上のパッケージを削除しますか? [Y/n]
 の問い合わせには Enter で答えます。

7. アップグレード

 アップグレードは、

pacman -Syu
 2022年3月7日、「Garuda Linux 211129 WayFire」で、上記を実行すると

:: wlroots (0.15.1-3) をインストールすると 'wlroots<0.15' が破壊され wayfire の依存関係が壊れます
 と言われて、更新できない。  更新できないと、インストールできないパッケージがあって、困ったりします。  「wlroots」だけ、更新しないようにします。

vi /etc/pacman.conf

# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
# IgnorePkg  =
#IgnoreGroup =
 25行目を下記のように変えます。

IgnorePkg   = wlroots
 これで、更新できるようになります。  ちと気をつけたいのが

pacman -Fy
pacman -Syu
 を頻繁に行うと、ネットワークの使用量がぐんと上がるし、トラフィックにも影響が出るかもしれません。  どうも、「ArchLinux」系の管理者(?開発者?)たちは、ネットワークのリソースが無尽蔵にあるかと思っているようです。  数時間くらい後に、上掲のコマンドを実行すると、「1GB」超のパッケージをダウンロードしにいって、それらをインストールするようです。  どっかのブラウザと一緒ですね。  何かのパッケージをリリースるのが数10分とか数時間おきになっているようです。  でまた、それらをインストールするのが、全とっかえのように見えます。  もう少し、気を落ち着けてくれないものでしょうか?
ハイスピードプラン神戸養蜂場マイニングベース健康サポート特集【usus ウズウズ】