すべてのコンピューター化されたデバイスは、意図されたタスクを実行するために何らかの形式のソフトウェアを使用します。ソフトウェアの初期の頃、製品はバグやその他の欠陥について厳密にテストされていました。過去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>