102.4 レッスン 1
Certificate: |
LPIC-1 |
---|---|
Version: |
5.0 |
Topic: |
102 Linuxのインストールとパッケージ管理 |
Objective: |
102.4 Debianパッケージ管理 |
Lesson: |
1 of 1 |
はじめに
その昔、Linuxがまだ揺籃期にあった頃、ソフトウェアを配布する最も一般的な方法は、ソースコードを含む圧縮ファイル(通常は .tar.gz
アーカイブ)で、それを展開して自分でコンパイルしていました。
しかし、LinuxカーネルやXサーバーのような大規模なプロジェクトをコンパイルするための時間や能力などのリソースを誰もが持っているわけではありません。ですから、ソフトウェアの量と複雑さが増すにつれて、コンパイル済みのソフトウェアを配布することの必要性が増していきました。
やがて、これらのソフトウェア “パッケージ” の配布方法を標準化する取り組みが進められ、最初のパッケージマネージャーが誕生しました。このツールの誕生により、システムへのソフトウェアのインストールや設定、削除が、より簡単に行えるようになりました。
その中の1つが、Debianパッケージ形式(.deb
)とそのパッケージツール(dpkg
)でした。現在では、それらはDebian自体だけでなく、Ubuntuやそこから派生したディストリビューションなどでも広く使用されています。
Debianベースのシステムでポピュラーなもう1つのパッケージ管理ツールは apt
(Advanced Package Tool)です。これは、パッケージのインストール、保守、削除など多くの側面を効率化し、操作を簡単にします。
このレッスンでは、dpkg
と apt
の両方を使用して、DebianベースのLinuxシステムでソフトウェアを取得、インストール、保守、削除する方法を学習します。
Debianパッケージツール(dpkg)
dpkg
(Debian Package)ツールは、Debianベースのシステムにソフトウェアパッケージをインストール、構成、保守、削除するために不可欠なユーティリティです。最も基本的な操作は、.deb
パッケージをインストールすることです。次の方法で実行します。
# dpkg -i PACKAGENAME
ここで、PACKAGENAME
はインストールする .deb
ファイルの名前です。
パッケージのアップグレードも同じ方法で処理できます。パッケージをインストールする前に、 dpkg
は以前のバージョンがシステムにすでに存在するかどうかをチェックします。以前のバージョンが存在する場合、パッケージは新しいバージョンにアップグレードされます。そうでない場合は、新規インストールされます。
依存関係への対処
パッケージが正しく動作するために、他のパッケージを必要とする(依存する)ことがよくあります。たとえば、画像エディタがJPEGファイルを開くためのライブラリを必要としたり、GUIのユーティリティがそのユーザーインターフェイスを実現するためにQtやGTKなどのウィジェットツールキットを必要とすることなどがあります。
dpkg
は必要なパッケージがシステムにインストールされているかどうかをチェックして、インストールされていない場合はパッケージのインストールが失敗します。この時 dpkg
は、不足しているパッケージをリストします。ただし、dpkg
が依存関係を解決することはできません。必要な .deb
パッケージを見つけてインストールするのは、ユーザーの責任です。
以下の例は、OpenShotビデオエディターパッケージのインストールを試みたけれども、依存関係から必要となるいくつかのパッケージが無かったことを示しています。
# dpkg -i openshot-qt_2.4.3+dfsg1-1_all.deb (Reading database ... 269630 files and directories currently installed.) Preparing to unpack openshot-qt_2.4.3+dfsg1-1_all.deb ... Unpacking openshot-qt (2.4.3+dfsg1-1) over (2.4.3+dfsg1-1) ... dpkg: dependency problems prevent configuration of openshot-qt: openshot-qt depends on fonts-cantarell; however: Package fonts-cantarell is not installed. openshot-qt depends on python3-openshot; however: Package python3-openshot is not installed. openshot-qt depends on python3-pyqt5; however: Package python3-pyqt5 is not installed. openshot-qt depends on python3-pyqt5.qtsvg; however: Package python3-pyqt5.qtsvg is not installed. openshot-qt depends on python3-pyqt5.qtwebkit; however: Package python3-pyqt5.qtwebkit is not installed. openshot-qt depends on python3-zmq; however: Package python3-zmq is not installed. dpkg: error processing package openshot-qt (--install): dependency problems - leaving unconfigured Processing triggers for mime-support (3.60ubuntu1) ... Processing triggers for gnome-menus (3.32.0-1ubuntu1) ... Processing triggers for desktop-file-utils (0.23-4ubuntu1) ... Processing triggers for hicolor-icon-theme (0.17-2) ... Processing triggers for man-db (2.8.5-2) ... Errors were encountered while processing: openshot-qt
上の例では、OpenShotは fonts-cantarell
、python3-openshot
、python3-pyqt5
、python3-pyqt5.qtsvg
、python3-pyqt5.qtwebkit
、python3-zmq
パッケージに依存しています。OpenShotをインストールするには、これらすべてをインストールする必要があります。
パッケージの削除
パッケージを削除するには、dpkg
に -r
オプションを指定し、その後にパッケージ名を渡します。たとえば、次のコマンドはシステムから unrar
パッケージを削除します。
# dpkg -r unrar (Reading database ... 269630 files and directories currently installed.) Removing unrar (1:5.6.6-2) ... Processing triggers for man-db (2.8.5-2) ...
削除操作では依存関係がチェックされて、削除しようとするパッケージに依存する他のすべてのパッケージが削除されない限り、そのパッケージを削除することはできません。行おうとすると、次のようなエラーメッセージが表示されます。
# dpkg -r p7zip dpkg: dependency problems prevent removal of p7zip: winetricks depends on p7zip; however: Package p7zip is to be removed. p7zip-full depends on p7zip (= 16.02+dfsg-6). dpkg: error processing package p7zip (--remove): dependency problems - not removing Errors were encountered while processing: p7zip
複数のパッケージ名を dpkg -r
に渡せば、それらがすべて一度に削除されます。
パッケージが削除されても、対応する設定ファイルがシステムに残ります。パッケージに関連する すべての ファイルを削除する場合は、-r
ではなく -P
(purge)オプションを使用します。
Note
|
依存関係が満たされていない場合でも、 |
パッケージ情報を見る
バージョン、アーキテクチャ、メンテナ、依存関係などの .deb
パッケージに関する情報を取得するには、dpkg
コマンドに -I
オプションを指定し、その後に調べるパッケージのファイル名を渡します。
# dpkg -I google-chrome-stable_current_amd64.deb new Debian package, version 2.0. size 59477810 bytes: control archive=10394 bytes. 1222 bytes, 13 lines control 16906 bytes, 457 lines * postinst #!/bin/sh 12983 bytes, 344 lines * postrm #!/bin/sh 1385 bytes, 42 lines * prerm #!/bin/sh Package: google-chrome-stable Version: 76.0.3809.100-1 Architecture: amd64 Maintainer: Chrome Linux Team <chromium-dev@chromium.org> Installed-Size: 205436 Pre-Depends: dpkg (>= 1.14.0) Depends: ca-certificates, fonts-liberation, libappindicator3-1, libasound2 (>= 1.0.16), libatk-bridge2.0-0 (>= 2.5.3), libatk1.0-0 (>= 2.2.0), libatspi2.0-0 (>= 2.9.90), libc6 (>= 2.16), libcairo2 (>= 1.6.0), libcups2 (>= 1.4.0), libdbus-1-3 (>= 1.5.12), libexpat1 (>= 2.0.1), libgcc1 (>= 1:3.0), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.31.8), libgtk-3-0 (>= 3.9.10), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.22), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libuuid1 (>= 2.16), libx11-6 (>= 2:1.4.99.1), libx11-xcb1, libxcb1 (>= 1.6), libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6 (>= 2:1.2.99.4), libxrandr2 (>= 2:1.2.99.3), libxrender1, libxss1, libxtst6, lsb-release, wget, xdg-utils (>= 1.0.2) Recommends: libu2f-udev Provides: www-browser Section: web Priority: optional Description: The web browser from Google Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier.
インストールされているパッケージとパッケージの内容の一覧
システムにインストールされているすべてのパッケージを一覧表示するには、dpkg --get-selections
のように、--get-selections
オプションを使用します。次の例のように、 dpkg
に -L PACKAGENAME
オプションを渡せば、そのパッケージによってインストールされたすべてのファイルのリストを取得できます。
# dpkg -L unrar /. /usr /usr/bin /usr/bin/unrar-nonfree /usr/share /usr/share/doc /usr/share/doc/unrar /usr/share/doc/unrar/changelog.Debian.gz /usr/share/doc/unrar/copyright /usr/share/man /usr/share/man/man1 /usr/share/man/man1/unrar-nonfree.1.gz
ファイルが属するパッケージを見つける
システム内のファイルが、どのパッケージに所属しているのかを知りたいことがあります。これには、dpkg-query
コマンドに -S
オプションと、調べたいファイルのパスを指定します。
# dpkg-query -S /usr/bin/unrar-nonfree unrar: /usr/bin/unrar-nonfree
インストールされたパッケージの再構成
パッケージをインストールする最後に、post-install と呼ばれるスクリプトが実行されて、アクセス許可や構成ファイルの配置など、ソフトウェアの実行に必要なすべてのものがセットアップされます。この時に、ソフトウェアの実行方法に関する設定を行うために、ユーザーに問いあわせが行われる場合があります。
時には、設定ファイルが破損してしまったり、異常が発生しているので、パッケージの設定を “新鮮な” 状態に戻したいことや、初期設定の質問に対する回答を変更したいことがあります。このような場合は、パッケージ名を指定して dpkg-reconfigure
コマンドを実行します。
このユーティリティは、古い設定ファイルをバックアップし、新しいファイルを適切なディレクトリに展開してから、インストール時と同様に post-install スクリプトを実行します。次の例は、tzdata
パッケージの再設定を行います。
# dpkg-reconfigure tzdata
apt(Advanced Package Tool)
apt(Advanced Package Tool)は、複数のツールから成るパッケージ管理システムであり、パッケージのインストール、アップグレード、削除、および管理を大幅に簡素化します。APTは、高度な検索機能や、依存関係の自動的な解決などの機能も備えています。
APTは dpkg
の “代用品” ではありません。APTは “フロントエンド” であり、操作を効率化し、依存関係の解決などの dpkg
には備わっていない機能とのギャップを埋めるものと考えればよいでしょう。
APTは、インストール可能なパッケージを保管する「ソフトウェアリポジトリ」と連携して動作します。リポジトリは、ローカルないしリモートのサーバー、あるいは(あまり一般的ではありませんが)CD-ROMディスクの場合もあります。
DebianやUbuntuなどのLinuxディストリビューションでは、ディストリビュータ自身が(公式)リポジトリを運用しています。公式リポジトリには無いソフトウェアを提供するために、開発者やコミュティが別のリポジトリを運用していることもあります。
APTには多くのユーティリティがありますが、主なものを以下に示します:
apt-get
-
パッケージをダウンロード、インストール、アップグレード、削除します。
apt-cache
-
パッケージのインデックスを用いて、検索などを行います。
apt-file
-
パッケージ内のファイルを検索します。
また、apt-get
と apt-cache
の使用頻度が高いオプションを1つのユーティリティにまとめた “とっつきやすい” ユーティリティである apt
というシンプルな名前のコマンドもあります。apt
コマンドのオプション(サブコマンド)の多くは、apt-get
コマンドと同じで、ほとんど同様に使えます。ただし、apt
コマンドは(比較的新しいため)インストールされていないシステムもありますから、apt-get
と apt-cache
を使う方法を学んでおくことが推奨されています。
Note
|
|
パッケージインデックスの更新
APTでソフトウェアをインストールないしアップグレードする前に、パッケージ情報を更新するために、まずパッケージインデックスを更新することがお勧めです。これには、apt-get
コマンドに update
サブコマンドを指定します。
# apt-get update Ign:1 http://dl.google.com/linux/chrome/deb stable InRelease Hit:2 https://repo.skype.com/deb stable InRelease Hit:3 http://us.archive.ubuntu.com/ubuntu disco InRelease Hit:4 http://repository.spotify.com stable InRelease Hit:5 http://dl.google.com/linux/chrome/deb stable Release Hit:6 http://apt.pop-os.org/proprietary disco InRelease Hit:7 http://ppa.launchpad.net/system76/pop/ubuntu disco InRelease Hit:8 http://us.archive.ubuntu.com/ubuntu disco-security InRelease Hit:9 http://us.archive.ubuntu.com/ubuntu disco-updates InRelease Hit:10 http://us.archive.ubuntu.com/ubuntu disco-backports InRelease Reading package lists... Done
Tip
|
|
パッケージのインストールと削除
パッケージインデックスを更新したら、パッケージをインストールできます。これには、apt-get install
の後に、インストールするパッケージの名前を指定します。
# apt-get install xournal Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: xournal 0 upgraded, 1 newly installed, 0 to remove and 75 not upgraded. Need to get 285 kB of archives. After this operation, 1041 kB of additional disk space will be used.
同様に、パッケージを削除するには、apt-get remove
の後に、パッケージ名を指定します:
# apt-get remove xournal Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: xournal 0 upgraded, 0 newly installed, 1 to remove and 75 not upgraded. After this operation, 1041 kB disk space will be freed. Do you want to continue? [Y/n]
パッケージをインストールまたは削除するときに、APTは依存関係を自動的に解決します。つまり、インストールするパッケージが必要とするパッケージがすべてインストールされますし、削除するパッケージに依存しているパッケージはすべて削除されます。APTは、処理の続行を尋ねる前に、インストールまたは削除されるパッケージの一覧を表示します。
# apt-get remove p7zip Reading package lists... Done Building dependency tree The following packages will be REMOVED: android-libbacktrace android-libunwind android-libutils android-libziparchive android-sdk-platform-tools fastboot p7zip p7zip-full 0 upgraded, 0 newly installed, 8 to remove and 75 not upgraded. After this operation, 6545 kB disk space will be freed. Do you want to continue? [Y/n]
パッケージを削除しても、その設定ファイルは消されずに残ることに注意してください。パッケージと設定ファイルを削除するには、remove
ではなく purge
サブコマンドを使用するか、remove
サブコマンドに --purge
オプションを追加します。
# apt-get purge p7zip
ないし
# apt-get remove --purge p7zip
Tip
|
|
壊れた依存関係の修正
システムを使っていると “壊れた依存関係” が発生することがあります。これは、インストールされている1つ以上のパッケージが、インストールされていないか存在しなくなった別のパッケージに依存していることを意味します。APT実行時のエラーや、手動でインストールしたパッケージなどが原因となって発生することがあります。
これを解決するには、apt-get install -f
コマンドを使用します。これは、欠けているパッケージをインストールすることで、壊れた依存関係を “修正” して、すべてのパッケージの整合性を保ちます。
Tip
|
|
パッケージのアップグレード
APTでは、インストールされているパッケージを、自動的にリポジトリから入手できる最新バージョンにアップグレードできます。これは、apt-get upgrade
コマンドで行いますが、その前に apt-get update
でパッケージインデックスをで更新しておきます。
# apt-get update Hit:1 http://us.archive.ubuntu.com/ubuntu disco InRelease Hit:2 http://us.archive.ubuntu.com/ubuntu disco-security InRelease Hit:3 http://us.archive.ubuntu.com/ubuntu disco-updates InRelease Hit:4 http://us.archive.ubuntu.com/ubuntu disco-backports InRelease Reading package lists... Done # apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages have been kept back: gnome-control-center The following packages will be upgraded: cups cups-bsd cups-client cups-common cups-core-drivers cups-daemon cups-ipp-utils cups-ppdc cups-server-common firefox-locale-ar (...) 74 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. Need to get 243 MB of archives. After this operation, 30.7 kB of additional disk space will be used. Do you want to continue? [Y/n]
出力の末尾にあるサマリーには、アップグレードされるパッケージの数、インストール、削除、保持されるパッケージの数、合計ダウンロードサイズ、必要なディスク容量が表示されます。アップグレードを完了するには、Y
と答えて、apt-get
がタスクを完了するのを待ちます。
1つのパッケージのみをアップグレードするには、apt-get upgrade
にパッケージ名を指定します。dpkg
と同様に、apt-get
はまずパッケージがインストールされているかどうかをチェックし、インストールされていればリポジトリが提供している最新バージョンにアップグレードします。インストールされていなければ、新規にインストールします。
Tip
|
|
ローカルキャッシュ
パッケージをインストールまたは更新する際には、まずパッケージに対応する .deb
ファイルがローカルキャッシュディレクトリにダウンロードされます。デフォルトでは、キャッシュは /var/cache/apt/archives
ディレクトリです。部分的にダウンロードされたファイルは /var/cache/apt/archives/partial/
にコピーされます。
パッケージをインストールしたりアップグレードしたりすると、キャッシュディレクトリが非常に大きくなることがあります。容量を再利用するには、apt-get clean
コマンドを使用してキャッシュを空にします。これで、/var/cache/apt/archives
と /var/cache/apt/archives/partial/
ディレクトリの内容が削除されます。
Tip
|
|
パッケージの検索
apt-cache
ユーティリティは、パッケージを検索したり、ファイルが含まれているパッケージを探すなど、パッケージインデックスに対する操作を行います。
パッケージを検索するには、apt-cache search
に続けて検索パターンを指定します。パッケージ名、説明、提供されるファイルのいずれかがパターンに一致するパッケージの一覧が表示されます。
# apt-cache search p7zip liblzma-dev - XZ-format compression library - development files liblzma5 - XZ-format compression library forensics-extra - Forensics Environment - extra console components (metapackage) p7zip - 7zr file archiver with high compression ratio p7zip-full - 7z and 7za file archivers with high compression ratio p7zip-rar - non-free rar module for p7zip
この例では、パターンに一致しているように見えない liblzma5 - XZ-format compression library
が出力されています。このような場合は、show
サブコマンドで、パッケージの説明を含む詳細な情報を表示すると、そこにパターンが見つかります。
# apt-cache show liblzma5 Package: liblzma5 Architecture: amd64 Version: 5.2.4-1 Multi-Arch: same Priority: required Section: libs Source: xz-utils Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Jonathan Nieder <jrnieder@gmail.com> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 259 Depends: libc6 (>= 2.17) Breaks: liblzma2 (<< 5.1.1alpha+20110809-3~) Filename: pool/main/x/xz-utils/liblzma5_5.2.4-1_amd64.deb Size: 92352 MD5sum: 223533a347dc76a8cc9445cfc6146ec3 SHA1: 8ed14092fb1caecfebc556fda0745e1e74ba5a67 SHA256: 01020b5a0515dbc9a7c00b464a65450f788b0258c3fbb733ecad0438f5124800 Homepage: https://tukaani.org/xz/ Description-en: XZ-format compression library XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm compression format, which provides memory-hungry but powerful compression (often better than bzip2) and fast, easy decompression. . The native format of liblzma is XZ; it also supports raw (headerless) streams and the older LZMA format used by lzma. (For 7-Zip's related format, use the p7zip package instead.)
検索パターンに 正規表現 を使って、高度で複雑な検索が行えますが、その詳細はこのレッスンの範囲外です。(訳注: レッスン103.7を参照してください。)
Tip
|
|
ソースリスト
APTは、パッケージの入手先を把握するために ソースリスト を利用します。/etc/apt
ディレクトリにある sources.list
ファイルが、そのリストです。このファイルは、vi
、pico
、nano
などのテキストエディタで直接編集したり、aptitude
や synaptic
などのグラフィカルツールで編集できます。
sources.list
には、次のような行を設定します。
deb http://us.archive.ubuntu.com/ubuntu/ disco main restricted universe multiverse
この行には、以下の構成要素があります: アーカイブタイプ、URL、ディストリビューション、1つ以上のコンポーネント:
- アーカイブタイプ
-
実行可能ソフトウェア(バイナリパッケージ、
deb
)と、ソフトウェアのソースコード(ソースパッケージ、deb-src
)の2種類があります。例はバイナリパッケージです。 - URL
-
リポジトリのURL。
- ディストリビューション
-
パッケージが提供されるディストリビューションの名前(ないしコードネーム)。1つのリポジトリが複数のディストリビューションのパッケージをホストすることがあります。例の
disco
は、Ubuntu 19.04 のコードネーム Disco Dingo です。 - コンポーネント
-
コンポーネントは、パッケージのセットを意味します。コンポーネントの構成は、ディストリビューションによって異なります。例えば、Ubuntuとその派生版では、以下のようになります。:
main
-
公式にサポートされているパッケージが含まれます。
restricted
-
公式にサポートされているクローズドソースのソフトウェアが含まれます。例えば、グラフィックカード用のデバイスドライバなど。
universe
-
コミュニティによってメンテナンスされている、オープンソースソフトウェアが含まれます。
multiverse
-
サポート外の、クローズドソースや特許に絡んだソフトウェアが含まれます。
別の例として、Debianでは以下のような主要コンポーネントがあります:
main
-
Debianフリーソフトウェアガイドライン(DFSG: Debian Free Software Guidelines)に準拠していて、DFSGではないソフトウェアに依存すること無く実行できるパッケージで構成されています。ここに含まれるパッケージは、Debianディストリビューションの一部であるとみなされます。
contrib
-
DFSGに準拠したパッケージであるが、
main
に含まれない(DFSGに準拠していない)パッケージに依存しているものが含まれます。 non-free
-
DFSGに準拠していないパッケージが含まれます。
security
-
セキュリティアップデートが含まれます。.
backports
-
main
に含まれるパッケージの、より新しいバージョンが含まれます。 Debianの安定版の開発サイクルは非常に長い(約2年)ので、コアリポジトリであるmain
を変更しなくても、最新版のパッケージを入手できるようになります。
Note
|
Debianフリーソフトウェアガイドライン の詳細は、https://www.debian.org/social_contract#guidelines をご覧ください。 |
パッケージを取得するためのリポジトリを追加するには、リポジトリに対応する行(通常はリポジトリメンテナが提供します)を、sources.list
の末尾に追加してから、apt-get update
でパッケージインデックスを再読み込みします。すると、apt-get install
で、新しいリポジトリのパッケージをインストールできるようになります。
文字 #
で始まる行はコメントと見なされ、無視されます。
/etc/apt/sources.list.d
ディレクトリ
メインの /etc/apt/sources.list
ファイルを変更しなくても、/etc/apt/sources.list.d
ディレクトリにファイルを置くことで、APTが使用するリポジトリを追加できます。それらは、sources.list
と同じ構文のテキストファイルで、サフィックスは .list
です。
以下に、/etc/apt/sources.list.d/buster-backports.list
というファイルの例を示します。
deb http://deb.debian.org/debian buster-backports main contrib non-free deb-src http://deb.debian.org/debian buster-backports main contrib non-free
パッケージ内容の表示とファイルの検索
apt-file
ユーティリティでは、パッケージの内容を表示したり、あるファイルを含むパッケージを検索したりするなど、パッケージインデックスを利用する多くの操作を実行できます。このユーティリティは、デフォルトではシステムにインストールされていないことがあります。その場合は、apt-get
を使用してインストールします。
# apt-get install apt-file
インストール後に、apt-file
でパッケージキャッシュを更新します。
# apt-file update
処理は数秒で完了し、apt-file
が使用できるようになります。
パッケージの内容を表示するには、list
サブコマンドにパッケージ名を指定します。
# apt-file list unrar unrar: /usr/bin/unrar-nonfree unrar: /usr/share/doc/unrar/changelog.Debian.gz unrar: /usr/share/doc/unrar/copyright unrar: /usr/share/man/man1/unrar-nonfree.1.gz
Tip
|
|
search
サブコマンドにファイル名を指定することで、すべてのパッケージからファイルを検索できます。たとえば、libSDL2.so
というファイルが、どのパッケージから提供されているかを知りたい場合は、以下のようにします。
# apt-file search libSDL2.so libsdl2-dev: /usr/lib/x86_64-linux-gnu/libSDL2.so
パッケージ libsdl2-dev
が、ファイル /usr/lib/x86_64-linux-gnu/libSDL2.so
を提供していることが分かります。
apt-file search
と dpkg-query
の違いは、apt-file search
はパッケージインデックスからパッケージを検索するのに対して、dpkg-query
はインストールされたパッケージしか検索しないことです。
演習
-
dpkg
でpackage.deb
という名前のパッケージをインストールするにはどうしますか? -
dpkg-query
で7zr.1.gz
という名前のファイルが含まれているパッケージを見つけてください。 -
パッケージ
file-roller
がunzip
パッケージに依存している場合に、dpkg -r unzip
コマンドで、システムからunzip
というパッケージを削除できるでしょうか? できない場合、どのように削除すればよいでしょう? -
apt-file
で、ファイル/usr/bin/unrar
を含むパッケージを見つけるにはどうしますか? -
apt-cache
で、パッケージgimp
の情報を表示するにはどうしますか?
発展演習
-
Debian
xenial
ディストリビューション用のソースパッケージが、リポジトリhttp://us.archive.ubuntu.com/ubuntu/
にホストされています。ここにはuniverse
コンポーネントのパッケージも含まれています。/etc/apt/sources.list
にどのような行を追加すればよいですか? -
プログラムをコンパイルしている時に、ヘッダファイル
zzip-io.h
が存在しないというエラーメッセージが表示されましたた。このファイルを提供しているパッケージを調べるにはどうしますか? -
依存しているパッケージがある場合に、依存関係の警告を無視して、
dpkg
でパッケージを削除するにはどうしますか? -
apt-cache
でmidori
と呼ばれるパッケージの詳細情報を得るにはどうしますか? -
apt-get
でパッケージのインストールや更新を行う前に、パッケージインデックスを最新にするにはどうしますか?
まとめ
このレッスンでは、次のことを学びました。
-
dpkg
を使用してパッケージをインストールおよび削除する方法。 -
インストール済みのパッケージと、パッケージの内容を表示する方法。
-
インストール済みのパッケージを再構成する方法。
-
apt
とは何か、それを使用してパッケージをインストール、アップグレード、削除する方法。 -
apt-cache
を使用してパッケージを検索する方法。 -
/etc/apt/sources.list
ファイルのしくみ。 -
apt-file
を使用してパッケージの内容を表示する方法、あるいはあるファイルを含んでいるパッケージを見つける方法。
次のコマンドについて説明しました。
dpkg -i
-
1つないし複数のパッケージファイルをインストールします。
dpkg -r
-
1つないし複数のインストール済みパッケージを削除します。
dpkg -I
-
パッケージファイルを調べて、インストールするソフトウェアと依存関係の詳細を表示します。
dpkg --get-selections
-
システムにインストール済みのパッケージを一覧表示します。
dpkg -L
-
パッケージがインストールしたすべてのファイルのリストを出力します。
dpkg-query
-
ファイル名を指定し、そのファイルをインストールしたパッケージ名を出力します。
dpkg-reconfigure
-
パッケージの post-install スクリプトを再実行して、インストール時の初期設定を再実行します。
apt-get update
-
/etc/apt/
ディレクトリに設定されているリポジトリと一致するように、ローカルのパッケージインデックスを更新します。 apt-get install
-
リモートリポジトリからパッケージをダウンロードし、その依存関係とともにインストールします。また、既にダウンロードされているDebianパッケージファイルをインストールすることもできます。
apt-get remove
-
指定されたパッケージをシステムからアンインストールします。
apt-cache show
-
パッケージインデックスに基づき、指定したパッケージの詳細を表示します。
apt-cache search
-
指定したパッケージを、ローカルのパッケージインデックスから検索します。
apt-file update
-
パッケージインデックスを更新し、
apt-file
コマンドがその内容を照会できるようにします。 apt-file search
-
パッケージに含まれているファイルから、パターンに一致するものを検索して表示します。
apt-file list
-
このコマンドは、パッケージの内容を表示します。
演習の解答
-
dpkg
でpackage.deb
という名前のパッケージをインストールするにはどうしますか?dpkg
に-i
オプションを指定します。# dpkg -i package.deb
-
dpkg-query
で7zr.1.gz
という名前のファイルが含まれているパッケージを見つけてください。dpkg-query
に-S
オプションを指定します。# dpkg-query -S 7zr.1.gz
-
パッケージ
file-roller
がunzip
パッケージに依存している場合に、dpkg -r unzip
コマンドで、システムからunzip
というパッケージを削除できるでしょうか? できない場合、どのように削除すればよいでしょう?削除できません。
dpkg
は依存関係を解決しないため、インストールされている別のパッケージが削除しようとしているパッケージに依存している場合は、パッケージを削除することはできません。この例では、まずfile-roller
を削除してから(他には依存しないと仮定して)、次にunzip
を削除するか、次のように両方を同時に削除します。# dpkg -r unzip file-roller
-
apt-file
で、ファイル/usr/bin/unrar
を含むパッケージを見つけるにはどうしますか?search
オプションにパス(ないしファイル名)を指定します。# apt-file search /usr/bin/unrar
-
apt-cache
で、パッケージgimp
の情報を表示するにはどうしますか?show
オプションにパッケージ名を指定します。# apt-cache show gimp
発展演習の回答
-
Debian
xenial
ディストリビューション用のソースパッケージが、リポジトリhttp://us.archive.ubuntu.com/ubuntu/
にホストされています。ここにはuniverse
コンポーネントのパッケージも含まれています。/etc/apt/sources.list
にどのような行を追加すればよいですか?ソースパッケージは
deb-src
タイプであるため、次のようになります。deb-src http://us.archive.ubuntu.com/ubuntu/ xenial universe
この行を、
/etc/apt/sources.list.d/
内の.list
ファイルに追加することもできます。名前は何でも構いませんが、xenial_sources.list
のようにわかりやすい名前にしましょう。 -
プログラムをコンパイルしている時に、ヘッダファイル
zzip-io.h
が存在しないというエラーメッセージが表示されましたた。このファイルを提供しているパッケージを調べるにはどうしますか?システムに存在しないファイルを含むパッケージを探すには、
apt-file search
を使用します:# apt-file search zzip-io.h
-
依存しているパッケージがある場合に、依存関係の警告を無視して、
dpkg
でパッケージを削除するにはどうしますか?--force
オプションが使用できますが、システムが一貫性のない状態、あるいは “壊れた” 状態になるリスクが高いので、何をやろうとしているのかを正確に理解していない限り、実行しない方が良いでしょう。 -
apt-cache
でmidori
と呼ばれるパッケージの詳細情報を得るにはどうしますか?apt-cache show
の後にパッケージ名を指定します。# apt-cache show midori
-
apt-get
でパッケージのインストールや更新を行う前に、パッケージインデックスを最新にするにはどうしますか?apt-get update
を実行します。これにより、/etc/apt/sources.list
ファイルまたは/etc/apt/sources.list.d/
ディレクトリに記述されているリポジトリから、最新のパッケージインデックスがダウンロードされます。