ports INDEX file

b. f. bf1783 at googlemail.com
Fri Jul 23 06:35:59 UTC 2010


>Benjamin Lee wrote:
>> On 07/22/2010 06:20 PM, Fbsd8 wrote:
>>> I have a pristine install  of 8.0.
>>> There is no /usr/ports directory yet.
>>> I am trying to use the "portcheckout" port and the "porteasy" port to
>>> just populate the ports tree with only the ports I use.
>>>
>>> Problem is in both cases the above ports require an existing INDEX file
>>> to process and since I have none they don't work.
>>>
>>> How can I just download the ports INDEX file?
>>> Portsnap is not a solution.

>I see in the source of porteasy that its fetching
>http://www.freebsd.org/ports/INDEX-8.bz2
>
>How can I verify this?

Usually the index file is placed at $INDEXDIR/$INDEXFILE, as defined
in $PORTSDIR/Mk/bsd.port.mk. In your case, by default, that would be
/usr/ports/INDEX-8.

As Matthew asked, do you really want to do this?  By modern standards,
the space required for the ports tree is modest (~550MB uncompressed),
and you can learn a lot about what's available and how things work by
looking through it.  Plus you save the time required to implement this
partial ports tree approach.  If you really need to save the disk
space, and don't have other special requirements, then considering
using binary packages instead of compiling from source.

If you do have special requirements -- e.g., you need to build ports
with non-default options or special flags, or you don't trust foreign
binary packages (in that case, though, you should probably be prepared
to do a lot of work auditing the source code as well), and you don't
have at least one machine with the required disk space, then maybe
this approach is worthwhile.  However, that seems unlikely.

If you pursue the partial ports tree approach, you don't need to make
or fetch an INDEX(which, although it may be a useful summary, may be
inappropriate for parsing dependencies for ports built with
non-default options), and you don't need to use either of the ports
that you mentioned:  as someone else said, you could just write a
shell script to fetch the necessary infrastructure Makefiles (those in
/usr/ports/Mk and the needed category subdirectories), and the desired
port and it's dependencies, using cvs(1) (but you have to choose a
server that permits anonymous cvs access, and learn cvs), csup(1)
(configured to use a suitable cvsup server using the ports-all
collection and the -i flag, which would permit you to grab only parts
of that collection), or even an http client like fetch(1) (exploiting
the fact that single ports can be downloaded in tarball form from
cvsweb.freebsd.org in links of the form:

http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/$CATEGORY/$PORT/$PORT.tar.gz?tarball=1

and single Makefiles via other links).

b.


More information about the freebsd-questions mailing list