313 lines
8.2 KiB
Groff
313 lines
8.2 KiB
Groff
.\" $NetBSD: pkg_delete.1,v 1.39 2005/02/26 14:09:58 grant Exp $
|
|
.\"
|
|
.\" FreeBSD install - a package for the installation and maintenance
|
|
.\" of non-core utilities.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" Jordan K. Hubbard
|
|
.\"
|
|
.\"
|
|
.\" from FreeBSD: @(#)pkg_delete.1
|
|
.\"
|
|
.Dd February 4, 2005
|
|
.Dt PKG_DELETE 1
|
|
.Os
|
|
.Sh NAME
|
|
.Nm pkg_delete
|
|
.Nd a utility for deleting previously installed software package distributions
|
|
.Sh SYNOPSIS
|
|
.Nm
|
|
.Op Fl DdFfNnORrVv
|
|
.Bk -words
|
|
.Op Fl K Ar pkg_dbdir
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl p Ar prefix
|
|
.Ek
|
|
.Ar pkg-name ...
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
command is used to delete packages that have been previously installed
|
|
with the
|
|
.Xr pkg_add 1
|
|
command.
|
|
.Sh WARNING
|
|
.Bf -emphasis
|
|
Since the
|
|
.Nm
|
|
command may execute scripts or programs provided by a package file,
|
|
your system may be susceptible to
|
|
.Dq Trojan horses
|
|
or other subtle
|
|
attacks from miscreants who create dangerous package files.
|
|
.Pp
|
|
You are advised to verify the competence and identity of those who
|
|
provide installable package files.
|
|
For extra protection, examine all the package control files in the
|
|
package record directory
|
|
.Pa ( /var/db/pkg/\*[Lt]pkg-name\*[Gt]/ ) .
|
|
Pay particular
|
|
attention to any
|
|
.Pa +INSTALL ,
|
|
.Pa +DEINSTALL ,
|
|
.Pa +REQUIRE ,
|
|
or
|
|
.Pa +MTREE_DIRS
|
|
files, and inspect the
|
|
.Pa +CONTENTS
|
|
file for
|
|
.Cm @cwd ,
|
|
.Cm @mode
|
|
(check for setuid),
|
|
.Cm @dirrm ,
|
|
.Cm @exec ,
|
|
and
|
|
.Cm @unexec
|
|
directives, and/or use the
|
|
.Xr pkg_info 1
|
|
command to examine the installed package control files.
|
|
.Ef
|
|
.Sh OPTIONS
|
|
The following command line options are supported:
|
|
.Bl -tag -width indent
|
|
.It Ar pkg-name ...
|
|
The named packages are deinstalled, wildcards can be used, see
|
|
.Xr pkg_info 1 .
|
|
If no version is given, the one currently installed
|
|
will be removed.
|
|
If the
|
|
.Fl F
|
|
flag is given, one or more (absolute) filenames may be specified and
|
|
the Package Database will be consulted for the package to which the
|
|
given file belongs.
|
|
These packages are then deinstalled.
|
|
.It Fl D
|
|
If a deinstallation script exists for a given package, do not execute it.
|
|
.It Fl d
|
|
Remove empty directories created by file cleanup.
|
|
By default, only files/directories explicitly listed in a package's
|
|
contents (either as normal files/directories or with the
|
|
.Cm @dirrm
|
|
directive) will be removed at deinstallation time.
|
|
This option tells
|
|
.Nm
|
|
to also remove any directories that were emptied as a result of removing
|
|
the package.
|
|
.It Fl F
|
|
Any pkg-name given will be interpreted as pathname which is
|
|
subsequently transformed in a (real) package name via the Package
|
|
Database.
|
|
That way, packages can be deleted by giving a filename
|
|
instead of the package-name.
|
|
.It Fl f
|
|
Force removal of the package, even if a dependency is recorded or the
|
|
deinstall or require script fails.
|
|
.It Fl K Ar pkg_dbdir
|
|
Set
|
|
.Ar pkg_dbdir
|
|
as the package database directory.
|
|
If this option isn't specified, then the package database directory is
|
|
taken from the value of the environment variable
|
|
.Ev PKG_DBDIR
|
|
if it's set, otherwise it defaults to
|
|
.Pa /var/db/pkg .
|
|
.It Fl N
|
|
Remove the package's registration and its entries from the package database,
|
|
but leave the files installed.
|
|
Don't run any deinstall scripts or @unexec lines either.
|
|
.It Fl n
|
|
Don't actually deinstall a package, just report the steps that
|
|
would be taken if it were.
|
|
.It Fl O
|
|
Only delete the package's entries from the package database, do not
|
|
touch the package or its files itself.
|
|
.It Fl p Ar prefix
|
|
Set
|
|
.Ar prefix
|
|
as the directory in which to delete files from any installed packages
|
|
which do not explicitly set theirs.
|
|
For most packages, the prefix will
|
|
be set automatically to the installed location by
|
|
.Xr pkg_add 1 .
|
|
.It Fl R
|
|
This option triggers a recursive delete of the given package and any
|
|
packages it depends on, unless some other package still needs a
|
|
dependent package.
|
|
This
|
|
.Fl R
|
|
option can be used to clean up by deleting a package and all its
|
|
then-unneeded dependent packages.
|
|
.It Fl r
|
|
.Nm
|
|
first builds a list of all packages that require (directly and indirectly)
|
|
the one being deleted.
|
|
It then deletes these packages using
|
|
.Nm
|
|
with the given options before deleting the user specified package.
|
|
This
|
|
.Fl r
|
|
option can be used to recursively delete a package and all of the
|
|
packages which depend on that package.
|
|
.It Fl V
|
|
Print version number and exit.
|
|
.It Fl v
|
|
Turn on verbose output.
|
|
.El
|
|
.Sh TECHNICAL DETAILS
|
|
.Nm
|
|
does pretty much what it says.
|
|
It examines installed package records in
|
|
.Pa /var/db/pkg/\*[Lt]pkg-name\*[Gt] ,
|
|
deletes the package contents, and finally removes the package records
|
|
(if an alternate package database directory is specified, then it
|
|
overrides the
|
|
.Pa /var/db/pkg
|
|
path shown above).
|
|
.Pp
|
|
If a package is required by other installed packages,
|
|
.Nm
|
|
will list those dependent packages and refuse to delete the package
|
|
(unless the
|
|
.Fl f
|
|
option is given).
|
|
.Pp
|
|
If a package has been marked as a
|
|
.Cm preserved
|
|
package, it will not be able to be deleted
|
|
(unless more than one occurrence of the
|
|
.Fl f
|
|
option is given).
|
|
.Pp
|
|
If a filename is given instead of a package name, the package of which
|
|
the given file belongs to can be deleted if the
|
|
.Fl F
|
|
Flag is given.
|
|
The filename needs to be absolute, see the output produced by the pkg_info
|
|
.Fl aF
|
|
command.
|
|
.Pp
|
|
If the package contains a
|
|
.Ar require
|
|
file (see
|
|
.Xr pkg_create 1 ) ,
|
|
then this is executed first as
|
|
.Bd -filled -offset indent -compact
|
|
.Cm require
|
|
.Aq Ar pkg-name
|
|
.Ar DEINSTALL
|
|
.Ed
|
|
(where
|
|
.Ar pkg-name
|
|
is the name of the package in question and
|
|
.Ar DEINSTALL
|
|
is a keyword denoting that this is a deinstallation)
|
|
to see whether or not deinstallation should continue.
|
|
A non-zero exit status means no, unless the
|
|
.Fl f
|
|
option is specified.
|
|
.Pp
|
|
If a
|
|
.Cm deinstall
|
|
script exists for the package, it is executed before and after
|
|
any files are removed.
|
|
It is this script's responsibility to clean up any additional messy details
|
|
around the package's installation, since all
|
|
.Nm
|
|
knows how to do is delete the files created in the original distribution.
|
|
The
|
|
.Ic deinstall
|
|
script is called as:
|
|
.Bd -filled -offset indent -compact
|
|
.Cm deinstall
|
|
.Aq Ar pkg-name
|
|
.Ar VIEW-DEINSTALL
|
|
.Ed
|
|
before removing the package from a view, and as:
|
|
.Bd -filled -offset indent -compact
|
|
.Cm deinstall
|
|
.Aq Ar pkg-name
|
|
.Ar DEINSTALL
|
|
.Ed
|
|
before deleting all files and as:
|
|
.Bd -filled -offset indent -compact
|
|
.Cm deinstall
|
|
.Aq Ar pkg-name
|
|
.Ar POST-DEINSTALL
|
|
.Ed
|
|
after deleting them.
|
|
Passing the keywords
|
|
.Ar VIEW-DEINSTALL ,
|
|
.Ar DEINSTALL
|
|
and
|
|
.Ar POST-DEINSTALL
|
|
lets you potentially write only one program/script that handles all
|
|
aspects of installation and deletion.
|
|
.Pp
|
|
All scripts are called with the environment variable
|
|
.Ev PKG_PREFIX
|
|
set to the installation prefix (see the
|
|
.Fl p
|
|
option above).
|
|
This allows a package author to write a script
|
|
that reliably performs some action on the directory where the package
|
|
is installed, even if the user might have changed it by specifying the
|
|
.Fl p
|
|
option when running
|
|
.Nm
|
|
or
|
|
.Xr pkg_add 1 .
|
|
The scripts are also called with the
|
|
.Ev PKG_METADATA_DIR
|
|
environment variable set to the location of the
|
|
.Pa +*
|
|
meta-data files, and with the
|
|
.Ev PKG_REFCOUNT_DBDIR
|
|
environment variable set to the location of the package reference counts
|
|
database directory.
|
|
.Sh ENVIRONMENT
|
|
.Bl -tag -width PKG_DBDIR
|
|
.It Ev PKG_DBDIR
|
|
If the
|
|
.Fl K
|
|
flag isn't given, then
|
|
.Ev PKG_DBDIR
|
|
is the location of the package database directory.
|
|
The default package database directory is
|
|
.Pa /var/db/pkg .
|
|
.It Ev PKG_REFCOUNT_DBDIR
|
|
Location of the package reference counts database directory.
|
|
The default location is the path to the package database directory with
|
|
.Dq .refcount
|
|
appended to the path, e.g.
|
|
.Pa /var/db/pkg.refcount .
|
|
.El
|
|
.Sh SEE ALSO
|
|
.Xr pkg_add 1 ,
|
|
.Xr pkg_admin 1 ,
|
|
.Xr pkg_create 1 ,
|
|
.Xr pkg_info 1 ,
|
|
.Xr mktemp 3 ,
|
|
.Xr packages 7 ,
|
|
.Xr mtree 8
|
|
.Sh AUTHORS
|
|
.Bl -tag -width indent -compact
|
|
.It "Jordan Hubbard"
|
|
most of the work
|
|
.It "John Kohl"
|
|
refined it for
|
|
.Nx
|
|
.It "Hubert Feyrer"
|
|
.Nx
|
|
wildcard dependency processing, pkgdb, recursive "down"
|
|
delete, etc.
|
|
.El
|