Improve the process for GNU tools
[minix3.git] / external / bsd / pkg_install / dist / delete / pkg_delete.1
blob2ee40c4c83c135390e8cd2a07fa233928aba488f
1 .\" $NetBSD: pkg_delete.1,v 1.1.1.8 2010/04/23 20:54:08 joerg Exp $
2 .\"
3 .\" FreeBSD install - a package for the installation and maintenance
4 .\" of non-core utilities.
5 .\"
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
8 .\" are met:
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\"    notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\"    notice, this list of conditions and the following disclaimer in the
13 .\"    documentation and/or other materials provided with the distribution.
14 .\"
15 .\" Jordan K. Hubbard
16 .\"
17 .\"
18 .\"     from FreeBSD: @(#)pkg_delete.1
19 .\"
20 .Dd January 20, 2010
21 .Dt PKG_DELETE 1
22 .Os
23 .Sh NAME
24 .Nm pkg_delete
25 .Nd a utility for deleting previously installed software package distributions
26 .Sh SYNOPSIS
27 .Nm
28 .Op Fl ADFfkNnORrVv
29 .Op Fl K Ar pkg_dbdir
30 .Op Fl P Ar destdir
31 .Op Fl p Ar prefix
32 .Ar pkg-name ...
33 .Sh DESCRIPTION
34 The
35 .Nm
36 command is used to delete packages that have been previously installed
37 with the
38 .Xr pkg_add 1
39 command.
40 The given packages are sorted, so that the dependencies needed by a
41 package are deleted after the package.
42 Before any action is executed,
43 .Nm
44 checks for packages that are marked as
45 .Cm preserved
46 or have depending packages left.
47 If the
48 .Fl k
49 flag is given, preserved packages are skipped and not removed.
50 Unless the
51 .Fl f
52 flag is given,
53 .Nm
54 stops on the first error.
55 .Sh WARNING
56 .Bf -emphasis
57 Since the
58 .Nm
59 command may execute scripts or programs provided by a package file,
60 your system may be susceptible to
61 .Dq Trojan horses
62 or other subtle
63 attacks from miscreants who create dangerous package files.
64 .Pp
65 You are advised to verify the competence and identity of those who
66 provide installable package files.
67 For extra protection, examine all the package control files in the
68 package record directory
69 .Pa \*[Lt]PKG_DBDIR\*[Gt]/\*[Lt]pkg-name\*[Gt]/ ) .
70 Pay particular
71 attention to any
72 .Pa +INSTALL
74 .Pa +DEINSTALL
75 files, and inspect the
76 .Pa +CONTENTS
77 file for
78 .Cm @cwd ,
79 .Cm @mode
80 (check for setuid),
81 .Cm @dirrm ,
82 .Cm @exec ,
83 and
84 .Cm @unexec
85 directives, and/or use the
86 .Xr pkg_info 1
87 command to examine the installed package control files.
88 .Ef
89 .Sh OPTIONS
90 The following command line options are supported:
91 .Bl -tag -width indent
92 .It Ar pkg-name ...
93 The named packages are deinstalled, wildcards can be used, see
94 .Xr pkg_info 1 .
95 If no version is given, the one currently installed
96 will be removed.
97 If the
98 .Fl F
99 flag is given, one or more (absolute) filenames may be specified and
100 the package database will be consulted for the package to which the
101 given file belongs.
102 These packages are then deinstalled.
103 .It Fl A
104 Recursively remove all automatically installed packages that were needed
105 by the given packages and are no longer required.
106 Does not remove manually installed packages; see also the
107 .Fl R
108 flag.
109 .It Fl D
110 If a deinstallation script exists for a given package, do not execute it.
111 .It Fl F
113 .Ar pkg-name
114 given will be interpreted as pathname which is
115 subsequently transformed in a (real) package name via the package
116 database.
117 That way, packages can be deleted by giving a filename
118 instead of the package-name.
119 .It Fl f
120 Force removal of the package, even if a dependency is recorded or the
121 deinstall script fails.
122 This might break the package database; see
123 .Xr pkg_admin 1
124 on how to repair it.
125 .It Fl ff
126 Force removal of the package, even if the package is marked as a
127 .Cm preserved
128 package.
129 Note that this is a dangerous operation.
130 See also the
131 .Fl k
132 option.
133 .It Fl K Ar pkg_dbdir
134 Override the value of the
135 .Dv PKG_DBDIR
136 configuration option with the value
137 .Ar pkg_dbdir .
138 .It Fl k
139 Silently skip all packages that are marked as
140 .Cm preserved .
141 .It Fl N
142 Remove the package's registration and its entries from the package database,
143 but leave the files installed.
144 Don't run any deinstall scripts or
145 .Cm @unexec
146 lines either.
147 .It Fl n
148 Don't actually deinstall a package, just report the steps that
149 would be taken.
150 .It Fl O
151 Only delete the package's entries from the package database; do not
152 touch the package or its files itself.
153 .It Fl P Ar destdir
154 Prefix all file and directory names with
155 .Ar destdir .
156 For packages without install scripts this has the same behavior as
157 using
158 .Xr chroot 8 .
159 .It Fl p Ar prefix
161 .Ar prefix
162 as the directory in which to delete files from any installed packages
163 which do not explicitly set theirs.
164 For most packages, the prefix will
165 be set automatically to the installed location by
166 .Xr pkg_add 1 .
167 .It Fl R
168 Recursively remove all packages that were needed by the given packages
169 and are no longer required.
170 This option overrides the
171 .Fl A
172 flag.
173 .It Fl r
174 Recursively remove all packages that require one of the packages given.
175 .It Fl V
176 Print version number and exit.
177 .It Fl v
178 Turn on verbose output.
180 .Sh TECHNICAL DETAILS
182 does pretty much what it says.
183 It examines installed package records in
184 .Pa \*[Lt]PKG_DBDIR\*[Gt]/\*[Lt]pkg-name\*[Gt] ,
185 deletes the package contents, and finally removes the package records.
187 If a package is required by other installed packages,
189 will list those dependent packages and refuse to delete the package
190 (unless the
191 .Fl f
192 option is given).
194 If a package has been marked as a
195 .Cm preserved
196 package, it will not be able to be deleted
197 (unless more than one occurrence of the
198 .Fl f
199 option is given).
201 If a filename is given instead of a package name, the package of which
202 the given file belongs to can be deleted if the
203 .Fl F
204 flag is given.
205 The filename needs to be absolute, see the output produced by the
206 .Xr pkg_info 1
207 .Fl aF
208 command.
210 If a
211 .Cm deinstall
212 script exists for the package, it is executed before and after
213 any files are removed.
214 It is this script's responsibility to clean up any additional messy details
215 around the package's installation, since all
217 knows how to do is delete the files created in the original distribution.
219 .Ic deinstall
220 script is called as:
221 .Bd -filled -offset indent -compact
222 .Cm deinstall
223 .Aq Ar pkg-name
224 .Ar VIEW-DEINSTALL
226 before removing the package from a view, and as:
227 .Bd -filled -offset indent -compact
228 .Cm deinstall
229 .Aq Ar pkg-name
230 .Ar DEINSTALL
232 before deleting all files and as:
233 .Bd -filled -offset indent -compact
234 .Cm deinstall
235 .Aq Ar pkg-name
236 .Ar POST-DEINSTALL
238 after deleting them.
239 Passing the keywords
240 .Ar VIEW-DEINSTALL ,
241 .Ar DEINSTALL ,
243 .Ar POST-DEINSTALL
244 lets you potentially write only one program/script that handles all
245 aspects of installation and deletion.
247 All scripts are called with the environment variable
248 .Ev PKG_PREFIX
249 set to the installation prefix (see the
250 .Fl p
251 option above).
252 This allows a package author to write a script
253 that reliably performs some action on the directory where the package
254 is installed, even if the user might have changed it by specifying the
255 .Fl p
256 option when running
259 .Xr pkg_add 1 .
260 The scripts are also called with the
261 .Ev PKG_METADATA_DIR
262 environment variable set to the location of the
263 .Pa +*
264 meta-data files, and with the
265 .Ev PKG_REFCOUNT_DBDIR
266 environment variable set to the location of the package reference counts
267 database directory.
268 If the
269 .Fl P
270 flag was given to
271 .Nm ,
272 .Ev PKG_DESTDIR
273 will be set to
274 .Ar destdir .
275 .Sh ENVIRONMENT
277 .Xr pkg_install.conf 5
278 for options, that can also be specified using the environment.
279 .Sh SEE ALSO
280 .Xr pkg_add 1 ,
281 .Xr pkg_admin 1 ,
282 .Xr pkg_create 1 ,
283 .Xr pkg_info 1 ,
284 .Xr pkg_install.conf 5
285 .Xr pkgsrc 7
286 .Sh AUTHORS
287 .Bl -tag -width indent -compact
288 .It "Jordan Hubbard"
289 most of the work
290 .It "John Kohl"
291 refined it for
293 .It "Hubert Feyrer"
295 wildcard dependency processing, pkgdb, recursive "down"
296 delete, etc.
297 .It Joerg Sonnenberger
298 Rewrote most of the code to compute correct order of deinstallation
299 and to improve error handling.