102.5 レッスン 1
Certificate: |
LPIC-1 |
---|---|
Version: |
5.0 |
Topic: |
102 Linuxのインストールとパッケージ管理 |
Objective: |
102.5 RPMおよびYUMパッケージ管理を使用する |
Lesson: |
1 of 1 |
はじめに
その昔、Linuxがまだ揺籃期にあった頃、ソフトウェアを配布する最も一般的な方法は、ソースコードを含む圧縮ファイル(通常は .tar.gz
アーカイブ)で、それを展開して自分でコンパイルしていました。
しかし、LinuxカーネルやXサーバーのような大規模なプロジェクトをコンパイルするための時間や能力などのリソースを誰もが持っているわけではありません。ですから、ソフトウェアの量と複雑さが増すにつれて、コンパイル済みのソフトウェアを配布することの必要性が増していきました。
やがて、これらのソフトウェア “パッケージ” の配布方法を標準化する取り組みが進められ、最初のパッケージマネージャーが誕生しました。このツールの誕生により、システムへのソフトウェアのインストールや設定、削除が、より簡単に行えるようになりました。
その中の1つが、Red Hatによって開発された RPMパッケージマネージャ とそのツール(rpm
)です。現在、それらはRed Hat Enterprise Linux(RHEL)自体だけでなく、Fedora、CentOS、Oracle Linuxなどの子孫や、openSUSEなどのディストリビューション、さらにはIBMのAIXなど他のオペレーティングシステムにも広く使用されています。
Red Hat互換ディストリビューションでポピュラーなパッケージ管理ツールには、yum
(YellowDog Updater Modified)、dnf
(Dandified YUM:しゃれたYUMの意)、zypper
などがあります。これらは、パッケージのインストール、保守、削除など多くの側面を効率化し、操作を簡単にします。
このレッスンでは、Linuxシステム上でソフトウェアの入手、インストール、管理、削除を行うために、rpm
、yum
、dnf
、zypper
を使用する方法を学びます。
Note
|
パッケージ形式が同じでも、ディストリビューションごとに内部的な違いがあるため、openSUSE用に作成されたパッケージはRHELシステムでは動作しないことがありますし、逆も同様です。パッケージを検索するときは、互換性を確認し、できるだけお使いのディストリビューション用のパッケージを使用してください。 |
RPMパッケージマネージャ(rpm)
RPMパッケージマネジャ(rpm
)は、Red Hatベース(または派生)システムで、ソフトウェアパッケージを管理するために不可欠なツールです。
パッケージのインストール、アップグレード、削除
最も基本的な操作は、パッケージをインストールすることです。次のように行います。
# rpm -i PACKAGENAME
ここで、PACKAGENAME
はインストールする .rpm
ファイルの名前です。
システムに既に(古い)パッケージがインストールされている場合は、-U
オプションで新しいバージョンにアップグレード(更新)できます。
# rpm -U PACKAGENAME
PACKAGENAME
がまだインストールされていない場合には、インストールされます。インストール済み パッケージ のみ をアップグレードするには、-F
オプションを使用します。
どちらの操作でも、-v
オプションを追加すると詳細情報を出力し、-h
オプションを追加すると進行状況を視覚的に表示するハッシュ記号(#
)を出力します。(Linuxの多くのコマンドと同様に)複数のパラメータを1つに組み合わせることができます。つまり rpm -i -v -h
は rpm -ivh
と同じです。
インストールされたパッケージを削除するには、rpm
に -e
オプション(“erase” の意)と、削除するパッケージ名を指定します。
# rpm -e wget
インストールされている別のパッケージが、削除しようとしたパッケージに依存している場合は、次のエラーメッセージが表示されます。
# rpm -e unzip error: Failed dependencies: /usr/bin/unzip is needed by (installed) file-roller-3.28.1-2.el7.x86_64
削除したいパッケージに依存するパッケージ(例では file-roller
)を先に削除すれば、削除することができます。複数のパッケージ名を rpm -e
に渡して、一度に複数のパッケージを削除できます。
依存関係への対処
パッケージが正しく動作するために、他のパッケージを必要とする(依存する)ことがよくあります。たとえば、画像エディタがJPEGファイルを開くためのライブラリを必要としたり、GUIのユーティリティがそのユーザーインターフェイスを実現するためにQtやGTKなどのウィジェットツールキットを必要とすることなどがあります。
rpm
は必要なパッケージがシステムにインストールされているかどうかをチェックして、インストールされていない場合はパッケージのインストールが失敗します。この場合、rpm
は不足しているパッケージをリストします。ただし、それ自体で依存関係を解決することは できません 。
以下の例では、GIMPイメージエディターパッケージのインストールを試みたけれども、依存関係から必要となるいくつかのパッケージが無かったことを示しています。
# rpm -i gimp-2.8.22-1.el7.x86_64.rpm error: Failed dependencies: babl(x86-64) >= 0.1.10 is needed by gimp-2:2.8.22-1.el7.x86_64 gegl(x86-64) >= 0.2.0 is needed by gimp-2:2.8.22-1.el7.x86_64 gimp-libs(x86-64) = 2:2.8.22-1.el7 is needed by gimp-2:2.8.22-1.el7.x86_64 libbabl-0.1.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgegl-0.2.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimp-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpbase-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpcolor-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpconfig-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpmath-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpmodule-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpthumb-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpui-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpwidgets-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libmng.so.1()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libwmf-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libwmflite-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
依存しているパッケージの .rpm
パッケージを見つけてインストールすることは、ユーザーの責任です。yum
、zypper
、dnf
などのパッケージマネージャーでは、必要なファイルを提供しているパッケージを調べる機能が備わっています。これらについては、レッスンの後半で説明します。
インストールされているパッケージを調べる
システムにインストールされているすべてのパッケージのリストを取得するには、rpm -qa
を使います(“query all” と覚えましょう)。
# rpm -qa selinux-policy-3.13.1-229.el7.noarch pciutils-libs-3.5.1-3.el7.x86_64 redhat-menus-12.0.2-8.el7.noarch grubby-8.28-25.el7.x86_64 hunspell-en-0.20121024-6.el7.noarch dejavu-fonts-common-2.33-6.el7.noarch xorg-x11-drv-dummy-0.3.7-1.el7.1.x86_64 libevdev-1.5.6-1.el7.x86_64 [...]
パッケージ情報を見る
バージョン番号、アーキテクチャ、インストール日、パッケージャ、概要など、 インストールされている パッケージに関する情報を取得するには、rpm -qi
(“query info” と覚えましょう)にパッケージ名を指定します。例を示します:
# rpm -qi unzip Name : unzip Version : 6.0 Release : 19.el7 Architecture: x86_64 Install Date: Sun 25 Aug 2019 05:14:39 PM EDT Group : Applications/Archiving Size : 373986 License : BSD Signature : RSA/SHA256, Wed 25 Apr 2018 07:50:02 AM EDT, Key ID 24c6a8a7f4a80eb5 Source RPM : unzip-6.0-19.el7.src.rpm Build Date : Wed 11 Apr 2018 01:24:53 AM EDT Build Host : x86-01.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.info-zip.org/UnZip.html Summary : A utility for unpacking zip files Description : The unzip utility is used to list, test, or extract files from a zip archive. Zip archives are commonly found on MS-DOS systems. The zip utility, included in the zip package, creates zip archives. Zip and unzip are both compatible with archives created by PKWARE(R)'s PKZIP for MS-DOS, but the programs' options and default behaviors do differ in some respects. Install the unzip package if you need to list, test or extract files from a zip archive.
インストールされている パッケージ内含まれるファイルのリストを取得するには、-ql
(“query list” と覚えましょう)とパッケージ名を指定します。
# rpm -ql unzip /usr/bin/funzip /usr/bin/unzip /usr/bin/unzipsfx /usr/bin/zipgrep /usr/bin/zipinfo /usr/share/doc/unzip-6.0 /usr/share/doc/unzip-6.0/BUGS /usr/share/doc/unzip-6.0/LICENSE /usr/share/doc/unzip-6.0/README /usr/share/man/man1/funzip.1.gz /usr/share/man/man1/unzip.1.gz /usr/share/man/man1/unzipsfx.1.gz /usr/share/man/man1/zipgrep.1.gz /usr/share/man/man1/zipinfo.1.gz
まだインストールされていないパッケージの情報やファイルリストを調べたい時は、上記のコマンドに -p
オプションを追加し、その後にRPMファイルの名前(FILENAME
)を指定します。具体的には、rpm -qi PACKAGENAME
を rpm -qip FILENAME
としたり、rpm -ql PACKAGENAME
を rpm -qlp FILENAME
とします。
# rpm -qip atom.x86_64.rpm Name : atom Version : 1.40.0 Release : 0.1 Architecture: x86_64 Install Date: (not installed) Group : Unspecified Size : 570783704 License : MIT Signature : (none) Source RPM : atom-1.40.0-0.1.src.rpm Build Date : sex 09 ago 2019 12:36:31 -03 Build Host : b01bbeaf3a88 Relocations : /usr URL : https://atom.io/ Summary : A hackable text editor for the 21st Century. Description : A hackable text editor for the 21st Century.
# rpm -qlp atom.x86_64.rpm /usr/bin/apm /usr/bin/atom /usr/share/applications/atom.desktop /usr/share/atom /usr/share/atom/LICENSE /usr/share/atom/LICENSES.chromium.html /usr/share/atom/atom /usr/share/atom/atom.png /usr/share/atom/blink_image_resources_200_percent.pak /usr/share/atom/content_resources_200_percent.pak /usr/share/atom/content_shell.pak (続く)
ファイルが属するパッケージを見つける
ファイルがどのパッケージに属しているかを調べるには、-qf
(“query file” と覚えましょう)にファイルのフルパスを指定します。
# rpm -qf /usr/bin/unzip unzip-6.0-19.el7.x86_64
この例では、ファイル /usr/bin/unzip
は、unzip-6.0-19.el7.x86_64
パッケージに属していることがわかります。
YellowDog Updater Modified(YUM)
yum
は元々、Yellow Dog Linuxディストリビューションのパッケージ管理用ツールである Yellow Dog Updater(YUP)として開発されました。その後、Fedora、CentOS、Red Hat Enterprise Linux、Oracle Linuxなど、RPMベースの他のシステムでパッケージを管理できるよう進化してきました。
機能的には、Debianベースのシステムの apt
ユーティリティに似ており、パッケージを検索、インストール、更新、削除し、依存関係を自動的に処理することができます。yum
を使って、1つのパッケージをインストールしたり、システム全体を一度にアップグレードしたりできます。
パッケージの検索
パッケージをインストールするにはその名前を調べる必要がありますが、yum search PATTERN
で探せます。ここで PATTERN
は検索するパッケージの名前です。パッケージ名ないし説明にPATTERNが含まれているパッケージのリストが表示されます。たとえば、7Zip圧縮ファイル(拡張子が .7z
)用のユーティリティを探す時には、次のようにします:
# yum search 7zip Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br =========================== N/S matchyutr54ed: 7zip ============================ p7zip-plugins.x86_64 : Additional plugins for p7zip p7zip.x86_64 : Very high compression ratio file archiver p7zip-doc.noarch : Manual documentation and contrib directory p7zip-gui.x86_64 : 7zG - 7-Zip GUI version Name and summary matches only, use "search all" for everything.
パッケージのインストール、アップグレード、削除
yum
を使用してパッケージをインストールするには、コマンド yum install PACKAGENAME
を使用します。ここで指定する PACKAGENAME
は、パッケージの名前です。yum
は、インストールしようとしているパッケージが必要とする(依存する)パッケージををオンラインリポジトリから取得し、すべての必要なパッケージをインストールします。
# yum install p7zip Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br Resolving Dependencies --> Running transaction check ---> Package p7zip.x86_64 0:16.02-10.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Installing: p7zip x86_64 16.02-10.el7 epel 604 k Transaction Summary ========================================================================== Install 1 Package Total download size: 604 k Installed size: 1.7 M Is this ok [y/d/N]:
インストール済みのパッケージをアップグレードするには、yum update PACKAGENAME
を使います。ここで指定する PACKAGENAME
は、アップグレードするパッケージの名前です。例を示します:
# yum update wget Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br Resolving Dependencies --> Running transaction check ---> Package wget.x86_64 0:1.14-18.el7 will be updated ---> Package wget.x86_64 0:1.14-18.el7_6.1 will be an update --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Updating: wget x86_64 1.14-18.el7_6.1 updates 547 k Transaction Summary ========================================================================== Upgrade 1 Package Total download size: 547 k Is this ok [y/d/N]:
パッケージ名を省略すると、アップデート可能なすべてのインストール済みパッケージを更新します。
あるパッケージがアップデート可能であるかどうかを確認するには、yum check-update PACKAGENAME
を使います。yum update
と同様に、パッケージ名を省略するとインストール済みのすべてのパッケージの更新をチェックします。
インストールされているパッケージを削除するには、yum remove PACKAGENAME
を使います。ここで指定する PACKAGENAME
は、削除するパッケージの名前です。
ファイルが属するパッケージを見つける
先の gimp
画像エディタを(rpmで)インストールする例では、依存関係が満たされないのでインストールに失敗しました。この時、rpm
は不足しているファイルを表示しますが、それを提供するパッケージ名は表示しません。
先の例で不足している依存関係の1つに libgimpui-2.0.so.0
がありました。このような場合に、このファイルが所属するパッケージを調べるには、yum whatprovides
を使い、検索したいファイルの名前を指定します。
# yum whatprovides libgimpui-2.0.so.0 Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br 2:gimp-libs-2.8.22-1.el7.i686 : GIMP libraries Repo : base Matched from: Provides : libgimpui-2.0.so.0
この例で、そのファイルを提供するパッケージは gimp-libs-2.8.22-1.el7.i686
であることがわかりました。yum install gimp-libs
コマンドで、そのパッケージをインストールできます。
このテクニックは、システムにすでに存在するファイルに対しても有効です。たとえば、ファイル /etc/hosts
がどこから来たのかを知りたい場合は、次のコマンドを実行します。
# yum whatprovides /etc/hosts Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br setup-2.8.71-10.el7.noarch : A set of system configuration and setup files Repo : base Matched from: Filename : /etc/hosts
/etc/host
ファイルは、setup-2.8.71-10.el7.noarch
パッケージが提供していることがわかります。
パッケージ情報の取得
バージョン、アーキテクチャ、説明、サイズなど、パッケージに関する情報を取得するには、yum info PACKAGENAME
を使用します。ここで指定する PACKAGENAME
は、情報を調べたいパッケージの名前です。
# yum info firefox Last metadata expiration check: 0:24:16 ago on Sat 21 Sep 2019 02:39:43 PM -03. Installed Packages Name : firefox Version : 69.0.1 Release : 3.fc30 Architecture : x86_64 Size : 268 M Source : firefox-69.0.1-3.fc30.src.rpm Repository : @System From repo : updates Summary : Mozilla Firefox Web browser URL : https://www.mozilla.org/firefox/ License : MPLv1.1 or GPLv2+ or LGPLv2+ Description : Mozilla Firefox is an open-source web browser, designed : for standards compliance, performance and portability.
リポジトリの管理
yum
が使用する “repos”(訳注:リポジトリの意)は、/etc/yum.repos.d/
ディレクトリに格納されています。CentOS-Base.repo
などの .repo
ファイルが、それぞれのリポジトリを定義します。
リポジトリを追加したい時は、上記のディレクトリに .repo
ファイルを追加するか、または /etc/yum.conf
の末尾に追加します。ただし、リポジトリの追加や管理には、yum-config-manager
ツールを使うことが推奨されています。
リポジトリを追加するには、--add-repo
オプションに .repo
ファイルへのURLを指定します。
# yum-config-manager --add-repo https://rpms.remirepo.net/enterprise/remi.repo Loaded plugins: fastestmirror, langpacks adding repo from: https://rpms.remirepo.net/enterprise/remi.repo grabbing file https://rpms.remirepo.net/enterprise/remi.repo to /etc/yum.repos.d/remi.repo repo saved to /etc/yum.repos.d/remi.repo
利用可能な(登録されている)リポジトリのリストを取得するには、yum repolist all
を使います。次のように出力されます。
# yum repolist all Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br repo id repo name status updates/7/x86_64 CentOS-7 - Updates enabled: 2,500 updates-source/7 CentOS-7 - Updates Sources disabled
無効
になっているリポジトリは、ソフトウェアのインストールやアップグレード時に無視されます。リポジトリの有効/無効を切り替えるには、yum-config-manager
ユーティリティで、リポジトリIDを指定します。
上の出力例では、リポジトリIDが各行の先頭列(repo id
)に表示されています。/
よりも前の部分がIDですから、CentOS-7 - Updates
リポジトリのIDは updates
で、updates/7/x86_64
ではありません。
# yum-config-manager --disable updates
このコマンドは、updates
リポジトリを無効にします。再度、有効にするには、次のコマンドを使います。
# yum-config-manager --enable updates
Note
|
Yumは、ダウンロードしたパッケージとそのメタデータを、キャッシュディレクトリ(通常は |
DNF
dnf
(Dandified YUM:「しゃれた」YUMの意)は、yum
から分岐した改良版であり、事実上の後継です。コマンドやオプションの多くは共通です。この節では、dnf
の概要を簡単に説明します。
- パッケージの検索
-
dnf search PATTERN
で、PATTERN
を検索します。たとえば、dnf search unzip
は、名前または説明にunzip
という単語を含むすべてのパッケージを表示します。 - パッケージに関する情報の取得
-
dnf info PACKAGENAME
- パッケージのインストール
-
dnf install PACKAGENAME
で、PACKAGENAME
はインストールしたいパッケージの名前です。この名前は検索で見つけられます。 - パッケージの削除
-
dnf remove PACKAGENAME
- パッケージのアップグレード
-
dnf upgrade PACKAGENAME
は、1つのパッケージのみを更新します。パッケージ名を省略すると、インストール済みのすべてのパッケージを更新します。 - 指定のファイルを提供するパッケージを見つける
-
dnf provides FILENAME
- システムにインストールされているすべてのパッケージのリストを取得する
-
dnf list --installed
- パッケージの内容を一覧表示する
-
dnf repoquery -l PACKAGENAME
Note
|
|
リポジトリの管理
yum
や dnf
(後述の zypper
含む)は、リポジトリと連携しています。それぞれのディストリビューションにはデフォルトのリポジトリのリストがあり、管理者は必要に応じてリポジトリを追加ないし削除できます。
使用可能なすべてのリポジトリのリストを取得するには、dnf repolist
を使います。有効なリポジトリのみを一覧表示するには --enabled
オプションを追加し、無効なリポジトリのみを一覧表示するには --disabled
オプションを追加します。
# dnf repolist Last metadata expiration check: 0:20:09 ago on Sat 21 Sep 2019 02:39:43 PM -03. repo id repo name status *fedora Fedora 30 - x86_64 56,582 *fedora-modular Fedora Modular 30 - x86_64 135 *updates Fedora 30 - x86_64 - Updates 12,774 *updates-modular Fedora Modular 30 - x86_64 - Updates 145
リポジトリを追加するには、dnf config-manager --add_repo URL
を使います。ここで指定する URL
は、リポジトリへの完全なURLです。リポジトリを有効にするには、dnf config-manager --set-enabled REPO_ID
を使います。
同様に、リポジトリを無効にするには dnf config-manager --set-disabled REPO_ID
を使います。いずれの場合も REPO_ID
は、リポジトリの一意のIDであり、それを見つけるには dnf repolist
を使います。追加したリポジトリは、デフォルトで有効になります。
リポジトリは、ディレクトリ /etc/yum.repos.d/
の .repo
ファイルに保存されます。 yum
が使用する構文とまったく同じです。
Zypper
zypper
は、SUSE Enteprise LinuxやopenSUSEで使用されるパッケージ管理ツールです。機能的には apt
や yum
と同様であり、依存関係を自動的に解決して、パッケージをインストール、更新、削除できます。
パッケージインデックスの更新
他のパッケージ管理ツールと同様に、zypper
はパッケージとメタデータを含むリポジトリと連携します。zypper
がパッケージの更新を認識できるように、メタデータを随時更新する必要があります。次のコマンドで行います
# zypper refresh Repository 'Non-OSS Repository' is up to date. Repository 'Main Repository' is up to date. Repository 'Main Update Repository' is up to date. Repository 'Update Repository (Non-Oss)' is up to date. All repositories have been refreshed.
zypper
には、リポジトリごとに有効化できる自動更新機能があります。つまり、(クエリやインストールする際に)自動的に更新されるリポジトリもあれば、手動で更新する必要があるリポジトリもあります。この機能を制御する方法は、後で述べます。
パッケージの検索
パッケージを検索するには、search
(se
)サブコマンドを使い、パッケージ名を続けます。
# zypper se gnumeric Loading repository data... Reading installed packages... S | Name | Summary | Type --+----------------+-----------------------------------+-------- | gnumeric | Spreadsheet Application | package | gnumeric-devel | Spreadsheet Application | package | gnumeric-doc | Documentation files for Gnumeric | package | gnumeric-lang | Translations for package gnumeric | package
searchサブコマンドで、インストール済みのパッケージのリストを取得することもできます。この場合、zypper se -i
のように、パッケージ名なしで -i
オプションを使用します。
あるパッケージがインストールされているかどうかを確認するには、上記のコマンドにパッケージ名を追加します。たとえば、次のコマンドは、インストール済みパッケージから、名前に “firefox” を含むパッケージを検索します。
# zypper se -i firefox Loading repository data... Reading installed packages... S | Name | Summary | Type --+------------------------------------+-------------------------+-------- i | MozillaFirefox | Mozilla Firefox Web B-> | package i | MozillaFirefox-branding-openSUSE | openSUSE branding of -> | package i | MozillaFirefox-translations-common | Common translations f-> | package
インストールされていない パッケージのみを検索するには、se
サブコマンドに -u
オプションを追加します。
パッケージのインストール、アップグレード、削除
ソフトウェアパッケージをインストールするには、install
(in
)サブコマンドに続けてパッケージ名を指定し、次のように実行します:
# zypper in unrar zypper in unrar Loading repository data... Reading installed packages... Resolving package dependencies... The following NEW package is going to be installed: unrar 1 new package to install. Overall download size: 141.2 KiB. Already cached: 0 B. After the operation, additional 301.6 KiB will be used. Continue? [y/n/v/...? shows all options] (y): y Retrieving package unrar-5.7.5-lp151.1.1.x86_64 (1/1), 141.2 KiB (301.6 KiB unpacked) Retrieving: unrar-5.7.5-lp151.1.1.x86_64.rpm .......................[done] Checking for file conflicts: .......................................[done] (1/1) Installing: unrar-5.7.5-lp151.1.1.x86_64 .....................[done]
zypper
では、ローカルのRPMパッケージファイルをインストールすることができ、その際にはリポジトリのパッケージを利用して依存関係が自動的に満たされます。例えば、zypper in /home/john/newpackage.rpm
のように、パッケージ名ではなくパッケージファイルのフルパスを指定します。
システムにインストールされているパッケージを更新するには、zypper update
を使います。インストールの場合と同様に、インストール/アップグレードするパッケージのリストが表示されて、続行するかどうかを尋ねられます。
何もインストールせずに、利用できるアップデートを一覧表示したい時は、zypper list-updates
を使います。
パッケージを削除するには、remove
(rm
)サブコマンドを使用し、その後にパッケージ名を続けます。
# zypper rm unrar Loading repository data... Reading installed packages... Resolving package dependencies... The following package is going to be REMOVED: unrar 1 package to remove. After the operation, 301.6 KiB will be freed. Continue? [y/n/v/...? shows all options] (y): y (1/1) Removing unrar-5.7.5-lp151.1.1.x86_64 ........................[done]
パッケージを削除すると、それに依存しているすべてのパッケージが削除されることに注意してください:
# zypper rm libgimp-2_0-0 Loading repository data... Warning: No repositories defined. Operating only with the installed resolvables. Nothing can be installed. Reading installed packages... Resolving package dependencies... The following 6 packages are going to be REMOVED: gimp gimp-help gimp-lang gimp-plugins-python libgimp-2_0-0 libgimpui-2_0-0 6 packages to remove. After the operation, 98.0 MiB will be freed. Continue? [y/n/v/...? shows all options] (y):
ファイルが所属するパッケージを見つける
あるファイルを含んでいるパッケージを調べるには、searchサブオプションに続けて --provides
オプションと、調べたいファイルの名前(ないしフルパス)を指定します。たとえば、/usr/lib64/
にあるファイル libgimpmodule-2.0.so.0
が所属しているパッケージを調べたい場合は、次のようになります。
# zypper se --provides /usr/lib64/libgimpmodule-2.0.so.0 Loading repository data... Reading installed packages... S | Name | Summary | Type --+---------------+----------------------------------------------+-------- i | libgimp-2_0-0 | The GNU Image Manipulation Program - Libra-> | package
パッケージ情報を見る
パッケージのメタデータを表示するには、info
サブコマンドに続けてパッケージ名を指定します。提供しているリポジトリ、パッケージ名、バージョン、アーキテクチャ、ベンダー、インストールサイズ、インストールされているかどうか、ステータス(最新かどうか)、ソースパッケージ、簡単な説明が表示されます。
# zypper info gimp Loading repository data... Reading installed packages... Information for package gimp: ----------------------------- Repository : Main Repository Name : gimp Version : 2.8.22-lp151.4.6 Arch : x86_64 Vendor : openSUSE Installed Size : 29.1 MiB Installed : Yes (automatically) Status : up-to-date Source package : gimp-2.8.22-lp151.4.6.src Summary : The GNU Image Manipulation Program Description : The GIMP is an image composition and editing program, which can be used for creating logos and other graphics for Web pages. The GIMP offers many tools and filters, and provides a large image manipulation toolbox, including channel operations and layers, effects, subpixel imaging and antialiasing, and conversions, together with multilevel undo. The GIMP offers a scripting facility, but many of the included scripts rely on fonts that we cannot distribute.
リポジトリの管理
ソフトウェアリポジトリの管理にも、zypper
を使用します。システムに登録されているリポジトリの一覧を表示するには、zypper repos
を使います。
# zypper repos Repository priorities are without effect. All enabled repositories share the same priority. # | Alias | Name | Enabled | GPG Check | Refresh ---+---------------------------+------------------------------------+---------+-----------+-------- 1 | openSUSE-Leap-15.1-1 | openSUSE-Leap-15.1-1 | No | ---- | ---- 2 | repo-debug | Debug Repository | No | ---- | ---- 3 | repo-debug-non-oss | Debug Repository (Non-OSS) | No | ---- | ---- 4 | repo-debug-update | Update Repository (Debug) | No | ---- | ---- 5 | repo-debug-update-non-oss | Update Repository (Debug, Non-OSS) | No | ---- | ---- 6 | repo-non-oss | Non-OSS Repository | Yes | (r ) Yes | Yes 7 | repo-oss | Main Repository | Yes | (r ) Yes | Yes 8 | repo-source | Source Repository | No | ---- | ---- 9 | repo-source-non-oss | Source Repository (Non-OSS) | No | ---- | ---- 10 | repo-update | Main Update Repository | Yes | (r ) Yes | Yes 11 | repo-update-non-oss | Update Repository (Non-Oss) | Yes | (r ) Yes | Yes
Enabled
列で、リポジトリの有効/無効を確認できます。有効/無効を切り替えるには、 modifyrepo
サブコマンドの後に、-e
(有効)ないし -d
(無効)オプションと、リポジトリのエイリアス名(上記出力の2列目)を指定します。
# zypper modifyrepo -d repo-non-oss Repository 'repo-non-oss' has been successfully disabled. # zypper modifyrepo -e repo-non-oss Repository 'repo-non-oss' has been successfully enabled.
前述したように、zypper
では、リポジトリごとに auto refresh(自動更新)を有効化することができます。この機能を有効にしたリポジトリでは、指定した処理を行う前に zypper
が自動的にメタデータを更新します(zypper refresh
と同じ)。この機能の有効/無効を切り替えるには、modifyrepo
サブコマンドの -f
(有効)ないし -F
(無効)オプションで指定します。
# zypper modifyrepo -F repo-non-oss Autorefresh has been disabled for repository 'repo-non-oss'. # zypper modifyrepo -f repo-non-oss Autorefresh has been enabled for repository 'repo-non-oss'.
リポジトリの追加と削除
zypper
が使用するソフトウェアリポジトリを追加するには、次のように、addrepo
サブコマンドに続けて、リポジトリのURLとリポジトリ名を指定します。
# zypper addrepo http://packman.inode.at/suse/openSUSE_Leap_15.1/ packman Adding repository 'packman' ........................................[done] Repository 'packman' successfully added URI : http://packman.inode.at/suse/openSUSE_Leap_15.1/ Enabled : Yes GPG Check : Yes Autorefresh : No Priority : 99 (default priority) Repository priorities are without effect. All enabled repositories share the same priority.
リポジトリを追加するときに -f
オプションを指定すると、自動更新が有効になります。追加したリポジトリはデフォルトで有効になりますが、-d
オプションを指定するとリポジトリは追加されますが同時に無効化されます。
リポジトリを削除するには、removerepo
サブコマンドに続けてリポジトリ名(エイリアス)を指定します。上の例で追加したリポジトリを削除するコマンドは、次のようになります。
# zypper removerepo packman Removing repository 'packman' ......................................[done] Repository 'packman' has been removed.
演習
-
Red Hat Enterprise Linuxシステムで
rpm
を使って、インストール中に進行状況バーを表示しながら、パッケージfile-roller-3.28.1-2.el7.x86_64.rpm
をインストールするにはどうしますか? -
rpm
を使って、ファイル/etc/redhat-release
が含まれているパッケージを見つけてください。 -
yum
を使って、システム内のすべてのパッケージの更新を確認するにはどうしますか? -
zypper
を使って、repo-extrasというリポジトリを無効にするにはどうしますか? -
DNFに新しいリポジトリを記述した
.repo
ファイルを認識させるには、そのrepo
ファイルをどこに置きますか?
発展演習
-
zypper
を使って、ファイル/usr/sbin/swapon
が所属するパッケージを見つけるにはどうしますか? -
dnf
を使って、システムにインストールされているすべてのパッケージの一覧を表示するにはどうしますか? -
dnf
を使って、リポジトリhttps://www.example.url/home:reponame.repo
をシステムに追加するコマンドは何ですか? -
zypper
を使って、パッケージunzip
がインストールされているかどうかを調べるにはどうしますか? -
yum
を使って、ファイル/bin/wget
が所属するパッケージを見つけてください。
まとめ
このレッスンでは、次のことを学びました。
-
rpm
を使用してパッケージをインストール、アップグレード、削除する方法。 -
yum
、zypper
、dnf
の使い方。 -
パッケージの情報を表示する方法。
-
パッケージ内容のリストを表示する方法。
-
ファイルがどのパッケージに属しているかを調べる方法。
-
ソフトウェアリポジトリを一覧表示、追加、削除、有効化、無効化する方法。
次のコマンドについて説明しました。
-
rpm
-
yum
-
dnf
-
zypper
演習の解答
-
Red Hat Enterprise Linuxシステムで
rpm
を使って、インストール中に進行状況バーを表示しながら、パッケージfile-roller-3.28.1-2.el7.x86_64.rpm
をインストールするにはどうしますか?パッケージをインストールするために
-i
オプションを、進行状況を示す “hash marks” を表示するために-h
オプションを指定します。つまりrpm -ih file-roller-3.28.1-2.el7.x86_64.rpm
になります。 -
rpm
を使用して、ファイル/etc/redhat-release
が含まれているパッケージを見つけてください。ファイルに関する情報を調べるために
-qf
オプションを使用します。つまりrpm -qf /etc/redhat-release
です。 -
yum
を使って、システム内のすべてのパッケージの更新を確認するにはどうしますか?パッケージ名を指定しない
check-update
サブコマンドを使います。yum check-update
-
zypper
を使って、repo-extrasというリポジトリを無効にするにはどうしますか?リポジトリのパラメータを変更するために
modifyrepo
サブコマンドを使い、-d
オプションで無効化します。zypper modifyrepo -d repo-extras
-
DNFに新しいリポジトリを記述した
.repo
ファイルを認識させるには、そのrepo
ファイルをどこに置きますか?DNFは、YUMと同じ場所
/etc/yum.repos.d/
にあるrepo
ファイルを参照します。
発展演習の解答
-
zypper
を使って、ファイル/usr/sbin/swapon
が所属するパッケージを見つけるにはどうしますか?se
(検索)サブコマンドと--provides
オプションを指定します。zypper se --provides /usr/sbin/swapon
-
dnf
を使って、システムにインストールされているすべてのパッケージの一覧を表示するにはどうしますか?list
サブコマンドを使用し、--installed
オプションを指定します。dnf list --installed
-
dnf
を使って、リポジトリhttps://www.example.url/home:reponame.repo
をシステムに追加するコマンドは何ですか?リポジトリの操作は “設定の変更” であるため、
config-manager
の--add_repo
オプションを指定します。dnf config-manager --add_repo https://www.example.url/home:reponame.repo
-
zypper
を使って、パッケージunzip
がインストールされているかどうかを調べるにはどうしますか?インストールされている(
-i
)パッケージを検索(se
)します。zypper se -i unzip
-
yum
を使用して、ファイル/bin/wget
を提供するパッケージを見つけてください。ファイルが所属するパッケージを見つけるには、
whatprovides
とファイル名を指定します。yum whatprovides /bin/wget