スポンサーリンク

PKG_DELETE(1) FreeBSD 一般コマンドマニュアル PKG_DELETE(1)

名称

pkg_delete − インストールされているソフトウェア配布 package を削除するプ ログラム

書式

pkg_delete [−dDfGinrvxX] [−p prefix] pkg-name ...

pkg_delete −a [flags]

解説

pkg_delete コマンドは、 pkg_add(1) コマンドにより既にインストールされてい る package (訳注: FreeBSD の package system におけるパッケージを指す場合 にこう表記します) を削除するために用いられます。

警告

pkg_delete コマンドは package ファイルにより提供されるスクリプトやプログ ラムを実行することがあるので、あなたのシステムは、危険な配布ファイルを作 る極悪人からの ‘‘トロイの木馬’’ や他の巧妙な攻撃などを受ける可能性があり ます。

package ファイルを提供する人物の能力と身元を確認するとよいでしょう。より 進んだ安全のためには、package 記録ディレクトリ (/var/db/pkg/<pkg-name>/) にあるすべての package 制御ファイルを確認します。 +INSTALL, +POST-INSTALL, +DEINSTALL, +POST-DEINSTALL, +REQUIRE, +MTREE_DIRS の各 ファイルには特に注意を払い、+CONTENTS ファイルの @cwd, @mode (setuid を チェック), @dirrm, @exec, @unexec ディレクティブを調べてください。インス トールされている package 制御ファイルを調べるのには pkg_info(1) コマンド も使えます。

オプション

以下のコマンドラインオプションが提供されています:

       pkg-name ...

指定された package がアンインストールされます。

−a
無条件に、現在インストール済の package をすべて削除します。

−i
各 package の削除前に、確認を求めます。これは、標準入力デバイスが 端末かどうかに関係ありません。

−v
饒舌な出力に切り替えます。

−D
package にアンインストール用スクリプトが存在しても、それを実行し ません。

−n
実際にはアンインストールは行わず、アンインストールした場合に実行 されるであろうステップを表示します。

−p prefix
インストールされている package が明示的にディレクトリを設定してい ない場合に、削除するファイルの前に prefix をディレクトリとして付 け加えます。ほとんどの package では、このディレクトリは pkg_add(1) によってインストールされた場所に自動的に設定されます。

−d
ファイル削除により生じた空のディレクトリを削除します。デフォルト では、package の内容一覧に明示的に羅列されたファイル/ディレクトリ (通常のファイル/ディレクトリか @dirrm ディレクトリを伴ったもの) のみがアンインストール時に削除されます。このオプションにより pkg_delete は package を削除することにより生ずる空ディレクトリも 削除するようになります。

−f
依存関係が記録されていたり、アンインストールスクリプトや require スクリプトが失敗した場合でも、強制的に package を削除します。

−G
削除対象の package の選択時に、 pkg-name 中のシェルグロブパターン の展開を試みません (デフォルトでは、 pkg_deletepkg-name 中の シェルグロブパターンを自動的に展開します)。

−x
pkg-name
を正規表現として扱い、名前がこの正規表現にマッチする全 package を削除します。複数の正規表現を指定可能であす。この場合、 リスト中の少なくとも 1 個の正規表現にマッチする全 package が削除 されます。

−X
−x
と同様ですが、 pkg-name を拡張正規表現として扱います。

−r
再帰的な削除。指定した package に加え、これに依存する package も また削除します。

技術詳細

pkg_delete ユーティリティは名前の通りに働きます。 pkg_delete/var/db/pkg/<pkg-name> に記録されたインストール済みの package をチェック し、 package の内容を削除し、最後に package の記録も削除します。環境変数 PKG_DBDIR が設定されている場合には、前記パス /var/db/pkg/ にこれが優先し ます。

ある package が他のインストール済みの package から必要とされている場合、 pkg_delete はそれらの依存している package の一覧を表示し、package の削除 は行いません (ただし −f オプションが指定された場合を除く)。

package が require ファイル( pkg_create(1) を参照)を含んでいる場合、まず そのファイルを以下の引数を付けて実行し、アンインストール作業を続けるべき かどうかを確かめます:
require
<pkg-name> DEINSTALL
(ここで pkg-name は問題としている package の名前であり、 DEINSTALL はこれ がアンインストールであることを示すキーワードです) 終了ステータスが 0 以外 の場合には、 −f オプションが指定されていない限りアンインストールを中断し ます。

package に deinstall スクリプトが含まれている場合、そのスクリプトはファイ ルが削除される前に実行されます。 pkg_delete はオリジナルの package に含ま れていたファイルを削除することしか関知しないので、 package のインストール にまつわる雑多な事項をきれいに片づけるのはこの deinstall スクリプトの責任 です。 deinstall スクリプトは以下の引数を付けて実行されます:
script
<pkg-name> DEINSTALL
ここで、 pkg-name は対象の package 名であり、 DEINSTALL はこれがアンイン ストール前のフェーズであることを示すキーワードです。

: ( −k および −K のフラグを pkg_create(1) に使用することにより) package 作成時に deinstall と post-deinstall のスクリプトが別々に与えられる場合に は、 DEINSTALL キーワードは登場しません。

post-deinstall スクリプトが package に対して存在する場合、全ファイルが削 除された で実行されます。 package のインストールに際する更なる細々とし たことを片づけ、 (願わくば) package インストール前と同じシステム状態に戻 すことは、このスクリプトの責任です。

post-deinstall は次のように呼び出されます:
script
<pkg-name> POST-DEINSTALL
ここで pkg-name は対象の package 名であり、 POST-DEINSTALL はこれがアンイ ンストール後のフェーズであることを示すキーワードです。

: ( −k および −K のフラグを pkg_create(1) に使用することにより) package 作成時に deinstall と post-deinstall のスクリプトが別々に与えられる場合に は、 POST-DEINSTALL キーワードは登場しません。

POST-DEINSTALL および PRE-DEINSTALL のキーワードを渡す背景には、インス トールと削除のすべてを扱うことができる単一のプログラム/スクリプトを記述可 能にすることがあります。

しかしながら、この方法はメンテナンスがかなり難しく、インストールおよびア ンインストールの各局面を扱う別々のスクリプトを持つ方法には及ばないこと が、経験により分かりました。

すべてのスクリプトは環境変数 PKG_PREFIX にインストール時の prefix が設定 された状態で実行されます (上記の −p オプションを参照)。このことによ り、package の作者は pkg_deletepkg_add−p フラグにより package が インストールされるディレクトリが変更されても、きちんとふるまうスクリプト を書くことが可能になります。

環境変数

環境変数 PKG_DBDIR は、インストール済み package の代替データベースを指定 します。

関連ファイル

       /var/db/pkg

インストール済み package のデータベースのデフォルトの位置。

関連項目

pkg_add(1), pkg_create(1), pkg_info(1), pkg_version(1), mktemp(3), mtree(8)

作者

Jordan Hubbard

協力者

John Kohl ⟨jtk@rational.com⟩, Oliver Eikemeier ⟨eik@FreeBSD.org⟩

バグ

まだあるはずです。

FreeBSD 10.0 June 29, 2004 FreeBSD 10.0

スポンサーリンク