xref: /freebsd/share/man/man7/ports.7 (revision 830940567b49bb0c08dfaed40418999e76616909)
1.\"
2.\" Copyright (c) 1997 David E. O'Brien
3.\"
4.\" All rights reserved.
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.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
16.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
19.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25.\"
26.\" $FreeBSD$
27.\"
28.Dd January 21, 2009
29.Dt PORTS 7
30.Os
31.Sh NAME
32.Nm ports
33.Nd contributed applications
34.Sh DESCRIPTION
35The
36.Fx
37Ports Collection
38offers a simple way for users and
39administrators to install applications.
40Each
41.Em port
42contains any patches necessary to make the original
43application source code compile and run on
44.Bx .
45Compiling an
46application is as simple as typing
47.Nm make Cm build
48in the port directory!
49The
50.Pa Makefile
51automatically fetches the
52application source code, either from a local disk or via FTP, unpacks it
53on your system, applies the patches, and compiles it.
54If all goes well,
55simply type
56.Nm make Cm install
57to install the application.
58.Pp
59It is possible to download and use ports from the
60.Fx
61repository
62that are newer than the installed system; however it is important to
63install the appropriate
64.Dq "Upgrade Kit"
65from
66.Pa http://www.FreeBSD.org/ports/
67first!
68The
69.Xr portcheckout 1 Pq Pa ports/ports-mgmt/portcheckout
70script (also a port, of course!) will help to download new ports.
71.Pp
72For more information about using ports, see
73.Dq "Packages and Ports"
74in
75.%B "The FreeBSD Handbook" ,
76.Pa ( file:/usr/share/doc/en_US.ISO8859-1/books/handbook/ports.html
77or
78.Pa http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/ports.html ) .
79For information about creating new ports, see
80.%B "The Porter's Handbook"
81.Pa ( file:/usr/share/doc/en_US.ISO8859-1/books/porters-handbook/index.html
82or
83.Pa http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/porters-handbook/ ) .
84.Sh TARGETS
85Some of the targets work recursively through subdirectories.
86This lets you, for example, install all of the
87.Dq Li biology
88ports.
89The targets that do this are
90.Cm build , checksum , clean , configure ,
91.Cm depends , extract , fetch , install ,
92and
93.Cm package .
94.Pp
95The following targets will be run automatically by each proceeding
96target in order.
97That is,
98.Cm build
99will be run
100(if necessary)
101by
102.Cm install ,
103and so on all the way to
104.Cm fetch .
105Usually, you will only use the
106.Cm install
107target.
108.Bl -tag -width ".Cm configure"
109.It Cm config
110Configure
111.Va OPTIONS
112for this port using
113.Xr dialog 1 .
114.It Cm fetch
115Fetch all of the files needed to build this port from the sites
116listed in
117.Va MASTER_SITES
118and
119.Va PATCH_SITES .
120See
121.Va FETCH_CMD , MASTER_SITE_OVERRIDE
122and
123.Va MASTER_SITE_BACKUP .
124.It Cm checksum
125Verify that the fetched distfile's checksum matches the one the port was
126tested against.
127Defining
128.Va NO_CHECKSUM
129will skip this step.
130.It Cm depends
131Install
132(or compile if only compilation is necessary)
133any dependencies of the current port.
134When called by the
135.Cm extract
136or
137.Cm fetch
138targets, this is run in piecemeal as
139.Cm fetch-depends , build-depends ,
140etc.
141Defining
142.Va NO_DEPENDS
143will skip this step.
144.It Cm extract
145Expand the distfile into a work directory.
146.It Cm patch
147Apply any patches that are necessary for the port.
148.It Cm configure
149Configure the port.
150Some ports will ask you questions during this stage.
151See
152.Va INTERACTIVE
153and
154.Va BATCH .
155.It Cm build
156Build the port.
157This is the same as calling the
158.Cm all
159target.
160.It Cm install
161Install the port and register it with the package system.
162This is all you really need to do.
163.El
164.Pp
165The following targets are not run during the normal install process.
166.Bl -tag -width ".Cm fetch-recursive"
167.It Cm showconfig
168Display
169.Va OPTIONS
170config for this port.
171.It Cm showconfig-recursive
172Display
173.Va OPTIONS
174config for this port and all its dependencies.
175.It Cm rmconfig
176Remove
177.Va OPTIONS
178config for this port.
179.It Cm rmconfig-recursive
180Remove
181.Va OPTIONS
182config for this port and all its dependencies.
183.It Cm config-conditional
184Skip the ports which have already had their
185.Va OPTIONS
186configured.
187.It Cm config-recursive
188Configure
189.Va OPTIONS
190for this port and all its dependencies using
191.Xr dialog 1 .
192.It Cm fetch-list
193Show list of files to be fetched in order to build the port.
194.It Cm fetch-recursive
195Fetch the distfiles of the port and all its dependencies.
196.It Cm fetch-recursive-list
197Show list of files that would be retrieved by
198.Cm fetch-recursive .
199.It Cm run-depends-list , build-depends-list
200Print a list of all the compile and run dependencies, and dependencies
201of those dependencies, by port directory.
202.It Cm all-depends-list
203Print a list of all dependencies for the port.
204.It Cm pretty-print-run-depends-list , pretty-print-build-depends-list
205Print a list of all the compile and run dependencies, and dependencies
206of those dependencies, by port name and version.
207.It Cm missing
208Print a list of missing dependencies to be installed for the port.
209.It Cm clean
210Remove the expanded source code.
211This recurses to dependencies unless
212.Va NOCLEANDEPENDS
213is defined.
214.It Cm distclean
215Remove the port's distfiles and perform the
216.Cm clean
217target.
218The
219.Cm clean
220portion recurses to dependencies unless
221.Va NOCLEANDEPENDS
222is defined, but the
223.Cm distclean
224portion never recurses
225(this is perhaps a bug).
226.It Cm reinstall
227Use this to restore a port after using
228.Xr pkg_delete 1
229when you should have used
230.Cm deinstall .
231.It Cm deinstall
232Remove an installed port from the system, similar to
233.Xr pkg_delete 1 .
234.It Cm deinstall-all
235Remove all installed ports with the same
236.Va PKGORIGIN
237from the system.
238.It Cm package
239Make a binary package for the port.
240The port will be installed if it has not already been.
241The package is a
242.Pa .tbz
243file that you can use to
244install the port on other machines with
245.Xr pkg_add 1 .
246If the directory specified by
247.Va PACKAGES
248does not exist, the package will be put into the current directory.
249See
250.Va PKGREPOSITORY
251and
252.Va PKGFILE .
253.It Cm package-recursive
254Like
255.Cm package ,
256but makes a package for each depending port as well.
257.It Cm package-name
258Prints the name with version of the port.
259.It Cm readmes
260Create a port's
261.Pa README.html .
262This can be used from
263.Pa /usr/ports
264to create a browsable web of all ports on your system!
265.It Cm search
266Search the
267.Pa INDEX
268file for the pattern specified by the
269.Va key
270(searches the port name, comment, and dependencies),
271.Va name
272(searches the port name only),
273.Va path
274(searches the port path),
275.Va info
276(searches the port info),
277.Va maint
278(searches the port maintainer),
279.Va cat
280(searches the port category),
281.Va bdeps
282(searches the port build-time dependency),
283.Va rdeps
284(searches the port run-time dependency),
285.Va www
286(searches the port web site)
287.Xr make 1
288variables, and their exclusion counterparts:
289.Va xname , xkey
290etc.
291For example, one would type:
292.Pp
293.Dl "cd /usr/ports && make search name=query"
294.Pp
295to find all ports whose
296name matches
297.Dq Li query .
298Results include the matching ports' path, comment, maintainer,
299build dependencies, and run dependencies.
300.Bd -literal -offset indent
301cd /usr/ports && make search name=pear- \e
302    xbdeps=apache
303.Ed
304.Pp
305To find all ports whose
306names contain
307.Dq Li pear-
308and which do not have apache
309listed in build-time dependencies.
310.Bd -literal -offset indent
311cd /usr/ports && make search name=pear- \e
312    xname='ht(tp|ml)'
313.Ed
314.Pp
315To find all ports whose names contain
316.Dq Li pear- ,
317but not
318.Dq Li html
319or
320.Dq Li http .
321.Bd -literal -offset indent
322make search key=apache display=name,path,info keylim=1
323.Ed
324.Pp
325To find ports that contain
326.Dq Li apache
327in either of the name, path, info
328fields, ignore the rest of the record.
329.Pp
330By default the search is not case-sensitive.
331In order to make it case-sensitive you can use the
332.Va icase
333variable:
334.Bd -literal -offset indent
335make search name=p5-R icase=0
336.Ed
337.It Cm quicksearch
338Reduced
339.Cm search
340output.
341Only display name, path and info.
342.It Cm describe
343Generate a one-line description of each port for use in the
344.Pa INDEX
345file.
346.It Cm maintainer
347Display the port maintainer's email address.
348.It Cm index
349Create
350.Pa /usr/ports/INDEX ,
351which is used by the
352.Cm pretty-print-*
353and
354.Cm search
355targets.
356Running the
357.Cm index
358target will ensure your
359.Pa INDEX
360file is up to date with your ports tree.
361.It Cm fetchindex
362Fetch the
363.Pa INDEX
364file from the
365.Fx
366cluster.
367.El
368.Sh ENVIRONMENT
369You can change all of these.
370.Bl -tag -width ".Va MASTER_SITES"
371.It Va PORTSDIR
372Location of the ports tree.
373This is
374.Pa /usr/ports
375on
376.Fx
377and
378.Ox ,
379and
380.Pa /usr/pkgsrc
381on
382.Nx .
383.It Va WRKDIRPREFIX
384Where to create any temporary files.
385Useful if
386.Va PORTSDIR
387is read-only (perhaps mounted from a CD-ROM).
388.It Va DISTDIR
389Where to find/put distfiles, normally
390.Pa distfiles/
391in
392.Va PORTSDIR .
393.It Va PACKAGES
394Used only for the
395.Cm package
396target; the base directory for the packages tree, normally
397.Pa packages/
398in
399.Va PORTSDIR .
400If this directory exists, the package tree will be (partially) constructed.
401This directory does not have to exist; if it does not, packages will be
402placed into the current directory, or you can define one of
403.Bl -tag -width ".Va PKGREPOSITORY"
404.It Va PKGREPOSITORY
405Directory to put the package in.
406.It Va PKGFILE
407The full path to the package.
408.El
409.It Va PREFIX
410Where to install things in general
411(usually
412.Pa /usr/local ) .
413.It Va MASTER_SITES
414Primary sites for distribution files if not found locally.
415.It Va PATCH_SITES
416Primary locations for distribution patch files if not found
417locally.
418.It Va MASTER_SITE_FREEBSD
419If set, go to the master
420.Fx
421site for all files.
422.It Va MASTER_SITE_OVERRIDE
423Try going to these sites for all files and patches, first.
424.It Va MASTER_SITE_BACKUP
425Try going to these sites for all files and patches, last.
426.It Va RANDOMIZE_MASTER_SITES
427Try the download locations in a random order.
428.It Va MASTER_SORT
429Sort the download locations according to user supplied pattern.
430Example:
431.Dl .dk .sunet.se .se dk.php.net .no .de heanet.dl.sourceforge.net
432.It Va MASTER_SITE_INDEX
433Where to get
434.Pa INDEX
435source built on
436.Fx
437cluster (for
438.Cm fetchindex
439target).
440Defaults to
441.Pa http://www.FreeBSD.org/ports/ .
442.It Va FETCHINDEX
443Command to get
444.Pa INDEX
445(for
446.Cm fetchindex
447target).
448Defaults to
449.Dq Nm fetch Fl am .
450.It Va NOCLEANDEPENDS
451If defined, do not let
452.Cm clean
453recurse to dependencies.
454.It Va FETCH_CMD
455Command to use to fetch files.
456Normally
457.Xr fetch 1 .
458.It Va FORCE_PKG_REGISTER
459If set, overwrite any existing package registration on the system.
460.It Va MOTIFLIB
461Location of
462.Pa libXm. Ns Brq Pa a , Ns Pa so .
463.It Va INTERACTIVE
464If defined, only operate on a port if it requires interaction.
465.It Va BATCH
466If defined, only operate on a port if it can be installed 100% automatically.
467.It Va DISABLE_VULNERABILITIES
468If defined, disable check for security vulnerabilities using
469.Xr portaudit 1 Pq Pa ports/ports-mgmt/portaudit
470when installing new ports.
471.It Va NO_IGNORE
472If defined, allow installation of ports marked as
473.Aq Va FORBIDDEN .
474The default behavior of the Ports framework is to abort when the
475installation of a forbidden port is attempted.
476Of course, these ports may not work as expected, but if you really know
477what you are doing and are sure about installing a forbidden port, then
478.Va NO_IGNORE
479lets you do it.
480.It Va PORT_DBDIR
481Directory where the results of configuring
482.Va OPTIONS
483are stored.
484Defaults to
485.Pa /var/db/ports .
486Each port where
487.Va OPTIONS
488have been configured will have a uniquely named sub-directory, containing a
489single file
490.Pa options .
491.El
492.Sh FILES
493.Bl -tag -width ".Pa /usr/ports/Mk/bsd.port.mk" -compact
494.It Pa /usr/ports
495The default ports directory
496.No ( Fx
497and
498.Ox ) .
499.It Pa /usr/pkgsrc
500The default ports directory
501.Pq Nx .
502.It Pa /usr/ports/Mk/bsd.port.mk
503The big Kahuna.
504.El
505.Sh SEE ALSO
506.Xr make 1 ,
507.Xr pkg_add 1 ,
508.Xr pkg_create 1 ,
509.Xr pkg_delete 1 ,
510.Xr pkg_info 1 ,
511.Xr pkg_version 1
512.Pp
513The following are part of the ports collection:
514.Pp
515.Xr portaudit 1 ,
516.Xr portcheckout 1 ,
517.Xr portlint 1
518.Rs
519.%B "The FreeBSD Handbook"
520.Re
521.Pp
522.Pa http://www.FreeBSD.org/ports
523(searchable index of all ports)
524.Sh HISTORY
525The Ports Collection
526appeared in
527.Fx 1.0 .
528It has since spread to
529.Nx
530and
531.Ox .
532.Sh AUTHORS
533.An -nosplit
534This manual page was originated by
535.An David O'Brien .
536.Sh BUGS
537Ports documentation is split over four places \(em
538.Pa /usr/ports/Mk/bsd.port.mk ,
539.%B "The Porter's Handbook" ,
540the
541.Dq "Packages and Ports"
542chapter of
543.%B "The FreeBSD Handbook" ,
544and
545this manual page.
546