GNU/Linux >> Linux の 問題 >  >> Linux

パッケージマネージャーの進化

すべてのコンピューター化されたデバイスは、意図されたタスクを実行するために何らかの形式のソフトウェアを使用します。ソフトウェアの初期の頃、製品はバグやその他の欠陥について厳密にテストされていました。過去10年ほどの間、ソフトウェアはインターネットを介してリリースされており、ソフトウェアの新しいバージョンを適用することでバグを修正することを目的としています。場合によっては、個々のアプリケーションに独自のアップデータがあります。また、ソフトウェアの入手方法とアップグレード方法を理解するのはユーザーの責任です。

Linuxは、ユーザーがソフトウェアを見つけてインストールできる一元化された場所を維持するという慣行を早期に採用しました。この記事では、Linuxでのソフトウェアのインストールの歴史と、CVEの終わりのない急流に対して最新のオペレーティングシステムを最新の状態に保つ方法について説明します。

パッケージマネージャーの前にLinux上のソフトウェアはどのようにインストールされましたか?

歴史的に、ソフトウェアはFTPまたはメーリングリストのいずれかを介して提供されていました(最終的に、このディストリビューションは基本的なWebサイトを含むように成長します)。バイナリを作成するための指示が含まれている小さなファイルはごくわずかです(通常はtarファイル内)。ファイルを解凍し、readmeを読み、GCCまたは他の形式のCコンパイラがある限り、通常は./configureを実行します。 ライブラリファイルへのパス、新しいバイナリを作成する場所など、属性のリストを含むスクリプト。さらに、configure プロセスは、アプリケーションの依存関係についてシステムをチェックします。主要な要件が欠落している場合、configureスクリプトは終了し、すべての依存関係が満たされるまでインストールを続行できませんでした。構成スクリプトが正常に完了した場合は、Makefile 作成されます。

一度Makefile 存在する場合は、makeの実行に進みます コマンド(このコマンドは、使用していたコンパイラーによって提供されます)。 make コマンドには、フラグの作成と呼ばれるいくつかのオプションがあります 、システムの結果のバイナリを最適化するのに役立ちます。コンピューティングの初期には、ハードウェアが最新のソフトウェアの需要に追いつくのに苦労していたため、これは非常に重要でした。現在、ほとんどのハードウェアは最新のソフトウェアには十分すぎるため、コンパイルオプションははるかに一般的です。

最後に、makeの後 プロセスが完了したら、make installを実行する必要があります (またはsudo make install )実際にソフトウェアをインストールするため。ご想像のとおり、ソフトウェアのすべての部分に対してこれを行うことは、時間と手間がかかりました。ソフトウェアの更新が複雑で、潜在的に非常に複雑なプロセスであったことは言うまでもありません。

パッケージとは何ですか?

パッケージは、この複雑さに対抗するために考案されました。パッケージは、複数のデータファイルを1つのアーカイブファイルにまとめて移植性とストレージを容易にするか、ファイルを圧縮してストレージスペースを削減します。パッケージに含まれているバイナリは、開発者が選択した適切なデフォルトに従ってプリコンパイルされています。パッケージには、ソフトウェアの名前、目的の説明、バージョン番号、ソフトウェアを正しく実行するために必要な依存関係のリストなどのメタデータも含まれています。

Linuxのいくつかのフレーバーは、独自のパッケージ形式を作成しています。最も一般的に使用されるパッケージ形式には、次のものがあります。

  • .deb:このパッケージ形式は、Debian、Ubuntu、Linux Mint、およびその他のいくつかの派生物で使用されています。これは、作成された最初のパッケージタイプでした。
  • .rpm:このパッケージ形式は元々Red HatPackageManagerと呼ばれていました。これは、Red Hat、Fedora、SUSE、およびその他のいくつかの小規模なディストリビューションで使用されています。
  • .tar.xz:これは単なる圧縮されたtarballですが、これはArchLinuxが使用する形式です。

パッケージ自体は依存関係を直接管理しませんが、Linuxソフトウェア管理の大きな前進を表しています。

ソフトウェアリポジトリとは何ですか?

数年前、スマートフォンが普及する前は、ソフトウェアリポジトリのアイデアは、多くのユーザーがLinuxエコシステムに関与していないかどうかを把握するのが困難でした。今日でも、ほとんどのWindowsユーザーは、新しいソフトウェアを検索してインストールするためにWebブラウザーを開くのに苦労しているようです。しかし、スマートフォンを持っている人は、ソフトウェアの「ストア」のアイデアに慣れてきました。スマートフォンユーザーがソフトウェアを入手する方法とパッケージマネージャーが機能する方法は同じです。ソフトウェアリポジトリ用の魅力的なUIを作成するためのいくつかの試みがありましたが、Linuxユーザーの大多数は依然としてコマンドラインを使用してパッケージをインストールしています。ソフトウェアリポジトリは、システムが使用するように構成されているリポジトリで利用可能なすべてのソフトウェアの集中リストです。以下は、リポジトリで特定のパッケージを検索する例です(簡潔にするために、これらは切り捨てられていることに注意してください)。

aurmanを使用したArchLinux

user@arch ~ $  aurman -Ss kate

extra/kate 18.04.2-2 (kde-applications kdebase)
    Advanced Text Editor
aur/kate-root 18.04.0-1 (11, 1.139399)
    Advanced Text Editor, patched to be able to run as root
aur/kate-git r15288.15d26a7-1 (1, 1e-06)
    An advanced editor component which is used in numerous KDE applications requiring a text editing component

YUMを使用したCentOS7

[user@centos ~]$ yum search kate

kate-devel.x86_64 : Development files for kate
kate-libs.x86_64 : Runtime files for kate
kate-part.x86_64 : Kate kpart plugin

APTを使用したUbuntu

user@ubuntu ~ $ apt search kate
Sorting... Done
Full Text Search... Done

kate/xenial 4:15.12.3-0ubuntu2 amd64
  powerful text editor

kate-data/xenial,xenial 4:4.14.3-0ubuntu4 all
  shared data files for Kate text editor

kate-dbg/xenial 4:15.12.3-0ubuntu2 amd64
  debugging symbols for Kate

kate5-data/xenial,xenial 4:15.12.3-0ubuntu2 all
  shared data files for Kate text editor

最も著名なパッケージマネージャーは何ですか?

上記の出力で示唆されているように、パッケージマネージャーはソフトウェアリポジトリと対話するために使用されます。以下は、最も著名なパッケージマネージャーの概要です。

RPMベースのパッケージマネージャー

RPMベースのシステム、特にRed Hatテクノロジーに基づくシステムの更新には、非常に興味深く詳細な歴史があります。実際、yum(エンタープライズディストリビューション用)とDNF(コミュニティ用)の現在のバージョンは、いくつかのオープンソースプロジェクトを組み合わせて現在の機能を提供しています。

当初、Red HatはRPM(Red Hat Package Manager)と呼ばれるパッケージマネージャーを使用していましたが、現在も使用されています。ただし、その主な用途は、ソフトウェアリポジトリを検索することではなく、ローカルにあるRPMをインストールすることです。 up2dateという名前のパッケージマネージャー パッケージの更新をユーザーに通知し、リモートリポジトリを検索して、依存関係を簡単にインストールできるようにするために作成されました。それはその目的を果たしましたが、一部のコミュニティメンバーはup2date いくつかの重大な欠点がありました。

現在のyumの呪文は、いくつかの異なるコミュニティの取り組みから生まれました。 Yellowdog Updater(YUP)は、Yellow Dog Linuxのグラフィカルインストーラーのバックエンドエンジンとして、TerraSoftSolutionsの人々によって1999年から2001年に開発されました。デューク大学はYUPのアイデアを気に入り、それを改善することにしました。彼らはYellowdogUpdater、Modified(yum)を作成し、最終的には大学のRedHatLinuxシステムの管理に役立てました。 Yumの人気は高まり、2005年までにLinux市場の半分以上で使用されると推定されました。現在、RPMを使用するLinuxのほぼすべてのディストリビューションは、パッケージ管理にyumを使用しています(いくつかの注目すべき例外を除く)。

yumの操作

yumがインターネットリポジトリからパッケージをダウンロードしてインストールするには、ファイルが/etc/yum.repos.d/にある必要があります。 拡張子は.repoである必要があります 。リポジトリファイルの例を次に示します。

[local_base]
name=Base CentOS  (local)
baseurl=http://7-repo.apps.home.local/yum-repo/7/
enabled=1
gpgcheck=0

これは私のローカルリポジトリの1つであり、GPGチェックがオフになっている理由を説明しています。このチェックがオンの場合、各パッケージは暗号化キーで署名する必要があり、対応するキーを更新を受信するシステムにインポートする必要があります。私はこのリポジトリを自分で管理しているので、パッケージを信頼し、わざわざ署名する必要はありません。

リポジトリファイルが配置されると、リモートリポジトリからパッケージのインストールを開始できます。最も基本的なコマンドはyum update 、現在インストールされているすべてのパッケージを更新します。これは リポジトリに関する情報を更新するには、特定の手順が必要です。これは自動的に行われます。コマンドのサンプルを以下に示します。

[user@centos ~]$ sudo yum update
Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-manager
local_base                             | 3.6 kB  00:00:00    
local_epel                             | 2.9 kB  00:00:00    
local_rpm_forge                        | 1.9 kB  00:00:00    
local_updates                          | 3.4 kB  00:00:00    
spideroak-one-stable                   | 2.9 kB  00:00:00    
zfs                                    | 2.9 kB  00:00:00    
(1/6): local_base/group_gz             | 166 kB  00:00:00    
(2/6): local_updates/primary_db        | 2.7 MB  00:00:00    
(3/6): local_base/primary_db           | 5.9 MB  00:00:00    
(4/6): spideroak-one-stable/primary_db |  12 kB  00:00:00    
(5/6): local_epel/primary_db           | 6.3 MB  00:00:00    
(6/6): zfs/x86_64/primary_db           |  78 kB  00:00:00    
local_rpm_forge/primary_db             | 125 kB  00:00:00    
Determining fastest mirrors
Resolving Dependencies
--> Running transaction check

yumに入力を停止せずにコマンドを実行させたい場合は、-yを入力できます。 yum update -yなどのコマンドのフラグ 。

新しいパッケージのインストールも同様に簡単です。まず、yum searchでパッケージの名前を検索します :

[user@centos ~]$ yum search kate

artwiz-aleczapka-kates-fonts.noarch : Kates font in Artwiz family
ghc-highlighting-kate-devel.x86_64 : Haskell highlighting-kate library development files
kate-devel.i686 : Development files for kate
kate-devel.x86_64 : Development files for kate
kate-libs.i686 : Runtime files for kate
kate-libs.x86_64 : Runtime files for kate
kate-part.i686 : Kate kpart plugin

パッケージの名前を取得したら、sudo yum install kate-devel -yを使用してパッケージをインストールするだけです。 。不要になったパッケージをインストールした場合は、sudo yum remove kate-devel -yを使用して削除できます。 。デフォルトでは、yumはパッケージとその依存関係を削除します。

パッケージの名前はわからないが、ユーティリティの名前はわかっている場合があります。たとえば、ユーティリティupdatedbを探しているとします。 、locateによって使用されるデータベースを作成/更新します 指図。 updatedbをインストールしようとしています 次の結果を返します:

[user@centos ~]$ sudo yum install updatedb
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
No package updatedb available.
Error: Nothing to do

次のコマンドを実行すると、ユーティリティのパッケージを確認できます。

[user@centos ~]$ yum whatprovides *updatedb
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile

bacula-director-5.2.13-23.1.el7.x86_64 : Bacula Director files
Repo        : local_base
Matched from:
Filename    : /usr/share/doc/bacula-director-5.2.13/updatedb

mlocate-0.26-8.el7.x86_64 : An utility for finding files by name
Repo        : local_base
Matched from:
Filename    : /usr/bin/updatedb

アスタリスクを使用した理由* コマンドの前にあるのは、yum whatprovides 一致させるためにファイルへのパスを使用します。ファイルの場所がわからなかったため、パスを示すためにアスタリスクを使用しました。

もちろん、yumで利用できるオプションは他にもたくさんあります。追加のオプションについては、yumのマニュアルページを参照することをお勧めします。

Dandified Yum(DNF)は、yumの新しいイテレーションです。 Fedora 18で導入され、エンタープライズディストリビューションではまだ採用されていないため、主にFedora(および派生物)で使用されています。その使用法はyumの使用法とほぼ同じですが、パフォーマンスの低下、文書化されていないAPI、依存関係の解決が遅い/壊れている、メモリ使用量が多い場合に対処するために構築されました。 DNFは、yumのドロップイン置換として使用されるため、yumを使用する場合は、コマンドを繰り返しません。 、単にdnfに置き換えてください 。

Zypperの操作

Zypperは、RPMの管理を支援することを目的とした別のパッケージマネージャーです。このパッケージマネージャーは、最も一般的にSUSE(およびopenSUSE)に関連付けられていますが、MeeGo、Sailfish OS、およびTizenでも採用されています。もともとは2006年に導入され、それ以来繰り返されてきました。 Zypperがシステム管理ツールYaSTのバックエンドとして使用されていることを除けば、言うことはあまりありません。一部のユーザーは、Zypperがyumよりも高速であると感じています。

Zypperの使用法はyumの使用法と非常に似ています。パッケージを検索、更新、インストール、または削除するには、次を使用します。

zypper search kate
zypper update
zypper install kate
zypper remove kate

zypperを使用してリポジトリをシステムに追加する方法には、いくつかの大きな違いがあります。 。上記のパッケージマネージャーとは異なり、zypper パッケージマネージャー自体を使用してリポジトリを追加します。最も一般的な方法はURLを使用することですが、zypper リポジトリファイルからのインポートもサポートしています。

suse:~ # zypper addrepo http://download.videolan.org/pub/vlc/SuSE/15.0 vlc
Adding repository 'vlc' [done]
Repository 'vlc' successfully added

Enabled     : Yes
Autorefresh : No
GPG Check   : Yes
URI         : http://download.videolan.org/pub/vlc/SuSE/15.0
Priority    : 99

同様の方法でリポジトリを削除します:

suse:~ # zypper removerepo vlc
Removing repository 'vlc' ...................................[done]
Repository 'vlc' has been removed.

zypper reposを使用します システム上のリポジトリのステータスを確認するコマンド:

suse:~ # zypper repos
Repository priorities are without effect. All enabled repositories share the same priority.

#  | Alias                     | Name                                    | Enabled | GPG Check | Refresh
---+---------------------------+-----------------------------------------+---------+-----------+--------
 1 | repo-debug                | openSUSE-Leap-15.0-Debug                | No      | ----      | ----  
 2 | repo-debug-non-oss        | openSUSE-Leap-15.0-Debug-Non-Oss        | No      | ----      | ----  
 3 | repo-debug-update         | openSUSE-Leap-15.0-Update-Debug         | No      | ----      | ----  
 4 | repo-debug-update-non-oss | openSUSE-Leap-15.0-Update-Debug-Non-Oss | No      | ----      | ----  
 5 | repo-non-oss              | openSUSE-Leap-15.0-Non-Oss              | Yes     | ( p) Yes  | Yes    
 6 | repo-oss                  | openSUSE-Leap-15.0-Oss                  | Yes     | ( p) Yes  | Yes    

zypper どのパッケージ名にファイルまたはバイナリが含まれているかを判断する同様の機能もあります。 YUMとは異なり、コマンドでハイフンを使用します(ただし、この検索方法は非推奨です):

localhost:~ # zypper what-provides kate
Command 'what-provides' is replaced by 'search --provides --match-exact'.
See 'help search' for all available options.
Loading repository data...
Reading installed packages...

S  | Name | Summary              | Type      
---+------+----------------------+------------
i+ | Kate | Advanced Text Editor | application
i  | kate | Advanced Text Editor | package  

YUMやDNFと同様に、Zypperにはここで説明するよりもはるかに豊富な機能セットがあります。詳細については、公式ドキュメントを参照してください。

Debianベースのパッケージマネージャー

現在維持されている最も古いLinuxディストリビューションの1つである、DebianのシステムはRPMベースのシステムと非常によく似ています。 .debを使用します パッケージ。dpkgと呼ばれるツールで管理できます。 。 dpkg rpmと非常によく似ています ローカルで利用可能なパッケージを管理するように設計されているという点で。依存関係の解決は行われず(依存関係のチェックは行われますが)、リモートリポジトリと対話するための信頼できる方法はありません。ユーザーエクスペリエンスと使いやすさを向上させるために、Debianプロジェクトは Deityと呼ばれるプロジェクトを委託しました 。このコードネームは最終的に廃止され、Advanced Package Tool(APT)に変更されました。

1998年にテストビルドとしてリリースされ(1999年にDebian 2.1に登場する前)、多くのユーザーはAPTをDebianベースのシステムの定義機能の1つと見なしています。 RPMベースのシステムと同様の方法でリポジトリを利用しますが、個々の.repoの代わりに使用します。 yumのファイル 使用、apt 歴史的に/etc/apt/sources.listを使用してきました リポジトリを管理します。最近では、/etc/apt/sources.d/からファイルも取り込みます。 。 RPMベースのパッケージマネージャーの例に従って、Debianベースのディストリビューションで同じことを実現するには、いくつかのオプションがあります。ターミナルから前述の場所でファイルを手動で編集/作成できます。場合によっては、UIフロントエンド(Software & Updatesなど)を使用できます。 Ubuntu他によって提供されます)。すべてのディストリビューションに同じ扱いを提供するために、コマンドラインオプションのみを取り上げます。ファイルを直接編集せずにリポジトリを追加するには、次のようにします。

user@ubuntu:~$ sudo apt-add-repository "deb http://APT.spideroak.com/ubuntu-spideroak-hardy/ release restricted"

これにより、spideroakone.listが作成されます /etc/apt/sources.list.dのファイル 。明らかに、これらの行は、追加されるリポジトリに応じて変わります。パーソナルパッケージアーカイブ(PPA)を追加する場合は、次のことができます。

user@ubuntu:~$ sudo apt-add-repository ppa:gnome-desktop

注: DebianはPPAをネイティブにサポートしていません。

リポジトリが追加された後、Debianベースのシステムはパッケージを検索するための新しい場所があることを認識する必要があります。これは、apt-get updateを介して行われます。 コマンド:

user@ubuntu:~$ sudo apt-get update
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB]
Hit:2 http://APT.spideroak.com/ubuntu-spideroak-hardy release InRelease
Hit:3 http://ca.archive.ubuntu.com/ubuntu xenial InRelease
Get:4 http://ca.archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]              
Get:5 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [517 kB]
Get:6 http://security.ubuntu.com/ubuntu xenial-security/main i386 Packages [455 kB]      
Get:7 http://security.ubuntu.com/ubuntu xenial-security/main Translation-en [221 kB]    
...

Fetched 6,399 kB in 3s (2,017 kB/s)                                          
Reading package lists... Done

新しいリポジトリが追加および更新されたので、apt-cacheを使用してパッケージを検索できます。 コマンド:

user@ubuntu:~$ apt-cache search kate
aterm-ml - Afterstep XVT - a VT102 emulator for the X window system
frescobaldi - Qt4 LilyPond sheet music editor
gitit - Wiki engine backed by a git or darcs filestore
jedit - Plugin-based editor for programmers
kate - powerful text editor
kate-data - shared data files for Kate text editor
kate-dbg - debugging symbols for Kate
katepart - embeddable text editor component

kateをインストールするには 、対応するインストールコマンドを実行するだけです:

user@ubuntu:~$ sudo apt-get install kate

パッケージを削除するには、apt-get removeを使用します :

user@ubuntu:~$ sudo apt-get remove kate

パッケージ検出に関しては、APTはyum whatprovidesに類似した機能を提供しません。 。ディスク上の特定のファイルがどこから来たのかを見つけようとしている場合、この情報を取得する方法はいくつかあります。

dpkgの使用

user@ubuntu:~$ dpkg -S /bin/ls
coreutils: /bin/ls

apt-fileの使用

user@ubuntu:~$ sudo apt-get install apt-file -y 

user@ubuntu:~$ sudo apt-file update

user@ubuntu:~$ apt-file search kate

apt-file searchの問題 yum whatprovidesとは異なり、それはそれです 、正確なパスがわからない限り、非常に冗長であり、ワイルドカード検索が自動的に追加されるため、 kateという単語を含むすべての結果が表示されます。 その中:

kate: /usr/bin/kate
kate: /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/katebacktracebrowserplugin.so
kate: /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/katebuildplugin.so
kate: /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/katecloseexceptplugin.so
kate: /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/katectagsplugin.so

これらの例のほとんどは、apt-getを使用しています。 。 Ubuntuの現在のチュートリアルのほとんどは、特にaptを使用するだけであることに注意してください。 。単一のapt コマンドは、APTアーセナルで最も一般的に使用されるコマンドのみを実装するように設計されています。機能はapt-getに分割されているため 、apt-cache 、およびその他のコマンド、apt これらを単一のコマンドに統合するように見えます。また、カラー化、プログレスバー、その他のオッズやエンドなどの優れた機能も追加されます。上記のコマンドのほとんどは、aptに置き換えることができます 、ただし、現在セキュリティパッチを受け取っているすべてのDebianベースのディストリビューションがaptの使用をサポートしているわけではありません デフォルトでは、追加のパッケージをインストールする必要がある場合があります。

Archベースのパッケージマネージャー

Arch Linuxは、pacmanと呼ばれるパッケージマネージャーを使用します。 .debとは異なり または.rpm ファイルの場合、pacmanは LZMA2でより伝統的なtarballを使用します 圧縮(.tar.xz )。これにより、Arch Linuxパッケージを他の形式の圧縮アーカイブ( gzip など)よりもはるかに小さくすることができます。 )。 2002年に最初にリリースされたpacmanは、着実に繰り返され、改善されてきました。 pacmanの主な利点の1つは、ソースからパッケージをビルドするためのシステムであるArchBuildSystemをサポートしていることです。ビルドシステムは、PKGBUILDと呼ばれるファイルを取り込みます。このファイルには、メタデータ(バージョン番号、リビジョン、依存関係など)と、ArchLinux要件に準拠するパッケージをコンパイルするために必要なフラグを含むシェルスクリプトが含まれています。結果のバイナリは、前述の.tar.xzにパッケージ化されます。 pacmanによる消費用のファイル。

このシステムにより、PKGBUILDファイルとサポートパッチまたはスクリプトを含むコミュニティ主導のリポジトリであるArch User Repository(AUR)が作成されました。これにより、Archで事実上無限の量のソフトウェアを利用できるようになります。このシステムの明らかな利点は、ユーザー(または保守者)がソフトウェアを一般に公開したい場合、メインのリポジトリで受け入れられるようにするために公式チャネルを経由する必要がないことです。欠点は、Docker Hub、CanonicalのSnapパッケージ、またはその他の同様のメカニズムと同様のコミュニティキュレーションに依存していることです。 AURのPKGBUILDファイルからダウンロード、コンパイル、およびインストールするために使用できるAUR固有のパッケージマネージャーは多数あります(これについては後で説明します)。

pacmanおよび公式リポジトリとの連携

Archのメインパッケージマネージャーであるpacmanは、yumのようなコマンドワードの代わりにフラグを使用します およびapt 。たとえば、パッケージを検索するには、pacman -Ssを使用します。 。 Linuxのほとんどのコマンドと同様に、manpageの両方を見つけることができます。 インラインヘルプ。 pacman のほとんどのコマンド syncを使用します (-S)フラグ。例:

user@arch ~ $ pacman -Ss kate

extra/kate 18.04.2-2 (kde-applications kdebase)
    Advanced Text Editor
extra/libkate 0.4.1-6 [installed]
    A karaoke and text codec for embedding in ogg
extra/libtiger 0.3.4-5 [installed]
    A rendering library for Kate streams using Pango and Cairo
extra/ttf-cheapskate 2.0-12
    TTFonts collection from dustimo.com
community/haskell-cheapskate 0.1.1-100
    Experimental markdown processor.

Archも、他のパッケージマネージャーと同様のリポジトリを使用します。上記の出力では、検索結果の前に、検索結果が見つかったリポジトリが付いています(extra/ およびcommunity/ この場合)。 Red HatとDebianベースのシステムの両方と同様に、Archはユーザーに依存してリポジトリ情報を特定のファイルに追加します。これらのリポジトリの場所は/etc/pacman.confです。 。以下の例は、ストックシステムにかなり近いものです。 [multilib]を有効にしました Steamサポートのリポジトリ:

[options]
Architecture = auto

Color
CheckSpace

SigLevel    = Required DatabaseOptional
LocalFileSigLevel = Optional

[core]
Include = /etc/pacman.d/mirrorlist

[extra]
Include = /etc/pacman.d/mirrorlist

[community]
Include = /etc/pacman.d/mirrorlist

[multilib]
Include = /etc/pacman.d/mirrorlist

pacman.confで特定のURLを指定することができます 。この機能を使用して、すべてのパッケージが特定の時点からのものであることを確認できます。たとえば、パッケージに深刻な影響を与えるバグがあり、いくつかの依存関係がある場合は、特定のURLをpacman.confに追加することで、特定の時点にロールバックできます。 次に、コマンドを実行してシステムをダウングレードします。

[core]
Server=https://archive.archlinux.org/repos/2017/12/22/$repo/os/$arch

Debianベースのシステムと同様に、Archは、指示するまでローカルリポジトリ情報を更新しません。次のコマンドを発行して、パッケージデータベースを更新できます。

user@arch ~ $ sudo pacman -Sy 

:: Synchronizing package databases...
 core                                                                     130.2 KiB   851K/s 00:00 [##########################################################] 100%
 extra                                                                   1645.3 KiB  2.69M/s 00:01 [##########################################################] 100%
 community                                                                  4.5 MiB  2.27M/s 00:02 [##########################################################] 100%
 multilib is up to date

上記の出力でわかるように、pacman multilibパッケージデータベースは最新であると考えています。 pacman -Syyを実行すると、これが正しくないと思われる場合に強制的に更新できます。 。システム全体(AURからインストールされたパッケージを除く)を更新する場合は、pacman -Syuを実行できます。 :

user@arch ~ $ sudo pacman -Syu

:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...

Packages (45) ceph-13.2.0-2  ceph-libs-13.2.0-2  debootstrap-1.0.105-1  guile-2.2.4-1  harfbuzz-1.8.2-1  harfbuzz-icu-1.8.2-1  haskell-aeson-1.3.1.1-20
              haskell-attoparsec-0.13.2.2-24  haskell-tagged-0.8.6-1  imagemagick-7.0.8.4-1  lib32-harfbuzz-1.8.2-1  lib32-libgusb-0.3.0-1  lib32-systemd-239.0-1
              libgit2-1:0.27.2-1  libinput-1.11.2-1  libmagick-7.0.8.4-1  libmagick6-6.9.10.4-1  libopenshot-0.2.0-1  libopenshot-audio-0.1.6-1  libosinfo-1.2.0-1
              libxfce4util-4.13.2-1  minetest-0.4.17.1-1  minetest-common-0.4.17.1-1  mlt-6.10.0-1  mlt-python-bindings-6.10.0-1  ndctl-61.1-1  netctl-1.17-1
              nodejs-10.6.0-1  

Total Download Size:      2.66 MiB
Total Installed Size:   879.15 MiB
Net Upgrade Size:      -365.27 MiB

:: Proceed with installation? [Y/n]

システムのダウングレードに関して前述したシナリオでは、pacman -Syyuuを発行することで、強制的にダウングレードできます。 。これは軽々しく行われるべきではないことに注意することが重要です。ほとんどの場合、これによって問題が発生することはありません。ただし、1つまたは複数のパッケージをダウングレードすると、カスケード障害が発生し、システムが不整合な状態になる可能性があります。 注意して使用してください!

パッケージをインストールするには、pacman -S kateを使用するだけです。 :

user@arch ~ $ sudo pacman -S kate

resolving dependencies...
looking for conflicting packages...

Packages (7) editorconfig-core-c-0.12.2-1  kactivities-5.47.0-1  kparts-5.47.0-1  ktexteditor-5.47.0-2  syntax-highlighting-5.47.0-1  threadweaver-5.47.0-1
             kate-18.04.2-2

Total Download Size:   10.94 MiB
Total Installed Size:  38.91 MiB

:: Proceed with installation? [Y/n]

パッケージを削除するには、pacman -R kateを実行します。 。これにより、パッケージのみが削除され、依存関係は削除されません:

user@arch ~ $ sudo pacman -S kate

checking dependencies...

Packages (1) kate-18.04.2-2

Total Removed Size:  20.30 MiB

:: Do you want to remove these packages? [Y/n]

ではない依存関係を削除したい場合 他のパッケージで必要な場合は、pacman -Rs:を実行できます。

user@arch ~ $ sudo pacman -Rs kate

checking dependencies...

Packages (7) editorconfig-core-c-0.12.2-1  kactivities-5.47.0-1  kparts-5.47.0-1  ktexteditor-5.47.0-2  syntax-highlighting-5.47.0-1  threadweaver-5.47.0-1
             kate-18.04.2-2

Total Removed Size:  38.91 MiB

:: Do you want to remove these packages? [Y/n]

Pacman, in my opinion, offers the most succinct way of searching for the name of a package for a given utility. As shown above, yum and apt both rely on pathing in order to find useful results. Pacman makes some intelligent guesses as to which package you are most likely looking for:

user@arch ~ $ sudo pacman -Fs updatedb
core/mlocate 0.26.git.20170220-1
    usr/bin/updatedb

user@arch ~ $ sudo pacman -Fs kate
extra/kate 18.04.2-2
    usr/bin/kate

Working with the AUR

There are several popular AUR package manager helpers. Of these, yaourt and pacaur are fairly prolific. However, both projects are listed as discontinued or problematic on the Arch Wiki. For that reason, I will discuss aurman 。 It works almost exactly like pacman, except it searches the AUR and includes some helpful, albeit potentially dangerous, options. Installing a package from the AUR will initiate use of the package maintainer's build scripts. You will be prompted several times for permission to continue (I have truncated the output for brevity):

aurman -S telegram-desktop-bin
~~ initializing aurman...
~~ the following packages are neither in known repos nor in the aur
...
~~ calculating solutions...

:: The following 1 package(s) are getting updated:
   aur/telegram-desktop-bin  1.3.0-1  ->  1.3.9-1

?? Do you want to continue? Y/n: Y

~~ looking for new pkgbuilds and fetching them...
Cloning into 'telegram-desktop-bin'...

remote: Counting objects: 301, done.
remote: Compressing objects: 100% (152/152), done.
remote: Total 301 (delta 161), reused 286 (delta 147)
Receiving objects: 100% (301/301), 76.17 KiB | 639.00 KiB/s, done.
Resolving deltas: 100% (161/161), done.
?? Do you want to see the changes of telegram-desktop-bin? N/y: N

[sudo] password for user:

...
==> Leaving fakeroot environment.
==> Finished making: telegram-desktop-bin 1.3.9-1 (Thu 05 Jul 2018 11:22:02 AM EDT)
==> Cleaning up...
loading packages...
resolving dependencies...
looking for conflicting packages...

Packages (1) telegram-desktop-bin-1.3.9-1

Total Installed Size:  88.81 MiB
Net Upgrade Size:       5.33 MiB

:: Proceed with installation? [Y/n]

Sometimes you will be prompted for more input, depending on the complexity of the package you are installing. To avoid this tedium, aurman allows you to pass both the --noconfirm and --noedit オプション。 This is equivalent to saying "accept all of the defaults, and trust that the package maintainers scripts will not be malicious." USE THIS OPTION WITH EXTREME CAUTION! While these options are unlikely to break your system on their own, you should never blindly accept someone else's scripts.

結論

This article, of course, only scratches the surface of what package managers can do. There are also many other package managers available that I could not cover in this space. Some distributions, such as Ubuntu or Elementary OS, have gone to great lengths to provide a graphical approach to package management.

If you are interested in some of the more advanced functions of package managers, please post your questions or comments below and I would be glad to write a follow-up article.

Appendix

# search for packages
yum search <package>
dnf search <package>
zypper search <package>
apt-cache search <package>
apt search <package>
pacman -Ss <package>

# install packages
yum install <package>
dnf install <package>
zypper install <package>
apt-get install <package>
apt install <package>
pacman -S <package>

# update package database, not required by yum, dnf and zypper
apt-get update
apt update
pacman -Sy

# update all system packages
yum update
dnf update
zypper update
apt-get upgrade
apt upgrade
pacman -Su

# remove an installed package
yum remove <package>
dnf remove <package>
apt-get remove <package>
apt remove <package>
pacman -R <package>
pacman -Rs <package>

# search for the package name containing specific file or folder
yum whatprovides *<binary>
dnf whatprovides *<binary>
zypper what-provides <binary>
zypper search --provides <binary>
apt-file search <binary>
pacman -Fs <binary>

Linux
  1. Linuxパッケージマネージャー:dnf vs apt

  2. 非ルートパッケージマネージャー?

  3. Debian – Debianリポジトリの安全性?

  1. Linuxパッケージマネージャーを使用する5つの理由

  2. Linuxでパッケージの依存関係を一覧表示する方法

  3. 9つの最高のクロスプラットフォームパスワードマネージャー

  1. Linuxデスクトップ用の4つのやることリストマネージャー

  2. PC用の5つの最高のクロスプラットフォームチームチャットソフトウェア

  3. SolarWindsHackの米国ソフトウェアサプライチェーンへの影響