FreeBSD – パッケージソフトのインストールと削除、アップデートのやり方

FreeBSDではWebサーバ、ブラウザ、メールソフトなどのソフトウェアのインストールはpkgコマンドで管理します。

pkgコマンドのhelpやmanコマンドによるマニュアルを見るにはちょっとしたコツが必要です。

この記事ではpkgコマンドのマニュアルを見るコツとpkgコマンドの基本的な操作(インストール、削除、アップデートなど)を紹介しています。

パッケージ管理のしくみ

[ざっくりしたイメージ]

FreeBSD パッケージ管理のイメージ

リポジトリとは、貯蔵庫、保管場所といった意味があり、パッケージやパッケージ管理に必要なデータの保管場所のことを言います。

「pkg update」は、リモートパッケージリポジトリデータベースからリポジトリカタログのローカルコピーを更新するために使用されます。

通常、カタログの更新は、リモートパッケージリポジトリのマスターコピーがローカルコピーよりも新しい場合にのみダウンロードされます。

更新するリポジトリカタログは、pkg.conf(5)ファイルまたは/usr/local/etc/pkg/reposのエントリで定義されます。 詳細については、pkg.conf(5)を参照してください。

通常は、pkg updateを明示的に実行する必要は通常ありません。デフォルトでは、pkg.conf(5)でREPO_AUTOUPDATEをfalseに設定して無効にしない限り、pkg installまたはpkg upgradeのいずれかを呼び出すと、リポジトリカタログが自動的に更新されます。

FreeBSDのリリースアップデートを実施した際には、「pkg update」または「pkg update -f」で強制的にアップデートする必要が生じることがあります。

FreeBSDをメジャーアップグレードした際には、「pkg-static」でpkgバイナリツールを新しいものに置き換えることを勧めています。

pkgコマンドのマニュアルの見方

pkgコマンドのマニュアルは「pkg help」または「man pkg」で見る事ができます。

pkgコマンドのマニュアルは、このコマンドがどのような引数を指定するようになっているか理解しないと、ちょっと難解に感じます。

このコマンドの構文は大雑把にいうと次のようになっています。

pkg [OPTIONS] <command> <flags>

pkgコマンドの引数にはサブコマンドを指定する事ができます。[OPTIONS]で指定するオプションはpkgコマンドのオプションになります。

例えば、

# pkg -v

のように指定します。

<command>にはサブコマンドを指定します。<flags>にはサブコマンドのオプションを指定します。

例えば、

# pkg install firefox
# pkg update -f

のように指定します。

「update」がサブコマンド、「-f」がサブコマンドのオプションになります。

各サブコマンドのマニュアルは「pkg help <command>」または「man pkg-<command>」で見る事ができます。

例えば、

# pkg help install
# man pkg-install

のように指定します。

つまり、pkgコマンドの使い方を確認するにはpkgコマンドとサブコマンドのマニュアルを見る必要があります。

また、「pkg help」と「man pkg」で表示する内容には部分的に表現の違いがあります。
一例をあげると以下のようなものがります。

helpの表記manコマンドの表記
Global options supported:OPTIONS
Commands supported:COMMANDS
<args><flags>
Display pkg(8) versionDisplay the current version of pkg.
Updates package repository cataloguesUpdate the available remote repositories as listed in pkg.conf(5).

表現方法が違うだけで言いたいことは同じです。

見方が分かったところで次に、よく使いそうな基本的な使い方を紹介します。

pkgコマンドの基本的な使い方

リモートパッケージリポジトリで指定したパッケージを探す。

# pkg search php74
php74を含むパッケージの一覧が表示されます。

パッケージ名には正規表現が使えます。

# pkg search '^php74-[0-9]'
php74-7.4.8                    PHP Scripting Language

ソフトウェア(パッケージ)のインストール

# pkg install php74

ソフトウェア(パッケージ)の削除

# pkg delete php74

インストールされているパッケージ情報を調べる

# pkg info

パッケージ一覧から指定したパッケージを抽出する

# pkg info | grep firefox
firefox-71.0_2,1               Web browser based on the browser portion of Mozilla
firefox-i18n-65.0.2            Localized interface for Firefox

パッケージとそのコメントを表示する

# pkg info -I firefox
firefox-79.0,1                 Web browser based on the browser portion of Mozil

パッケージの各種情報を調べる

パッケージの詳しい情報を調べる

# pkg info -f ja-ibus-anthy
ja-ibus-anthy-1.5.11
Name           : ja-ibus-anthy
Version        : 1.5.11
Installed on   : Sat Aug  1 03:01:06 2020 JST
Origin         : japanese/ibus-anthy
Architecture   : FreeBSD:12:amd64
Prefix         : /usr/local
Categories     : japanese
Licenses       : GPLv2
Maintainer     : ********@nifty.ne.jp
WWW            : https://github.com/ibus/ibus-anthy
Comment        : Anthy engine for IBus
Shared Libs required:
	libanthy.so.1
	libintl.so.8
	libglib-2.0.so.0
	libgobject-2.0.so.0
	libanthydic.so.1
Shared Libs provided:
	libanthygobject-1.0.so.5
Annotations    :
	FreeBSD_version: 1201000
	repo_type      : binary
	repository     : FreeBSD
Flat size      : 8.85MiB
Description    :
Anthy engine for IBus.

WWW: https://github.com/ibus/ibus-anthy

パッケージのファイルサイズを調べる

# pkg info -s firefox
firefox-71.0_2,1               207MiB

指定したパッケージが依存しているパッケージのリストを表示する

# pkg info -d ja-ibus-anthy
ja-ibus-anthy-1.5.11:
	pango-1.42.4_4
	ibus-1.5.22
	python37-3.7.8
	ja-anthy-0.4_2,1
	gtk-update-icon-cache-3.24.20
	gdk-pixbuf2-2.40.0
	py37-gobject3-3.28.3_1
	glib-2.56.3_8,1
	gettext-runtime-0.20.2
	atk-2.36.0

指定したパッケージを必要とするパッケージのリストを表示する

# pkg info -r ibus
ibus-1.5.22:
	ja-ibus-anthy-1.5.11
	gnome-control-center-3.28.2_6

指定したパッケージで提供されるすべての共有ライブラリを表示する

# pkg info -b ja-ibus-anthy
ja-ibus-anthy-1.5.11:
	libanthygobject-1.0.so.5

指定したパッケージで使用されるすべての共有ライブラリを表示する

# pkg info -B ja-ibus-anthy
ja-ibus-anthy-1.5.11:
	libanthy.so.1
	libintl.so.8
	libglib-2.0.so.0
	libgobject-2.0.so.0
	libanthydic.so.1

指定したパッケージのインストール先(パス、ファイル名)を表示する

# pkg info -l firefox
firefox-79.0,1:
	/usr/local/bin/firefox
	/usr/local/lib/firefox/application.ini
	/usr/local/lib/firefox/browser/chrome/icons/default/default128.png
	/usr/local/lib/firefox/browser/chrome/icons/default/default16.png
	/usr/local/lib/firefox/browser/chrome/icons/default/default32.png
	/usr/local/lib/firefox/browser/chrome/icons/default/default48.png
	/usr/local/lib/firefox/browser/chrome/icons/default/default64.png
	/usr/local/lib/firefox/browser/features/doh-rollout@mozilla.org.xpi
	/usr/local/lib/firefox/browser/features/formautofill@mozilla.org.xpi
	/usr/local/lib/firefox/browser/features/screenshots@mozilla.org.xpi
	/usr/local/lib/firefox/browser/features/webcompat-reporter@mozilla.org.xpi
	/usr/local/lib/firefox/browser/features/webcompat@mozilla.org.xpi
	/usr/local/lib/firefox/browser/omni.ja
	/usr/local/lib/firefox/defaults/pref/channel-prefs.js
	/usr/local/lib/firefox/dependentlibs.list
	/usr/local/lib/firefox/firefox
	/usr/local/lib/firefox/firefox-bin
	/usr/local/lib/firefox/fonts/TwemojiMozilla.ttf
	/usr/local/lib/firefox/gmp-clearkey/0.1/libclearkey.so
	/usr/local/lib/firefox/gmp-clearkey/0.1/manifest.json
	/usr/local/lib/firefox/gtk2/libmozgtk.so
	/usr/local/lib/firefox/liblgpllibs.so
	/usr/local/lib/firefox/libmozavcodec.so
	/usr/local/lib/firefox/libmozavutil.so
	/usr/local/lib/firefox/libmozgtk.so
	/usr/local/lib/firefox/libmozsqlite3.so
	/usr/local/lib/firefox/libmozwayland.so
	/usr/local/lib/firefox/libxul.so
	/usr/local/lib/firefox/omni.ja
	/usr/local/lib/firefox/pingsender
	/usr/local/lib/firefox/platform.ini
	/usr/local/lib/firefox/plugin-container
	/usr/local/lib/firefox/removed-files
	/usr/local/share/applications/firefox.desktop
	/usr/local/share/pixmaps/firefox.png

指定したパッケージの説明を表示する

# pkg info -D ja-ibus-anthy
ja-ibus-anthy-1.5.11:
On install:
ibus-anthy installation finished. To use ibus-anthy, please do the following:

If you are using bash, please add following lines to your $HOME/.bashrc:

export XIM=ibus
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export XIM_PROGRAM="ibus-daemon"
export XIM_ARGS="--daemonize --xim"

If you are using tcsh, please add following lines to your $HOME/.cshrc:

setenv XIM ibus
setenv GTK_IM_MODULE ibus
setenv QT_IM_MODULE ibus
setenv XMODIFIERS @im=ibus
setenv XIM_PROGRAM ibus-daemon
setenv XIM_ARGS "--daemonize --xim"

If you are using KDE4, you may create a shell script in $HOME/.kde4/env,
and add following lines:

#!/bin/sh
export XIM=ibus
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export XIM_PROGRAM="ibus-daemon"
export XIM_ARGS="--daemonize --xim"

-------------

If you cannot launch the IM selection panel by hitting "Super+space"
(usually "Win+space"), run the "ibus-setup" command and add "Japanese -
Anthy" via the Imput Method tab.

You may also add "ibus-daemon --daemonize --xim" to your ~/.xinitrc or
~/.xsession .

パッケージの説明にはインストール後に必要な設定や操作が表示されている事があります。インストール後やアップデート後に問題が発生した場合は、このメッセージを確認する事で問題を解決できる事があります。

パッケージのバージョンを調べる

インストールされているパッケージのパージョンを調べる

# pkg version 
accerciser-3.22.0                  =
accountsservice-0.6.42             =
adwaita-icon-theme-3.28.0          =
     .
     .
     .
xrdb-1.2.0                         =
xrefresh-1.0.6                     =
xset-1.2.4_3                       =
xsetmode-1.0.0                     ?
xsetroot-1.1.2                     =
xterm-351                          <
xtrans-1.4.0                       =
xvid-1.3.5,1                       <

[フラグの意味]

フラグ意味
=最新のパッケージ
<インストールされているパッケージのバージョンがcurrentバージョンより古い。
>インストールされているパッケージのバージョンがcurrentバージョンより新しい。
?インストールされたパッケージはインデックスに表示されません。
これは、期限切れのインデックスや、まだコミットされていないPRから取られたパッケージが原因である可能性があります。
!インストールされたパッケージはインデックスに存在します。
しかし、何らかの理由で インストールされたパッケージのバージョン番号とインデックスの対応するエントリを比較することができませんでした。

パッケージを指定してバージョンを調べる

# pkg version -n firefox -v
firefox-71.0_2,1                   <   needs updating (remote has 78.0.2,1)

-n 指定したパッケージ名と一致するパッケージを表示する。
-v 冗長な表記。アップデート可能なバージョンを表示する。

アップデート可能なパッケージを調べる

# pkg version -l '<' -v

-l 指定したステータスフラグと一致するパッケージを表示する。
-v 冗長な表記。

パッケージの更新

インストールされているパッケージをアップグレードする

# pkg update -f
# pkg upgrade -y

-y 確認を求められたらy(yes)で応答する。

上のコマンドは、まずサブコマンドの「update -f」でリモートリポジトリからローカルカタログを強制的に更新しています。

次に「upgrade -y」でインストールされているパッケージソフトウェアを更新します。

FreeBSDをメジャーアップグレードした際の操作

# pkg-static install -fy pkg
# pkg upgrade -y
# freebsd-update install
# shutdown -r now

FreeBSDをメジャーアップグレードした際には、パッケージソフトウェアをインストールする時の将来の問題を防ぐ為にpkgバイナリツールを新しいものに置き換えることを勧めています。

その他の操作

依存関係のなくなった不要なパッケージを削除する

# pkg autoremove

古いバージョンのパッケージを削除する

# pkg clean
# pkg clean -a

-a キャッシュ全体を削除。

「pkg clean」はリモートリポジトリからダウンロードされたパッケージのローカルキャッシュをクリンアップ(掃除)します。ローカルキャッシュには新しいバージョンに置き換えられた古いパッケージ及び提供されなくなったパッケージが保存されています。

コメント

タイトルとURLをコピーしました