Wrap paragraphs. Whitespace change only. Translators please ignore.
This commit is contained in:
parent
7d0800c30d
commit
5c30ad1cac
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=17022
1 changed files with 324 additions and 281 deletions
|
@ -91,27 +91,30 @@
|
|||
third party applications have been made available in this
|
||||
way.</para>
|
||||
|
||||
<para>For any given application, the FreeBSD package for that application
|
||||
is a single file which you must download. The package contains
|
||||
pre-compiled copies of all the commands for the application, as well as
|
||||
any configuration files or documentation. A downloaded package file can
|
||||
be manipulated with FreeBSD package management commands, such as
|
||||
&man.pkg.add.1;, &man.pkg.delete.1;, &man.pkg.info.1;, and so on.</para>
|
||||
<para>For any given application, the FreeBSD package for that
|
||||
application is a single file which you must download. The
|
||||
package contains pre-compiled copies of all the commands for the
|
||||
application, as well as any configuration files or
|
||||
documentation. A downloaded package file can be manipulated
|
||||
with FreeBSD package management commands, such as
|
||||
&man.pkg.add.1;, &man.pkg.delete.1;, &man.pkg.info.1;, and so
|
||||
on.</para>
|
||||
|
||||
<para>Installing a new application can be carried out with a single
|
||||
command.</para>
|
||||
|
||||
<para>A FreeBSD port for an application is a collection of files designed
|
||||
to automate the process of compiling an application from source
|
||||
code.</para>
|
||||
<para>A FreeBSD port for an application is a collection of files
|
||||
designed to automate the process of compiling an application
|
||||
from source code.</para>
|
||||
|
||||
<para>Remember that there are a number of steps you would normally carry
|
||||
out if you compiled a program yourself (downloading, unpacking, patching, compiling,
|
||||
installing). The files that make up a port contain all the necessary
|
||||
information to allow the system to do this for you. You run a handful
|
||||
of simple commands and the source code for the application is
|
||||
automatically downloaded, extracted, patched, compiled, and installed
|
||||
for you.</para>
|
||||
<para>Remember that there are a number of steps you would normally
|
||||
carry out if you compiled a program yourself (downloading,
|
||||
unpacking, patching, compiling, installing). The files that
|
||||
make up a port contain all the necessary information to allow
|
||||
the system to do this for you. You run a handful of simple
|
||||
commands and the source code for the application is
|
||||
automatically downloaded, extracted, patched, compiled, and
|
||||
installed for you.</para>
|
||||
|
||||
<para>In fact, the ports system can also be used to generate packages
|
||||
which can later be manipulated with <command>pkg_add</command>
|
||||
|
@ -119,32 +122,35 @@
|
|||
shortly.</para>
|
||||
|
||||
<para>Both packages and ports understand
|
||||
<emphasis>dependencies</emphasis>. Suppose you want to install an
|
||||
application that depends on a specific library being installed. Both
|
||||
the application and the library have been made available as FreeBSD
|
||||
ports and packages. If you use the <command>pkg_add</command> command
|
||||
or the ports system to add the application, both will notice that the
|
||||
library has not been installed, and automatically install the
|
||||
library first.</para>
|
||||
<emphasis>dependencies</emphasis>. Suppose you want to install
|
||||
an application that depends on a specific library being
|
||||
installed. Both the application and the library have been made
|
||||
available as FreeBSD ports and packages. If you use the
|
||||
<command>pkg_add</command> command or the ports system to add
|
||||
the application, both will notice that the library has not been
|
||||
installed, and automatically install the library first.</para>
|
||||
|
||||
<para>Given that the two technologies are quite similar, you might be
|
||||
wondering why FreeBSD bothers with both. Packages and ports both have
|
||||
their own strengths, and which one you use will depend on your own
|
||||
preference.</para>
|
||||
<para>Given that the two technologies are quite similar, you might
|
||||
be wondering why FreeBSD bothers with both. Packages and ports
|
||||
both have their own strengths, and which one you use will depend
|
||||
on your own preference.</para>
|
||||
|
||||
<itemizedlist>
|
||||
<title>Package Benefits</title>
|
||||
|
||||
<listitem>
|
||||
<para>A compressed package tarball is typically smaller than the
|
||||
compressed tarball containing the source code for the application.</para>
|
||||
<para>A compressed package tarball is typically smaller than
|
||||
the compressed tarball containing the source code for the
|
||||
application.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Packages do not require any additional compilation. For large
|
||||
applications, such as <application>Mozilla</application>,
|
||||
<application>KDE</application>, or <application>GNOME</application>
|
||||
this can be important, particularly if you are on a slow system.</para>
|
||||
<para>Packages do not require any additional compilation. For
|
||||
large applications, such as
|
||||
<application>Mozilla</application>,
|
||||
<application>KDE</application>, or
|
||||
<application>GNOME</application> this can be important,
|
||||
particularly if you are on a slow system.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
|
@ -165,21 +171,22 @@
|
|||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Some applications have compile time options relating to what they
|
||||
can and cannot do. For example, <application>Apache</application>
|
||||
can be configured with a wide variety of different built-in options.
|
||||
By building from the port you do not have to accept the default
|
||||
options, and can set them yourself.</para>
|
||||
<para>Some applications have compile time options relating to
|
||||
what they can and cannot do. For example,
|
||||
<application>Apache</application> can be configured with a
|
||||
wide variety of different built-in options. By building
|
||||
from the port you do not have to accept the default options,
|
||||
and can set them yourself.</para>
|
||||
|
||||
<para>In some cases, multiple packages will exist for the same
|
||||
application to specify certain settings. For example,
|
||||
<application>Ghostscript</application> is available as a
|
||||
<filename>ghostscript</filename> package and a
|
||||
<filename>ghostscript-nox11</filename> package, depending on whether
|
||||
or not you have installed an X11 server. This sort of rough
|
||||
tweaking is possible with packages, but rapidly becomes impossible
|
||||
if an application has more than one or two different compile time
|
||||
options.</para>
|
||||
<filename>ghostscript-nox11</filename> package, depending on
|
||||
whether or not you have installed an X11 server. This sort
|
||||
of rough tweaking is possible with packages, but rapidly
|
||||
becomes impossible if an application has more than one or
|
||||
two different compile time options.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
|
@ -189,9 +196,9 @@
|
|||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Some people do not trust binary distributions. At least with
|
||||
source code, you can (in theory) read through it and look for
|
||||
potential problems yourself.</para>
|
||||
<para>Some people do not trust binary distributions. At least
|
||||
with source code, you can (in theory) read through it and
|
||||
look for potential problems yourself.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
|
@ -200,17 +207,18 @@
|
|||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Some people like having code around, so they can read it if they
|
||||
get bored, hack it, borrow from it (license permitting, of course),
|
||||
and so on.</para>
|
||||
<para>Some people like having code around, so they can read it
|
||||
if they get bored, hack it, borrow from it (license
|
||||
permitting, of course), and so on.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>To keep track of updated ports, subscribe to the
|
||||
&a.ports; and the &a.ports-bugs;.</para>
|
||||
|
||||
<para>The remainder of this chapter will explain how to use packages and
|
||||
ports to install and manage third party software on FreeBSD.</para>
|
||||
<para>The remainder of this chapter will explain how to use
|
||||
packages and ports to install and manage third party software on
|
||||
FreeBSD.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="ports-finding-applications">
|
||||
|
@ -220,14 +228,14 @@
|
|||
want, and what the application is called.</para>
|
||||
|
||||
<para>FreeBSD's list of available applications is growing all the
|
||||
time. Fortunately, there are a number of ways to
|
||||
find what you want:</para>
|
||||
time. Fortunately, there are a number of ways to find what you
|
||||
want:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>The FreeBSD web site maintains an up-to-date searchable list of
|
||||
all the available applications, at
|
||||
<ulink url="../../../../ports/index.html">http://www.FreeBSD.org/ports/</ulink>.
|
||||
<para>The FreeBSD web site maintains an up-to-date searchable
|
||||
list of all the available applications, at <ulink
|
||||
url="../../../../ports/index.html">http://www.FreeBSD.org/ports/</ulink>.
|
||||
The ports are divided into categories, and you may either
|
||||
search for an application by name (if you know it), or see
|
||||
all the applications available in a category.</para>
|
||||
|
@ -236,21 +244,21 @@
|
|||
<indexterm><primary>FreshPorts</primary></indexterm>
|
||||
|
||||
<listitem>
|
||||
<para>Dan Langille maintains FreshPorts, at
|
||||
<ulink url="http://www.FreshPorts.org/"></ulink>.
|
||||
FreshPorts tracks changes to the applications in the ports tree as
|
||||
they happen, allows you to <quote>watch</quote> one or more
|
||||
<para>Dan Langille maintains FreshPorts, at <ulink
|
||||
url="http://www.FreshPorts.org/"></ulink>. FreshPorts
|
||||
tracks changes to the applications in the ports tree as they
|
||||
happen, allows you to <quote>watch</quote> one or more
|
||||
ports, and can send you email when they are updated.</para>
|
||||
</listitem>
|
||||
|
||||
<indexterm><primary>FreshMeat</primary></indexterm>
|
||||
|
||||
<listitem>
|
||||
<para>If you do not know the name of the application you want, try
|
||||
using a site like FreshMeat
|
||||
(<ulink url="http://www.freshmeat.net/"></ulink>)
|
||||
to find an application, then check back at the FreeBSD site to see
|
||||
if the application has been ported yet.</para>
|
||||
<para>If you do not know the name of the application you want,
|
||||
try using a site like FreshMeat (<ulink
|
||||
url="http://www.freshmeat.net/"></ulink>) to find an
|
||||
application, then check back at the FreeBSD site to see if
|
||||
the application has been ported yet.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
|
@ -313,43 +321,45 @@ local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
|
|||
|
||||
<para>If you do not have a source of local packages (such as a
|
||||
FreeBSD CD-ROM set) then it will probably be easier to use the
|
||||
<option>-r</option> option to &man.pkg.add.1;. This will cause the utility to
|
||||
automatically determine the correct object format and release
|
||||
and then fetch and install the package from an FTP site.
|
||||
<option>-r</option> option to &man.pkg.add.1;. This will
|
||||
cause the utility to automatically determine the correct
|
||||
object format and release and then fetch and install the
|
||||
package from an FTP site.
|
||||
</para>
|
||||
|
||||
<indexterm>
|
||||
<primary><command>pkg_add</command></primary></indexterm>
|
||||
<screen>&prompt.root; <userinput>pkg_add -r <replaceable>lsof</replaceable></userinput></screen>
|
||||
|
||||
<para>The example above would download the correct package and add
|
||||
it without any further user intervention. &man.pkg.add.1; uses
|
||||
&man.fetch.3; to download the files, which honors various
|
||||
environment variables, including <envar>FTP_PASSIVE_MODE</envar>,
|
||||
<envar>FTP_PROXY</envar>, and <envar>FTP_PASSWORD</envar>. You
|
||||
may need to set one or more of these if you are behind a firewall,
|
||||
or need to use an FTP/HTTP proxy. See &man.fetch.3; for the
|
||||
complete list. You can also note that in the example above
|
||||
<para>The example above would download the correct package and
|
||||
add it without any further user intervention. &man.pkg.add.1;
|
||||
uses &man.fetch.3; to download the files, which honors various
|
||||
environment variables, including
|
||||
<envar>FTP_PASSIVE_MODE</envar>, <envar>FTP_PROXY</envar>, and
|
||||
<envar>FTP_PASSWORD</envar>. You may need to set one or more
|
||||
of these if you are behind a firewall, or need to use an
|
||||
FTP/HTTP proxy. See &man.fetch.3; for the complete list. You
|
||||
can also note that in the example above
|
||||
<literal>lsof</literal> is used instead of
|
||||
<literal>lsof-4.56.4</literal>. When the remote fetching
|
||||
feature is used, the version number of the package must be
|
||||
removed. &man.pkg.add.1; will automatically fetch the latest
|
||||
version of the application.</para>
|
||||
|
||||
<para>Package files are distributed in <filename>.tgz</filename> format. You can
|
||||
find them at <ulink
|
||||
<para>Package files are distributed in <filename>.tgz</filename>
|
||||
format. You can find them at <ulink
|
||||
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/"></ulink>,
|
||||
or on the FreeBSD CD-ROM distribution. Every CD on the
|
||||
FreeBSD 4-CD set (and the PowerPak, etc.) contains packages in
|
||||
the <filename>/packages</filename> directory. The layout of
|
||||
the packages is similar to that of the
|
||||
FreeBSD 4-CD set (and the PowerPak, etc.) contains packages
|
||||
in the <filename>/packages</filename> directory. The layout
|
||||
of the packages is similar to that of the
|
||||
<filename>/usr/ports</filename> tree. Each category has its
|
||||
own directory, and every package can be found within the
|
||||
<filename>All</filename> directory.
|
||||
</para>
|
||||
|
||||
<para>The directory structure of the package system matches
|
||||
the ports layout; they work with each other to form the entire
|
||||
<para>The directory structure of the package system matches the
|
||||
ports layout; they work with each other to form the entire
|
||||
package/port system.
|
||||
</para>
|
||||
|
||||
|
@ -386,8 +396,8 @@ docbook =
|
|||
...</screen>
|
||||
|
||||
<para>The symbols in the second column indicate the relative age
|
||||
of the installed version and the version available in the local
|
||||
ports tree.</para>
|
||||
of the installed version and the version available in the
|
||||
local ports tree.</para>
|
||||
|
||||
<informaltable frame="none">
|
||||
<tgroup cols="2">
|
||||
|
@ -462,15 +472,16 @@ docbook =
|
|||
<title>Obtaining the Ports Collection</title>
|
||||
|
||||
<para>Before you can install ports, you must first obtain the
|
||||
ports collection—which is essentially a set of <filename>Makefiles</filename>,
|
||||
patches, and description files placed in
|
||||
<filename>/usr/ports</filename>.
|
||||
ports collection—which is essentially a set of
|
||||
<filename>Makefiles</filename>, patches, and description files
|
||||
placed in <filename>/usr/ports</filename>.
|
||||
</para>
|
||||
|
||||
<para>When installing your FreeBSD system,
|
||||
<application>Sysinstall</application> asked if you would like to
|
||||
install the ports collection. If you chose no, you can follow
|
||||
these instructions to obtain the ports collection:</para>
|
||||
<application>Sysinstall</application> asked if you would like
|
||||
to install the ports collection. If you chose no, you can
|
||||
follow these instructions to obtain the ports
|
||||
collection:</para>
|
||||
|
||||
<procedure>
|
||||
<title>Sysinstall Method</title>
|
||||
|
@ -541,7 +552,8 @@ docbook =
|
|||
mentioned sections.</para>
|
||||
|
||||
<step>
|
||||
<para>Install the <filename role="package">net/cvsup</filename> port. See <link
|
||||
<para>Install the <filename
|
||||
role="package">net/cvsup</filename> port. See <link
|
||||
linkend="cvsup-install">CVSup Installation</link> (<xref
|
||||
linkend="cvsup-install">) for more details.</para>
|
||||
</step>
|
||||
|
@ -572,9 +584,9 @@ docbook =
|
|||
</step>
|
||||
|
||||
<step>
|
||||
<para>Running this command later will
|
||||
download and apply all the recent changes to your ports
|
||||
collection, except actually rebuilding the ports for your own system.</para>
|
||||
<para>Running this command later will download and apply all
|
||||
the recent changes to your ports collection, except
|
||||
actually rebuilding the ports for your own system.</para>
|
||||
</step>
|
||||
</procedure>
|
||||
</sect2>
|
||||
|
@ -586,35 +598,38 @@ docbook =
|
|||
<primary>ports</primary>
|
||||
<secondary>installing</secondary>
|
||||
</indexterm>
|
||||
<para>The first thing that should be explained
|
||||
when it comes to the ports collection is what is actually meant
|
||||
by a <quote>skeleton</quote>. In a nutshell, a port skeleton is a
|
||||
minimal set of files that tell your FreeBSD system how to
|
||||
cleanly compile and install a program. Each port skeleton includes:</para>
|
||||
<para>The first thing that should be explained when it comes to
|
||||
the ports collection is what is actually meant by a
|
||||
<quote>skeleton</quote>. In a nutshell, a port skeleton is a
|
||||
minimal set of files that tell your FreeBSD system how to
|
||||
cleanly compile and install a program. Each port skeleton
|
||||
includes:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>A <filename>Makefile</filename>. The
|
||||
<filename>Makefile</filename> contains various statements that
|
||||
specify how the application should be compiled and where it
|
||||
should be installed on your system.</para>
|
||||
<filename>Makefile</filename> contains various statements
|
||||
that specify how the application should be compiled and
|
||||
where it should be installed on your system.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>A <filename>distinfo</filename> file. This file contains
|
||||
information about the files that must be downloaded to build the
|
||||
port and their checksums, to verify that files have not been
|
||||
corrupted during the download using &man.md5.1;.</para>
|
||||
<para>A <filename>distinfo</filename> file. This file
|
||||
contains information about the files that must be
|
||||
downloaded to build the port and their checksums, to
|
||||
verify that files have not been corrupted during the
|
||||
download using &man.md5.1;.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>A <filename>files</filename> directory. This directory
|
||||
contains patches to make the program compile and install on
|
||||
your FreeBSD system. Patches are basically small files that
|
||||
specify changes to particular files. They are in plain text
|
||||
format, and basically say <quote>Remove line 10</quote> or
|
||||
<quote>Change line 26 to this ...</quote>. Patches are also
|
||||
known as <quote>diffs</quote> because they are generated by the
|
||||
<para>A <filename>files</filename> directory. This
|
||||
directory contains patches to make the program compile and
|
||||
install on your FreeBSD system. Patches are basically
|
||||
small files that specify changes to particular files.
|
||||
They are in plain text format, and basically say
|
||||
<quote>Remove line 10</quote> or <quote>Change line 26 to
|
||||
this ...</quote>. Patches are also known as
|
||||
<quote>diffs</quote> because they are generated by the
|
||||
&man.diff.1; program.</para>
|
||||
|
||||
<para>This directory may also contain other files used to build
|
||||
|
@ -640,10 +655,10 @@ docbook =
|
|||
url="../porters-handbook/index.html">FreeBSD Porter's
|
||||
Handbook</ulink>.</para>
|
||||
|
||||
<para>Now that you have enough background information to know what
|
||||
the ports collection is used for, you are ready to install your
|
||||
first port. There are two ways this can be done, and each is
|
||||
explained below.</para>
|
||||
<para>Now that you have enough background information to know
|
||||
what the ports collection is used for, you are ready to
|
||||
install your first port. There are two ways this can be done,
|
||||
and each is explained below.</para>
|
||||
|
||||
<para>Before we get into that, however, you will need to choose a
|
||||
port to install. There are a few ways to do this, with the
|
||||
|
@ -654,27 +669,30 @@ docbook =
|
|||
a description so you can read a bit about each port before
|
||||
deciding to install it.</para>
|
||||
|
||||
<para>Another method is to use the &man.whereis.1;
|
||||
command. Simply type <command>whereis <replaceable>file</replaceable></command>,
|
||||
where <replaceable>file</replaceable> is the program you want to
|
||||
install. If it is found on
|
||||
your system, you will be told where it is, as follows:</para>
|
||||
<para>Another method is to use the &man.whereis.1; command.
|
||||
Simply type <command>whereis
|
||||
<replaceable>file</replaceable></command>, where
|
||||
<replaceable>file</replaceable> is the program you want to
|
||||
install. If it is found on your system, you will be told
|
||||
where it is, as follows:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>whereis lsof</userinput>
|
||||
lsof: /usr/ports/sysutils/lsof</screen>
|
||||
|
||||
<para>This tells us that <command>lsof</command> (a system utility)
|
||||
can be found in the
|
||||
<filename>/usr/ports/sysutils/lsof</filename> directory.</para>
|
||||
<para>This tells us that <command>lsof</command> (a system
|
||||
utility) can be found in the
|
||||
<filename>/usr/ports/sysutils/lsof</filename>
|
||||
directory.</para>
|
||||
|
||||
<para>Yet another way to find a particular port is by using the
|
||||
ports collection's built-in search mechanism. To use the search
|
||||
feature, you will need to be in the
|
||||
<filename>/usr/ports</filename> directory. Once in that
|
||||
directory, run <command>make search name=<replaceable>program-name</replaceable></command>
|
||||
where <replaceable>program-name</replaceable> is the name of the program you
|
||||
want to find. For example, if you were looking for
|
||||
<command>lsof</command>:</para>
|
||||
ports collection's built-in search mechanism. To use the
|
||||
search feature, you will need to be in the
|
||||
<filename>/usr/ports</filename> directory. Once in that
|
||||
directory, run <command>make search
|
||||
name=<replaceable>program-name</replaceable></command> where
|
||||
<replaceable>program-name</replaceable> is the name of the
|
||||
program you want to find. For example, if you were looking
|
||||
for <command>lsof</command>:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>cd /usr/ports</userinput>
|
||||
&prompt.root; <userinput>make search name=lsof</userinput>
|
||||
|
@ -686,18 +704,19 @@ Index: sysutils
|
|||
B-deps:
|
||||
R-deps: </screen>
|
||||
|
||||
<para>The part of the output you want to pay particular attention
|
||||
to is the <quote>Path:</quote> line, since that tells you where to
|
||||
find the port. The other information provided is not needed in order
|
||||
to install the port, so it will not be covered
|
||||
here.</para>
|
||||
<para>The part of the output you want to pay particular
|
||||
attention to is the <quote>Path:</quote> line, since that
|
||||
tells you where to find the port. The other information
|
||||
provided is not needed in order to install the port, so it
|
||||
will not be covered here.</para>
|
||||
|
||||
<para>For more in-depth searching you can also use
|
||||
<command>make search key=<replaceable>string</replaceable></command> where
|
||||
<replaceable>string</replaceable> is some text to search for. This searches
|
||||
port names, comments, descriptions and dependencies and can be used
|
||||
to find ports which relate to a particular subject if you don't
|
||||
know the name of the program you are looking for.</para>
|
||||
<para>For more in-depth searching you can also use <command>make
|
||||
search key=<replaceable>string</replaceable></command> where
|
||||
<replaceable>string</replaceable> is some text to search for.
|
||||
This searches port names, comments, descriptions and
|
||||
dependencies and can be used to find ports which relate to a
|
||||
particular subject if you don't know the name of the program
|
||||
you are looking for.</para>
|
||||
|
||||
<para>In both of these cases, the search string is case-insensitive.
|
||||
Searching for <quote>LSOF</quote> will yield the same results as
|
||||
|
@ -804,43 +823,46 @@ R-deps: </screen>
|
|||
</note>
|
||||
|
||||
<note>
|
||||
<para>Some shells keep a cache of the commands that are available in
|
||||
the directories listed in the <envar>PATH</envar> environment
|
||||
variable, to speed up lookup operations for the executable file of
|
||||
these commands. If you are using one of these shells, you might
|
||||
have to use the <command>rehash</command> command after installing
|
||||
a port, before the newly installed commands can be used. This is
|
||||
true for both shells that are part of the base-system (such as
|
||||
<command>tcsh</command>) and shells that are available as ports
|
||||
(for instance,
|
||||
<para>Some shells keep a cache of the commands that are
|
||||
available in the directories listed in the
|
||||
<envar>PATH</envar> environment variable, to speed up
|
||||
lookup operations for the executable file of these
|
||||
commands. If you are using one of these shells, you might
|
||||
have to use the <command>rehash</command> command after
|
||||
installing a port, before the newly installed commands can
|
||||
be used. This is true for both shells that are part of
|
||||
the base-system (such as <command>tcsh</command>) and
|
||||
shells that are available as ports (for instance,
|
||||
<filename role="package">shells/zsh</filename>).</para>
|
||||
</note>
|
||||
|
||||
<note>
|
||||
<para>Please be aware that the licenses of a few ports do not
|
||||
allow for inclusion on the CD-ROM. This could be because a
|
||||
registration form needs
|
||||
to be filled out before downloading or redistribution is not
|
||||
allowed, or for another reason. If you wish to install a port not
|
||||
included on the CD-ROM, you will need to be online in order to
|
||||
do so (see the <link linkend="ports-inet">next
|
||||
section</link>).</para>
|
||||
<para>Please be aware that the licenses of a few ports do
|
||||
not allow for inclusion on the CD-ROM. This could be
|
||||
because a registration form needs to be filled out before
|
||||
downloading or redistribution is not allowed, or for
|
||||
another reason. If you wish to install a port not
|
||||
included on the CD-ROM, you will need to be online in
|
||||
order to do so (see the <link linkend="ports-inet">next
|
||||
section</link>).</para>
|
||||
</note>
|
||||
</sect3>
|
||||
|
||||
<sect3 id="ports-inet">
|
||||
<title>Installing Ports from the Internet</title>
|
||||
|
||||
<para>As with the last section, this section makes an assumption
|
||||
that you have a working Internet connection. If you do not,
|
||||
you will need to perform the <link linkend="ports-cd">CD-ROM
|
||||
installation</link>, or put a copy of the distfile into <filename>/usr/ports/distfiles</filename> manually.</para>
|
||||
<para>As with the last section, this section makes an
|
||||
assumption that you have a working Internet connection. If
|
||||
you do not, you will need to perform the <link
|
||||
linkend="ports-cd">CD-ROM installation</link>, or put a copy
|
||||
of the distfile into
|
||||
<filename>/usr/ports/distfiles</filename> manually.</para>
|
||||
|
||||
<para>Installing a port from the Internet is done exactly the same
|
||||
way as it would be if you were installing from a CD-ROM. The
|
||||
only difference between the two is that the distfile
|
||||
is downloaded from the Internet instead of read from the
|
||||
CD-ROM.</para>
|
||||
<para>Installing a port from the Internet is done exactly the
|
||||
same way as it would be if you were installing from a
|
||||
CD-ROM. The only difference between the two is that the
|
||||
distfile is downloaded from the Internet instead of read
|
||||
from the CD-ROM.</para>
|
||||
|
||||
<para>The steps involved are identical:</para>
|
||||
|
||||
|
@ -879,86 +901,100 @@ Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
|
|||
<para>As you can see, the only difference is the line that tells
|
||||
you where the system is fetching the port distfile from.</para>
|
||||
|
||||
<para>The ports system uses &man.fetch.1; to download the files,
|
||||
which honors various environment variables, including
|
||||
<envar>FTP_PASSIVE_MODE</envar>, <envar>FTP_PROXY</envar>,
|
||||
and <envar>FTP_PASSWORD</envar>. You may need to set one or more
|
||||
of these if you are behind a firewall, or need to use an FTP/HTTP
|
||||
proxy. See &man.fetch.3; for the complete list.</para>
|
||||
<para>The ports system uses &man.fetch.1; to download the
|
||||
files, which honors various environment variables, including
|
||||
<envar>FTP_PASSIVE_MODE</envar>, <envar>FTP_PROXY</envar>,
|
||||
and <envar>FTP_PASSWORD</envar>. You may need to set one or
|
||||
more of these if you are behind a firewall, or need to use
|
||||
an FTP/HTTP proxy. See &man.fetch.3; for the complete
|
||||
list.</para>
|
||||
|
||||
<para>For users which cannot be connected all the time, a the
|
||||
<command>make <makevar>fetch</makevar></command> option is provided.
|
||||
Just run this command at the top level directory
|
||||
(<filename>/usr/ports</filename>) and the required files will be
|
||||
downloaded for you. This command will also work in the lower level
|
||||
categories, for example: <filename>/usr/ports/net</filename>.</para>
|
||||
<command>make <makevar>fetch</makevar></command> option is
|
||||
provided. Just run this command at the top level directory
|
||||
(<filename>/usr/ports</filename>) and the required files
|
||||
will be downloaded for you. This command will also work in
|
||||
the lower level categories, for example:
|
||||
<filename>/usr/ports/net</filename>.</para>
|
||||
|
||||
<note><para>You can build all the ports in a category or as a whole by
|
||||
running <command>make</command> in the top level directory, just like the
|
||||
aforementioned <command>make <makevar>fetch</makevar></command> method.
|
||||
This is dangerous, however, as some ports cannot co-exist. In other
|
||||
cases, some ports can install two different files with the same
|
||||
filename.</para></note>
|
||||
<note><para>You can build all the ports in a category or as a
|
||||
whole by running <command>make</command> in the top level
|
||||
directory, just like the aforementioned <command>make
|
||||
<makevar>fetch</makevar></command> method. This is
|
||||
dangerous, however, as some ports cannot co-exist. In other
|
||||
cases, some ports can install two different files with the
|
||||
same filename.</para></note>
|
||||
|
||||
<para>In some rare cases, users may need to acquire the tarballs
|
||||
from a site other than the <makevar>MASTER_SITES</makevar> (the location
|
||||
where files are downloaded from). You can override the
|
||||
<makevar>MASTER_SITES</makevar> option with the following command:</para>
|
||||
<para>In some rare cases, users may need to acquire the
|
||||
tarballs from a site other than the
|
||||
<makevar>MASTER_SITES</makevar> (the location where files
|
||||
are downloaded from). You can override the
|
||||
<makevar>MASTER_SITES</makevar> option with the following
|
||||
command:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>cd /usr/ports/<replaceable>directory</replaceable></userinput></screen>
|
||||
<screen>&prompt.root; <userinput>make MASTER_SITE_OVERRIDE= \
|
||||
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen>
|
||||
|
||||
<para>In this example we change the <makevar>MASTER_SITES</makevar> option to
|
||||
<hostid role="fqdn">ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/</hostid>.</para>
|
||||
<para>In this example we change the
|
||||
<makevar>MASTER_SITES</makevar> option to <hostid
|
||||
role="fqdn">ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/</hostid>.</para>
|
||||
|
||||
<note><para>Some ports require you to provide build options which can enable/disable
|
||||
parts of the application which are unneeded, certain security options,
|
||||
and other customizations. A few which come to mind are
|
||||
<filename role="package">net/mozilla</filename>,
|
||||
<filename role="package">security/gpgme</filename>, and
|
||||
<filename role="package">mail/sylpheed-claws</filename>. A message will be
|
||||
displayed when options such as these are available.</para></note>
|
||||
<note><para>Some ports require you to provide build options
|
||||
which can enable/disable parts of the application which are
|
||||
unneeded, certain security options, and other
|
||||
customizations. A few which come to mind are <filename
|
||||
role="package">net/mozilla</filename>, <filename
|
||||
role="package">security/gpgme</filename>, and <filename
|
||||
role="package">mail/sylpheed-claws</filename>. A message
|
||||
will be displayed when options such as these are
|
||||
available.</para></note>
|
||||
</sect3>
|
||||
|
||||
<sect3>
|
||||
<title>Overriding the Default Ports Directories</title>
|
||||
|
||||
<para>Sometimes it is useful (or mandatory) to use a different distfiles
|
||||
and ports directory. The <makevar>PORTSDIR</makevar> and
|
||||
<makevar>PREFIX</makevar> variables can override the default
|
||||
directories. For example:</para>
|
||||
<para>Sometimes it is useful (or mandatory) to use a different
|
||||
distfiles and ports directory. The
|
||||
<makevar>PORTSDIR</makevar> and <makevar>PREFIX</makevar>
|
||||
variables can override the default directories. For
|
||||
example:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>make PORTSDIR=/usr/home/example/ports install</userinput></screen>
|
||||
|
||||
<para>will compile the port in <filename>/usr/home/example/ports</filename> and
|
||||
install everything under <filename>/usr/local</filename>.</para>
|
||||
<para>will compile the port in
|
||||
<filename>/usr/home/example/ports</filename> and install
|
||||
everything under <filename>/usr/local</filename>.</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>make PREFIX=/usr/home/example/local install</userinput></screen>
|
||||
|
||||
<para>will compile it in <filename>/usr/ports</filename> and install it in
|
||||
<para>will compile it in <filename>/usr/ports</filename> and
|
||||
install it in
|
||||
<filename>/usr/home/example/local</filename>.</para>
|
||||
|
||||
<para>And of course,</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>make PORTSDIR=../ports PREFIX=../local install</userinput></screen>
|
||||
|
||||
<para>will combine the two (it is too long to completely write on
|
||||
this page, but it should give you the general idea).</para>
|
||||
<para>will combine the two (it is too long to completely write
|
||||
on this page, but it should give you the general
|
||||
idea).</para>
|
||||
|
||||
<para>Alternatively, these variables can also be set
|
||||
as part of your environment. Read the manual page for your shell for
|
||||
instructions on doing so.</para>
|
||||
<para>Alternatively, these variables can also be set as part
|
||||
of your environment. Read the manual page for your shell
|
||||
for instructions on doing so.</para>
|
||||
</sect3>
|
||||
|
||||
<sect3>
|
||||
<title>Dealing with <command>imake</command></title>
|
||||
|
||||
<para>Some ports that use <command>imake</command> (a part of the X Windows
|
||||
System) do not work well with <makevar>PREFIX</makevar>, and will insist on
|
||||
installing under <filename>/usr/X11R6</filename>. Similarly, some Perl ports
|
||||
ignore <makevar>PREFIX</makevar> and install in the Perl tree. Making these
|
||||
ports respect <makevar>PREFIX</makevar> is a difficult or impossible
|
||||
<para>Some ports that use <command>imake</command> (a part of
|
||||
the X Windows System) do not work well with
|
||||
<makevar>PREFIX</makevar>, and will insist on installing
|
||||
under <filename>/usr/X11R6</filename>. Similarly, some Perl
|
||||
ports ignore <makevar>PREFIX</makevar> and install in the
|
||||
Perl tree. Making these ports respect
|
||||
<makevar>PREFIX</makevar> is a difficult or impossible
|
||||
job.</para>
|
||||
|
||||
</sect3>
|
||||
|
@ -1008,12 +1044,13 @@ Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
|
|||
<primary>ports</primary>
|
||||
<secondary>disk-space</secondary>
|
||||
</indexterm>
|
||||
<para>Using the ports collection can defiantly eat up your disk space.
|
||||
For this reason you should always remember to clean up the work
|
||||
directories using the <command>make <makevar>clean</makevar></command>
|
||||
option. This will remove the <filename>work</filename> directory after
|
||||
a port has been built, and installed. You can also remove the tar files
|
||||
from the <filename>distfiles</filename> directory, and remove the
|
||||
<para>Using the ports collection can defiantly eat up your disk
|
||||
space. For this reason you should always remember to clean up
|
||||
the work directories using the <command>make
|
||||
<makevar>clean</makevar></command> option. This will remove
|
||||
the <filename>work</filename> directory after a port has been
|
||||
built, and installed. You can also remove the tar files from
|
||||
the <filename>distfiles</filename> directory, and remove the
|
||||
installed ports when their use has delimited.</para>
|
||||
|
||||
<para>Some users choose to limit the port categories by placing an entry
|
||||
|
@ -1029,41 +1066,45 @@ Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
|
|||
<primary>ports</primary>
|
||||
<secondary>upgrading</secondary>
|
||||
</indexterm>
|
||||
<para>Keeping your ports up to date can be a tedious job. For instance,
|
||||
to upgrade a port you would go to the ports directory, build the port,
|
||||
deinstall the old port, install the new port, and then cleaning up
|
||||
after the build. Imagine doing that for five ports, tedious right?
|
||||
This was a large problem for system administrators to deal with,
|
||||
and now we have utilities which do this for us. For instance the
|
||||
<filename role="port">sysutils/portupgrade</filename> utility will
|
||||
do everything for you! Just install it like you would any other
|
||||
port, using the <command>make <makevar>install clean</makevar></command>
|
||||
command.</para>
|
||||
<para>Keeping your ports up to date can be a tedious job. For
|
||||
instance, to upgrade a port you would go to the ports
|
||||
directory, build the port, deinstall the old port, install the
|
||||
new port, and then cleaning up after the build. Imagine doing
|
||||
that for five ports, tedious right? This was a large problem
|
||||
for system administrators to deal with, and now we have
|
||||
utilities which do this for us. For instance the <filename
|
||||
role="port">sysutils/portupgrade</filename> utility will do
|
||||
everything for you! Just install it like you would any other
|
||||
port, using the <command>make <makevar>install
|
||||
clean</makevar></command> command.</para>
|
||||
|
||||
<para>Now create a database with the <command>pkgdb -F</command> command.
|
||||
This will read the list of installed ports and create a database file
|
||||
in the <filename>/var/db/pkg</filename> directory. Now when you run
|
||||
<command>portupgrade -a</command>, it will read this and the ports
|
||||
<filename>INDEX</filename> file. Finally, <command>portupgrade</command>
|
||||
will begin to download, build, backup, install, and clean the ports
|
||||
which have been updated. Other utilities exist which will do this,
|
||||
check out the <filename>ports/sysutils</filename> directory and see
|
||||
what you come up with.</para>
|
||||
<para>Now create a database with the <command>pkgdb -F</command>
|
||||
command. This will read the list of installed ports and
|
||||
create a database file in the <filename>/var/db/pkg</filename>
|
||||
directory. Now when you run <command>portupgrade
|
||||
-a</command>, it will read this and the ports
|
||||
<filename>INDEX</filename> file. Finally,
|
||||
<command>portupgrade</command> will begin to download, build,
|
||||
backup, install, and clean the ports which have been updated.
|
||||
Other utilities exist which will do this, check out the
|
||||
<filename>ports/sysutils</filename> directory and see what you
|
||||
come up with.</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="ports-nextsteps">
|
||||
<title>Post-installation activities</title>
|
||||
|
||||
<para>After installing a new application you will normally want to read
|
||||
any documentation it may have included, edit any configuration files
|
||||
that are required, ensure that the application starts at boot time (if
|
||||
it is a daemon), and so on.</para>
|
||||
<para>After installing a new application you will normally want to
|
||||
read any documentation it may have included, edit any
|
||||
configuration files that are required, ensure that the
|
||||
application starts at boot time (if it is a daemon), and so
|
||||
on.</para>
|
||||
|
||||
<para>The exact steps you need to take to configure each application will
|
||||
obviously be different. However, if you have just installed a new
|
||||
application and are wondering <quote>What now?</quote> these tips might
|
||||
help:</para>
|
||||
<para>The exact steps you need to take to configure each
|
||||
application will obviously be different. However, if you have
|
||||
just installed a new application and are wondering <quote>What
|
||||
now?</quote> these tips might help:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
|
@ -1073,35 +1114,36 @@ Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
|
|||
|
||||
<screen>&prompt.root; <userinput>pkg_info -L foopackage-1.0.0 | less</userinput></screen>
|
||||
|
||||
<para>will show all the files installed by the package. Pay special
|
||||
attention to files in <filename>man/</filename> directories, which
|
||||
will be manual pages, <filename>etc/</filename> directories, which
|
||||
will be configuration files, and <filename>doc/</filename>, which will be
|
||||
more comprehensive documentation.</para>
|
||||
<para>will show all the files installed by the package. Pay
|
||||
special attention to files in <filename>man/</filename>
|
||||
directories, which will be manual pages,
|
||||
<filename>etc/</filename> directories, which will be
|
||||
configuration files, and <filename>doc/</filename>, which
|
||||
will be more comprehensive documentation.</para>
|
||||
|
||||
<para>If you are not sure which version of the application was just
|
||||
installed, a command like this</para>
|
||||
<para>If you are not sure which version of the application was
|
||||
just installed, a command like this</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>pkg_info | grep <replaceable>foopackage</replaceable></userinput></screen>
|
||||
|
||||
<para>will find all the installed packages that have
|
||||
<replaceable>foopackage</replaceable> in the package name. Replace
|
||||
<replaceable>foopackage</replaceable> in your command line as
|
||||
necessary.</para>
|
||||
<replaceable>foopackage</replaceable> in the package name.
|
||||
Replace <replaceable>foopackage</replaceable> in your
|
||||
command line as necessary.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Once you have identified where the application's manual pages
|
||||
have been installed, review them using &man.man.1;. Similarly,
|
||||
look over the sample configuration files, and any additional
|
||||
documentation that may have been provided.</para>
|
||||
<para>Once you have identified where the application's manual
|
||||
pages have been installed, review them using &man.man.1;.
|
||||
Similarly, look over the sample configuration files, and any
|
||||
additional documentation that may have been provided.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>If the application has a web site, check it for additional
|
||||
documentation, frequently asked questions, and so forth. If
|
||||
you are not sure of the web site address it may be listed in the
|
||||
output from</para>
|
||||
<para>If the application has a web site, check it for
|
||||
additional documentation, frequently asked questions, and so
|
||||
forth. If you are not sure of the web site address it may
|
||||
be listed in the output from</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>pkg_info <replaceable>foopackage-1.0.0</replaceable></userinput></screen>
|
||||
|
||||
|
@ -1114,8 +1156,8 @@ Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
|
|||
<sect1 id="ports-broken">
|
||||
<title>Dealing with Broken Ports</title>
|
||||
|
||||
<para>If you come across a port that does not work for you, there are
|
||||
a few things you can do, including:</para>
|
||||
<para>If you come across a port that does not work for you,
|
||||
there are a few things you can do, including:</para>
|
||||
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
|
@ -1128,15 +1170,16 @@ Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
|
|||
|
||||
<listitem>
|
||||
<para>Gripe—<emphasis>by email only</emphasis>! Send
|
||||
email to the maintainer of the port first. Type <command>make
|
||||
maintainer</command> or read the <filename>Makefile</filename>
|
||||
to find the maintainer's email address. Remember to include
|
||||
the name and version of the port (send the
|
||||
<literal>$FreeBSD:</literal> line from the
|
||||
<filename>Makefile</filename>) and the output leading up to the
|
||||
error when you email the maintainer. If you do not get a
|
||||
response from the maintainer, you can use
|
||||
&man.send-pr.1; to submit a bug report.</para>
|
||||
email to the maintainer of the port first. Type
|
||||
<command>make maintainer</command> or read the
|
||||
<filename>Makefile</filename> to find the maintainer's
|
||||
email address. Remember to include the name and version
|
||||
of the port (send the <literal>$FreeBSD:</literal>
|
||||
line from the <filename>Makefile</filename>) and the
|
||||
output leading up to the error when you email the
|
||||
maintainer. If you do not get a response from the
|
||||
maintainer, you can use &man.send-pr.1; to submit a bug
|
||||
report.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
|
@ -1147,8 +1190,8 @@ Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
|
|||
directory</ulink>, but be sure to check your local mirror
|
||||
<emphasis>first</emphasis>! These are more likely to work
|
||||
than trying to compile from source and are a lot faster as
|
||||
well. Use the &man.pkg.add.1; program to install the package
|
||||
on your system.</para>
|
||||
well. Use the &man.pkg.add.1; program to install the
|
||||
package on your system.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</sect1>
|
||||
|
|
Loading…
Reference in a new issue