Patrick Welche <prlw1@cam.ac.uk>
[netbsd-mini2440.git] / external / bsd / pkg_install / dist / delete / pkg_delete.1
blob08458a9f31c6ec55d27e4e55dc22009d46922136
1 .\" $NetBSD: pkg_delete.1,v 1.23 2009/08/16 21:10:15 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 August 16, 2009
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 .Bk -words
30 .Op Fl K Ar pkg_dbdir
31 .Ek
32 .Bk -words
33 .Op Fl P Ar destdir
34 .Op Fl p Ar prefix
35 .Ek
36 .Ar pkg-name ...
37 .Sh DESCRIPTION
38 The
39 .Nm
40 command is used to delete packages that have been previously installed
41 with the
42 .Xr pkg_add 1
43 command.
44 The given packages are sorted, so that the dependencies of a package
45 are deleted after the package.
46 Before any action is executed,
47 .Nm
48 checks for packages that are marked as
49 .Cm preserved
50 or have depending packages left.
51 If the
52 .Fl k
53 flag is given, preserved packages are removed from the list of packages
54 to remove.
55 Unless the
56 .Fl f
57 flag is given,
58 .Nm
59 stops on the first error.
60 .Sh WARNING
61 .Bf -emphasis
62 Since the
63 .Nm
64 command may execute scripts or programs provided by a package file,
65 your system may be susceptible to
66 .Dq Trojan horses
67 or other subtle
68 attacks from miscreants who create dangerous package files.
69 .Pp
70 You are advised to verify the competence and identity of those who
71 provide installable package files.
72 For extra protection, examine all the package control files in the
73 package record directory
74 .Pa ( /var/db/pkg/\*[Lt]pkg-name\*[Gt]/ ) .
75 Pay particular
76 attention to any
77 .Pa +INSTALL
79 .Pa +DEINSTALL
80 files, and inspect the
81 .Pa +CONTENTS
82 file for
83 .Cm @cwd ,
84 .Cm @mode
85 (check for setuid),
86 .Cm @dirrm ,
87 .Cm @exec ,
88 and
89 .Cm @unexec
90 directives, and/or use the
91 .Xr pkg_info 1
92 command to examine the installed package control files.
93 .Ef
94 .Sh OPTIONS
95 The following command line options are supported:
96 .Bl -tag -width indent
97 .It Ar pkg-name ...
98 The named packages are deinstalled, wildcards can be used, see
99 .Xr pkg_info 1 .
100 If no version is given, the one currently installed
101 will be removed.
102 If the
103 .Fl F
104 flag is given, one or more (absolute) filenames may be specified and
105 the Package Database will be consulted for the package to which the
106 given file belongs.
107 These packages are then deinstalled.
108 .It Fl A
109 Recursively remove all automatically installed packages that were needed
110 by the given packages and are no longer required.
111 See also the
112 .Fl R
113 flag.
114 .It Fl D
115 If a deinstallation script exists for a given package, do not execute it.
116 .It Fl F
117 Any pkg-name given will be interpreted as pathname which is
118 subsequently transformed in a (real) package name via the Package
119 Database.
120 That way, packages can be deleted by giving a filename
121 instead of the package-name.
122 .It Fl f
123 Force removal of the package, even if a dependency is recorded or the
124 deinstall script fails.
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
135 .Ar pkg_dbdir
136 as the package database directory.
137 If this option isn't specified, then the package database directory is
138 taken from the value of the environment variable
139 .Ev PKG_DBDIR
140 if it's set, otherwise it defaults to
141 .Pa /var/db/pkg .
142 .It Fl k
143 Silently skip all packages that are marked as
144 .Cm preserved .
145 .It Fl N
146 Remove the package's registration and its entries from the package database,
147 but leave the files installed.
148 Don't run any deinstall scripts or @unexec lines either.
149 .It Fl n
150 Don't actually deinstall a package, just report the steps that
151 would be taken if it were.
152 .It Fl O
153 Only delete the package's entries from the package database, do not
154 touch the package or its files itself.
155 .It Fl p Ar destdir
156 Prefix all file and directory names with
157 .Ar destdir .
158 For packages without install scripts this has the same behavior as
159 using chroot.
160 .It Fl p Ar prefix
162 .Ar prefix
163 as the directory in which to delete files from any installed packages
164 which do not explicitly set theirs.
165 For most packages, the prefix will
166 be set automatically to the installed location by
167 .Xr pkg_add 1 .
168 .It Fl R
169 Recursively remove all packages that were needed by the given packages
170 and that have no other dependencies left.
171 This option overrides the
172 .Fl A
173 flag.
174 .It Fl r
175 Recursively remove all packages that require one of the packages given.
176 .It Fl V
177 Print version number and exit.
178 .It Fl v
179 Turn on verbose output.
181 .Sh TECHNICAL DETAILS
183 does pretty much what it says.
184 It examines installed package records in
185 .Pa /var/db/pkg/\*[Lt]pkg-name\*[Gt] ,
186 deletes the package contents, and finally removes the package records
187 (if an alternate package database directory is specified, then it
188 overrides the
189 .Pa /var/db/pkg
190 path shown above).
192 If a package is required by other installed packages,
194 will list those dependent packages and refuse to delete the package
195 (unless the
196 .Fl f
197 option is given).
199 If a package has been marked as a
200 .Cm preserved
201 package, it will not be able to be deleted
202 (unless more than one occurrence of the
203 .Fl f
204 option is given).
206 If a filename is given instead of a package name, the package of which
207 the given file belongs to can be deleted if the
208 .Fl F
209 Flag is given.
210 The filename needs to be absolute, see the output produced by the pkg_info
211 .Fl aF
212 command.
214 If a
215 .Cm deinstall
216 script exists for the package, it is executed before and after
217 any files are removed.
218 It is this script's responsibility to clean up any additional messy details
219 around the package's installation, since all
221 knows how to do is delete the files created in the original distribution.
223 .Ic deinstall
224 script is called as:
225 .Bd -filled -offset indent -compact
226 .Cm deinstall
227 .Aq Ar pkg-name
228 .Ar VIEW-DEINSTALL
230 before removing the package from a view, and as:
231 .Bd -filled -offset indent -compact
232 .Cm deinstall
233 .Aq Ar pkg-name
234 .Ar DEINSTALL
236 before deleting all files and as:
237 .Bd -filled -offset indent -compact
238 .Cm deinstall
239 .Aq Ar pkg-name
240 .Ar POST-DEINSTALL
242 after deleting them.
243 Passing the keywords
244 .Ar VIEW-DEINSTALL ,
245 .Ar DEINSTALL
247 .Ar POST-DEINSTALL
248 lets you potentially write only one program/script that handles all
249 aspects of installation and deletion.
251 All scripts are called with the environment variable
252 .Ev PKG_PREFIX
253 set to the installation prefix (see the
254 .Fl p
255 option above).
256 This allows a package author to write a script
257 that reliably performs some action on the directory where the package
258 is installed, even if the user might have changed it by specifying the
259 .Fl p
260 option when running
263 .Xr pkg_add 1 .
264 The scripts are also called with the
265 .Ev PKG_METADATA_DIR
266 environment variable set to the location of the
267 .Pa +*
268 meta-data files, and with the
269 .Ev PKG_REFCOUNT_DBDIR
270 environment variable set to the location of the package reference counts
271 database directory.
272 If the
273 .Fl P
274 flag was given to
275 .Nm ,
276 .Ev PKG_DESTDIR
277 will be set to
278 .Ar destdir .
279 .Sh ENVIRONMENT
280 .Bl -tag -width PKG_DBDIR
281 .It Ev PKG_DBDIR
282 If the
283 .Fl K
284 flag isn't given, then
285 .Ev PKG_DBDIR
286 is the location of the package database directory.
287 The default package database directory is
288 .Pa /var/db/pkg .
289 .It Ev PKG_REFCOUNT_DBDIR
290 Location of the package reference counts database directory.
291 The default location is the path to the package database directory with
292 .Dq .refcount
293 appended to the path, e.g.
294 .Pa /var/db/pkg.refcount .
296 .Sh SEE ALSO
297 .Xr pkg_add 1 ,
298 .Xr pkg_admin 1 ,
299 .Xr pkg_create 1 ,
300 .Xr pkg_info 1 ,
301 .Xr pkgsrc 7
302 .Sh AUTHORS
303 .Bl -tag -width indent -compact
304 .It "Jordan Hubbard"
305 most of the work
306 .It "John Kohl"
307 refined it for
309 .It "Hubert Feyrer"
311 wildcard dependency processing, pkgdb, recursive "down"
312 delete, etc.
313 .It Joerg Sonnenberger
314 Rewrote most of the code to compute correct order of deinstallation
315 and to improve error handling.