Fink:FinkMirrors

From the Fink Wiki
Jump to: navigation, search


Warning

This article is currently outdated and will be rewritten; in the meantime please check out the current documentation, the official mirror helper scripts and our mailing list for fink mirrors.


General

Fink is hosted by Sourceforge but all mirroring is done from OpenDarwin . Here are the services OpenDarwin and Fink are currently looking for mirrors to host. Opendarwin and Fink work closely together, thus if you think about being a full mirror please also consider mirroring OpenDarwins services. Everything for Fink is hosted under the finkmirrors.net domain. For each service someone mirrors, we will create dns entries.

We are currently looking for those who are willing to share around 100MB of their hard-drive and a liberal amount of their bandwidth. Fink is now using rsync as its preferred info file distribution method and it is important to us, that those files are always available. So if you cannot afford to share more than around the size mentioned, please do consider being a rsync only mirror.

DNS Structure

Generally speaking the Fink mirror structure is as follows and please keep in mind these dns entries aren't typically for human use. [yourairporttag].[state].[continent].finkmirrors.net and [yourairporttag].finkmirrors.net as a shortcut will be used for rsync mirrors of the Fink info files.

Those websites who wish to mirror the so called distfiles Opendarwin and Fink use will need two additional dns entries named: distfiles.[yourairporttag].[state].[continent].finkmirrors.net as well as distfiles.[yourairporttag].finkmirrors.net

Please note that we do not recommend using CNAME records, although we are using them in a couple of cases. If you have a load balanced environment that is handled via DNS load balancing, we are more than happy to add all of your IPs as A records. We will also handle the necessary DNS updates, should your setup change.

Fink administrators, see the Server Administration page for details on updating records for mirrors.

Master Mirrors

To keep update times as low as possible and ensure that the whole mirror structure stays as current as possible there are a few special server called Master mirrors To become a Master mirror you have to meet certain requirements:

  • It needs to mirror the rsync Fink parts as well as distfiles
  • Enough spare ressources to sync directly from Fink CVS every 15 minutes
  • It needs to update every day for new distfiles (the source files needed to build fink packages)
  • The machine needs to be connected at 100Mbit
  • There may not be any traffic caps
  • The server has to be able to sustain heavy load (more than 1000 concurrent user)
  • The physical location of the server has to be multi-homed

As a Master expect A LOT of traffic, since all smaller Mirrors on your continent will update from you.

Distfile Mirrors

Description: these are the original sources (usually tar.gz's) fetched by fink and darwin ports when building packages.
Protocol: HTTP This should have 2 virtual hosts.

You may mirror those files using rsync rsync://master.us.finkmirrors.net/distfiles will get you all the necessary files.
If you cannot use rsync, the files are also available via http at distfiles.master.finkmirrors.net

Fink specific setup:

For Fink the vhosts should read: distfiles.[yourairporttag].[yourcountrycode].[yourcontinent]. and distfiles.[yourairporttag].finkmirrors.net The distfiles are all in the top level. A sample Apache Vhost entry could read:

          <VirtualHost 204.152.184.200>
          ServerName distfiles.ham.de.eu.finkmirrors.net
          ServerAdmin distfiles@finkmirrors.net
          DocumentRoot /somepath
          </VirtualHost>
          <VirtualHost 204.152.184.200>
          ServerName distfiles.ham.finkmirrors.net
          ServerAdmin distfiles@finkmirrors.net
          DocumentRoot /Somepath
          </VirtualHost>

Size: ~90G (02/08/12)
Be prepared for ~250MB/month growth in this archive.
Distfile mirrors need to have at least the equivalent of a T3/E3 in connectivity.

rsync Mirrors

Description: These are the fink .info and .patch files retrieved by fink when doing a 'fink selfupdate'.
Protocol: rsync
This needs to be retrieved via anonymous rsync. These files can be placed anywhere, but make sure your rsync site has tag 'finkinfo' available, and pointing to the directory containing these files.

Here is a sample rsync config entry:

          [finkinfo]
           path = /Path/src/fink/finkinfo
           comment = Fink .info files pulled from cvs

You may of course display a MOTD of your choice.

Size: ~ 520MB (02/08/12)
This archive does not grow very quickly.
Mirroring Method: The finkinfo files can be retrieved from the master Fink site using

rsync://master.us.finkmirrors.net/finkinfo The master site is updated hourly.
Bandwidth Requirements: This really depends on your geographic location and how popular your server will be.
Estimate ~50-100kB/s sustained.

Rsync switches To ensure that the data is synced correctly and old files are being deleted you need to use: -az --delete --delete-after in all of your rsync lines.

Update Intervals
Rsync mirrors have to update in an interval less than 90 minutes. An intervall of 30 minutes is recommended.

Timestamps

Data distribution has to be as consistent as possible within the Fink mirror system. Thus every rsync mirror has to follow a certain sync procedure.

  1. First sync the finkinfo tag from a Master using --exclude=TIMESTAMP
  2. If the sync returned no errors sync the TIMESTAMP file from the Master

This file holds the output of date -u +%s and will be updated every time the Master has finished syncing with CVS.

Furtermore your mirror will have to run a script which echos the output of date -u +%s or any other code construct which creates a UTC timestamp to a file called LOCAL in your finkinfo tag's root. This file will be used by our statistics server to tell when your mirror last synced from the Master. It needs to be updated every time your syncing routine finishes. Rsync mirrors need to have a connectivity of at least 10Mbit

Existing mirrors

See the fink mirror module on github for the current list of mirrors. Contacts are in the README.contacts page.