294 lines
7.4 KiB
Groff
294 lines
7.4 KiB
Groff
.\"
|
|
.\" FreeBSD install - a package for the installation and maintainance
|
|
.\" 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
|
|
.\"
|
|
.\"
|
|
.\" @(#)pkg_delete.1
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd June 29, 2004
|
|
.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 dDfGinrvxX
|
|
.Op Fl p Ar prefix
|
|
.Ar pkg-name ...
|
|
.Nm
|
|
.Fl a
|
|
.Op Ar flags
|
|
.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 Em 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/<pkg-name>/ ) .
|
|
Pay particular attention to any +INSTALL, +POST-INSTALL, +DEINSTALL,
|
|
+POST-DEINSTALL, +REQUIRE or +MTREE_DIRS files, and inspect the +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.
|
|
.It Fl a
|
|
Unconditionally delete all currently installed packages.
|
|
.It Fl i
|
|
Request confirmation before attempting to delete each package,
|
|
regardless whether or not the standard input device is a
|
|
terminal.
|
|
.It Fl v
|
|
Turn on verbose output.
|
|
.It Fl D
|
|
If a deinstallation script exists for a given package, do not execute it.
|
|
.It Fl n
|
|
Don't actually deinstall a package, just report the steps that
|
|
would be taken if it were.
|
|
.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 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
|
|
Force removal of the package, even if a dependency is recorded or the
|
|
deinstall or require script fails.
|
|
.It Fl G
|
|
Do not try to expand shell glob patterns in the
|
|
.Ar pkg-name
|
|
when selecting packages to be deleted (by default
|
|
.Nm
|
|
automatically expands shell glob patterns in the
|
|
.Ar pkg-name ) .
|
|
.It Fl x
|
|
Treat the
|
|
.Ar pkg-name
|
|
as a regular expression and delete all packages whose names match
|
|
that regular expression.
|
|
Multiple regular expressions could be
|
|
provided, in that case
|
|
.Nm
|
|
deletes all packages that match at least one
|
|
regular expression from the list.
|
|
.It Fl X
|
|
Like
|
|
.Fl x ,
|
|
but treats the
|
|
.Ar pkg-name
|
|
as an extended regular expression.
|
|
.It Fl r
|
|
Recursive removal.
|
|
In addition to specified packages, delete all
|
|
packages that depend on those packages as well.
|
|
.El
|
|
.Sh TECHNICAL DETAILS
|
|
The
|
|
.Nm
|
|
utility
|
|
does pretty much what it says.
|
|
It examines installed package records in
|
|
.Pa /var/db/pkg/<pkg-name> ,
|
|
deletes the package contents, and finally removes the package records.
|
|
If the environment variable
|
|
.Ev PKG_DBDIR
|
|
is set, this 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 the package contains a
|
|
.Ar require
|
|
file (see
|
|
.Xr pkg_create 1 ) ,
|
|
then this is executed first as
|
|
.Bd -ragged -offset indent -compact
|
|
.Cm require
|
|
.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 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
|
|
.Nm deinstall
|
|
script is called as:
|
|
.Bd -ragged -offset indent -compact
|
|
.Cm script
|
|
.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 this as the pre-deinstallation phase.
|
|
.Pp
|
|
.Sy Note :
|
|
The
|
|
.Ar DEINSTALL
|
|
keyword will not appear if separate scripts for deinstall and post-deinstall
|
|
are given during package creation time (using the
|
|
.Fl k
|
|
and
|
|
.Fl K
|
|
flags to
|
|
.Xr pkg_create 1 ) .
|
|
.Pp
|
|
If a
|
|
.Cm post-deinstall
|
|
script exists for the package, it is executed
|
|
.Cm after
|
|
all files are removed.
|
|
It is this script's responsibility to clean up any
|
|
additional messy details around the package's installation, and leave the
|
|
system (hopefully) in the same state that it was prior to the installation
|
|
of the package.
|
|
.Pp
|
|
The
|
|
.Nm post-deinstall
|
|
script is called as:
|
|
.Bd -ragged -offset indent -compact
|
|
.Cm script
|
|
.Ar <pkg-name>
|
|
.Ar POST-DEINSTALL
|
|
.Ed
|
|
where
|
|
.Ar pkg-name
|
|
is the name of the package in question and
|
|
.Ar POST-DEINSTALL
|
|
is a keyword denoting this as the post-deinstallation phase.
|
|
.Pp
|
|
.Sy Note :
|
|
The
|
|
.Ar POST-DEINSTALL
|
|
keyword will not appear if separate scripts for deinstall and post-deinstall
|
|
are given during package creation time (using the
|
|
.Fl k
|
|
and
|
|
.Fl K
|
|
flags to
|
|
.Xr pkg_create 1 ) .
|
|
.Pp
|
|
Reasoning behind passing keywords such as
|
|
.Ar DEINSTALL
|
|
and
|
|
.Ar POST-DEINSTALL
|
|
is that it lets you potentially write only one program/script that handles
|
|
all aspects of installation and deletion.
|
|
.Pp
|
|
But experience has proved that this is a lot more difficult to maintain and
|
|
is not as advantageous as having separate scripts that handle each aspect of
|
|
installation and deinstallation.
|
|
.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
|
|
.Cm pkg_add .
|
|
.Sh ENVIRONMENT
|
|
The environment variable
|
|
.Ev PKG_DBDIR
|
|
specifies an alternative location for the installed package database.
|
|
.Sh FILES
|
|
.Bl -tag -width /var/db/pkg -compact
|
|
.It Pa /var/db/pkg
|
|
Default location of the installed package database.
|
|
.El
|
|
.Sh SEE ALSO
|
|
.Xr pkg_add 1 ,
|
|
.Xr pkg_create 1 ,
|
|
.Xr pkg_info 1 ,
|
|
.Xr pkg_version 1 ,
|
|
.Xr mktemp 3 ,
|
|
.Xr mtree 8
|
|
.Sh AUTHORS
|
|
.An Jordan Hubbard
|
|
.Sh CONTRIBUTORS
|
|
.An John Kohl Aq jtk@rational.com ,
|
|
.An Oliver Eikemeier Aq eik@FreeBSD.org
|
|
.Sh BUGS
|
|
Sure to be some.
|