pkgsrc/doc/guide/files/ftp-layout.xml
2007-10-24 09:14:42 +00:00

136 lines
5.5 KiB
XML

<!-- $NetBSD: ftp-layout.xml,v 1.11 2007/10/24 09:14:42 rillig Exp $ -->
<appendix id="ftp-layout">
<title>Directory layout of the pkgsrc FTP server</title>
<para>As in other big projects, the directory layout of pkgsrc
is quite complex for newbies. This chapter explains where you
find things on the FTP server. The base directory on
<filename>ftp.NetBSD.org</filename> is <ulink
url="ftp://ftp.NetBSD.org/pub/pkgsrc/"><filename>/pub/pkgsrc/</filename></ulink>.
On other servers it may be different, but inside this directory,
everything should look the same, no matter on which server you
are. This directory contains some subdirectories, which are
explained below.</para>
<sect1 id="ftp-bootstrap">
<title><filename>bootstrap-pkgsrc</filename>: Bootstrap kits</title>
<para>This directory used to contain binary packages of the
package management tools for various platforms. For those
package collections that need them, they are now stored near the
binary packages, so you should look <link
linkend="ftp-packages">in the <filename>packages</filename>
directory</link>.</para>
</sect1>
<sect1 id="ftp-distfiles">
<title><filename>distfiles</filename>: The distributed source files</title>
<para>The directory <filename>distfiles</filename> contains lots
of archive files from all pkgsrc packages, which are mirrored
here. The subdirectories are called after their package names
and are used when the distributed files have names that don't
explicitly contain a version number or are otherwise too generic
(for example <filename>release.tar.gz</filename>).</para>
</sect1>
<sect1 id="ftp-iso">
<title><filename>iso</filename>: Currently empty</title>
<para>This directory is currently not in use.</para>
</sect1>
<sect1 id="ftp-misc">
<title><filename>misc</filename>: Miscellaneous things</title>
<para>This directory contains things that individual pkgsrc
developers find worth publishing.</para>
</sect1>
<sect1 id="ftp-packages">
<title><filename>packages</filename>: Binary packages</title>
<para>This directory contains binary packages for the various
platforms that are supported by pkgsrc.
Each subdirectory is of the form <replaceable>OPSYS</replaceable
>/<replaceable>ARCH</replaceable
>/<replaceable>OSVERSION_TAG</replaceable
>. The meaning of these variables is:</para>
<itemizedlist>
<listitem><para><varname>OPSYS</varname> is the name of the
operating system for which the packages have been built. The
name is taken from the output of the <command>uname</command>
command, so it may differ from the one you are used to
hear.</para></listitem>
<listitem><para><varname>ARCH</varname> is the hardware
architecture of the platform for which the packages have been
built. It also includes the <varname>ABI</varname> (Application
Binary Interface) for platforms that have several of
them.</para></listitem>
<listitem><para><varname>OSVERSION</varname> is the version of
the operating system. For version numbers that change often (for
example NetBSD-current), the often-changing part should be
replaced with an <literal>x</literal>, for example
<literal>4.99.x</literal>.</para></listitem>
<listitem><para><varname>TAG</varname> is either
<literal>200<replaceable>x</replaceable>Q<replaceable>y</replaceable></literal>
for a stable branch, or <literal>head</literal> for packages
built from the HEAD branch. The latter should only be used when
the packages are updated on a regular basis. Otherwise the date
from checking out pkgsrc should be appended, for example
<literal>head_20071015</literal>.</para></listitem>
</itemizedlist>
<para>The rationale for exactly this scheme is that the pkgsrc users looking for binary packages
can quickly click through the directories on the
server and find the best binary packages for their machines. Since they
usually know the operating system and the hardware architecture, OPSYS
and ARCH are placed first. After these choices, they can select the
best combination of OSVERSION and TAG together, since it is usually the
case that packages stay compatible between different version of the
operating system.</para>
<para>In each of these directories, there is a
whole binary packages collection for a specific platform. It has a directory called
<filename>All</filename> which contains all binary packages.
Besides that, there are various category directories that
contain symbolic links to the real binary packages.</para>
</sect1>
<sect1 id="ftp-reports">
<title><filename>reports</filename>: Bulk build reports</title>
<para>Here are the reports from bulk builds, for those who want
to fix packages that didn't build on some of the platforms. The
structure of subdirectories should look like the one in <xref
linkend="ftp-packages"/>.</para>
</sect1>
<sect1 id="ftp-source">
<title><filename>current</filename>,
<filename>pkgsrc-200<replaceable>x</replaceable>Q<replaceable>y</replaceable></filename>:
source packages</title>
<para>These directories contain the <quote>real</quote> pkgsrc,
that is the files that define how to create binary packages from
source archives.</para>
<para>The directory <filename>pkgsrc</filename> contains a
snapshot of the CVS repository, which is updated regularly. The
file <filename>pkgsrc.tar.gz</filename> contains the same as the
directory, ready to be downloaded as a whole.</para>
<para>In the directories for the quarterly branches, there is an
additional file called
<filename>pkgsrc-200<replaceable>x</replaceable>Q<replaceable>y</replaceable>.tar.gz</filename>,
which contains the state of pkgsrc when it was branched.</para>
</sect1>
</appendix>