releng-packages: remove it

- remove article about releng packages
	- we no longer produce multi-cd releases
	- CVS is not our VCS system
	- we havn't releaseed with xfree86 is years
	- section 1 about the 'ports cluster' is now entirely untrue and
	  been disclaimed by portmgr

Discussed with:	peter, bdrewery, Daniel O'Connor
This commit is contained in:
Eitan Adler 2015-04-06 04:47:40 +00:00
parent 736e8cd573
commit a7ecf541de
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=46481
20 changed files with 0 additions and 1790 deletions
el_GR.ISO8859-7/articles
en_US.ISO8859-1
articles
htdocs/docs
fr_FR.ISO8859-1/articles
ja_JP.eucJP/articles
ru_RU.KOI8-R/articles
share/xml

View file

@ -15,7 +15,6 @@ SUBDIR+= nanobsd
SUBDIR+= new-users
SUBDIR+= problem-reports
SUBDIR+= releng
SUBDIR+= releng-packages
DOC_PREFIX?= ${.CURDIR}/../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,18 +0,0 @@
# $FreeBSD$
#
# %SOURCE% en_US.ISO8859-1/articles/releng-packages/Makefile
# %SRCID% 1.4
DOC?= article
FORMATS?= html
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
CSS_SHEET_ADDITIONS= extra.css
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,367 +0,0 @@
<?xml version="1.0" encoding="iso-8859-7"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<!--
Η Οργάνωση Έκδοσης των Πακέτων Λογισμικού από Τρίτους του FreeBSD
The FreeBSD Greek Documentation Project
%SOURCE% en_US.ISO8859-1/articles/releng-packages/article.xml
%SRCID% 1.6
-->
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="el">
<info><title>Η Οργάνωση Έκδοσης των Πακέτων Λογισμικού από Τρίτους του
FreeBSD</title>
<authorgroup>
<author><personname><firstname>Steve</firstname><surname>Price</surname></personname><affiliation>
<address><email>steve@FreeBSD.org</email></address>
</affiliation></author>
</authorgroup>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>Αυτό το άρθρο περιγράφει την προσέγγιση της ομάδας οργάνωσης των
επίσημων εκδόσεων του FreeBSD για την παραγωγή μιας υψηλής ποιότητας
συλλογής πακέτων για τα επίσημα μέσα εγκατάστασης του FreeBSD (CD-ROM
αυτή τη στιγμή). Αυτό το κείμενο αποτελεί μέρος μιας δουλειάς που
βρίσκεται σε εξέλιξη, μα όταν τελικά ολοκληρωθεί θα περιγράφει την
διαδικασία που χρησιμοποιείται για την μεταγλώττιση της συλλογής των
πακέτων στο "Ports Cluster" του FreeBSD.org, πως μπορούν να ρυθμιστούν
οποιαδήποτε άλλα μηχανήματα για να χρησιμοποιηθούν με τον ίδιο τρόπο,
πως να χωριστούν τα πακέτα σε ομάδες στα μέσα της εγκατάστασης, καθώς
και πως μπορούν να γίνουν έλεγχοι στο σύνολο των πακέτων.</para>
</abstract>
</info>
<sect1 xml:id="portbuild">
<title>Μεταγλώττιση των πακέτων από την Συλλογή των Ports</title>
<para>Η <link xlink:href="http://www.FreeBSD.org/ports">Συλλογή των Ports του
FreeBSD</link> αποτελείται από περισσότερα από &os.numports;
προγράμματα, γραμμένα από τρίτους, που είναι διαθέσιμα για χρήση στο
FreeBSD. Οι &a.portmgr; είναι υπεύθυνοι για την συντήρηση ενός
ολοκληρωμένου δέντρου πηγαίου κώδικα που μπορεί να χρησιμοποιηθεί για να
δημιουργηθούν μεταγλωττισμένα πακέτα, τα οποία θα συνοδεύουν κάθε
επίσημη έκδοση του FreeBSD.</para>
<sect2>
<title>Το Cluster των Ports</title>
<para>Για να είμαστε σίγουροι ότι κάθε πακέτο δεν έχει προβλήματα όταν
δίνεται μαζί με κάποια επίσημη έκδοση του FreeBSD, κάθε port
μεταγλωττίζεται σε ένα ξεχωριστό περιβάλλον chroot, ξεκινώντας με
άδειους τους καταλόγους <filename>/usr/local</filename> και
<filename>/usr/X11R6</filename>. Τα προαπαιτούμενα πακέτα
εγκαθίστανται σαν προμεταγλωττισμένα πακέτα πριν ξεκινήσει η
μεταγλώττιση. Αυτές οι προϋποθέσεις είναι που ενισχύουν την
<emphasis>ομοιομορφία</emphasis> στην διαδικασία μεταγλώττισης του
κάθε πακέτου. Ξεκινώντας τη μεταγλώττιση κάθε πακέτου σε ένα καθαρό
περιβάλλον, μπορούμε να ελέγξουμε ότι τα συνοδευτικά δεδομένα κάθε
πακέτου (όπως η λίστα με τα προαπαιτούμενα πακέτα) είναι ακριβή, κι
έτσι δεν θα δημιουργήσουμε ποτέ πακέτα που μπορεί σε κάποια συστήματα
να δουλεύουν και σε άλλα όχι ανάλογα με τα προγράμματα που έχουν
εγκατασταθεί πριν.</para>
<para>Το <quote>Cluster των Ports</quote> για την αρχιτεκτονική x86
αποτελείται αυτή τη στιγμή από ένα κύριο κόμβο (Dual Pentium III
στα 733MHz) και 8 δευτερεύοντες κόμβους (Pentium III στα 800MHz), οι
οποίοι κάνουν την μεταγλώττιση των πακέτων. Με αυτά τα μηχανήματα,
μια μεταγλώττιση όλων των ports παίρνει πάνω από 24 ώρες. Αυτά τα
μηχανήματα είναι co-located μαζί με τα άλλα μηχανήματα της ομάδας του
FreeBSD στον χώρο Exodus του Yahoo, στην Santa Clara, CA.</para>
<para>To <quote>Cluster των Ports</quote> για την αρχιτεκτονική Alpha
αποτελείται από 7 PWS 500A μηχανήματα, τα οποία χάρισε η Compaq.
Είναι κι αυτά co-located στους χώρους του Yahoo.</para>
</sect2>
</sect1>
<sect1>
<title>Ο Διαχωρισμός των Πακέτων</title>
<para>Το συνολικό μέγεθος των πακέτων ξεπέρασε τα 4.1 gigabytes για την
έκδοση 4.4 του FreeBSD. Αυτό είναι λίγο πρόβλημα όμως για τις διανομές
που είναι βασισμένες σε CDROM, γιατί γενικά θέλουμε να μπορούμε να
διανέμουμε όσο το δυνατόν περισσότερα πακέτα χωρίς όμως να αναγκάζουμε
τον χρήστη να αλλάζει δισκάκια για να ικανοποιήσει τις απαιτήσεις
εγκατάστασης των πακέτων. Η λύση είναι φυσικά να φτιάξουμε
<quote>ομάδες</quote> από πακέτα με αντίστοιχη λειτουργικότητα που έχουν
παρόμοιες απαιτήσεις, και να βάλουμε όλα τα πακέτα κάθε ομάδας στον ίδιο
δίσκο. Αυτό το τμήμα του άρθρου περιγράφει το λογισμικό και τη
μεθοδολογία που χρησιμοποιείται για να δημιουργηθούν οι συλλογές από
πακέτα που περιέχονται στους δίσκους των επίσημων εκδόσεων του
FreeBSD.</para>
<para>Τα script και τα υπόλοιπα αρχεία που χρειάζονται για να χωριστούν τα
πακέτα σε ομάδες μπορείτε να τα βρείτε στο CVS στον κατάλογο
<filename>ports/Tools/scripts/release</filename>. Αντιγράψτε αυτό τον
κατάλογο σε ένα μηχάνημα που έχει αρκετό χώρο για να κρατήσει
τουλάχιστον 2 ή 3 φορές το σύνολο των πακέτωνν που θέλετε να
χωρίσετε σε ομάδες.</para>
<para>Τα παρακάτω scripts υπάρχουν σε αυτό τον κατάλογο:</para>
<variablelist>
<varlistentry>
<term><filename>config</filename></term>
<listitem><para>Αυτό το αρχείο περιέχει το μέγεθος του ελεύθερου χώρου
σε κάθε δίσκο, και αν τα πακέτα, τα distfiles, ή και τα δυο
επιτρέπεται να πάνε σε κάθε συγκεκριμένο δίσκο. Η πρώτη στήλη είναι
το όνομα του δίσκου. Πρέπει να είναι της μορφής
<literal>disc[0-9a-z]</literal>. Τώρα το αρχείο αυτό έχε ρυθμίσεις
μέσα για 10 δίσκους (4 για το σετ της εγκατάστασης και 6 για το
συμπληρωματικό toolkit). Υπάρχει κι ένας ακόμα δίσκος που λέγεται
<quote>scratch</quote>, όπου καταλήγουν όλα τα πακέτα και distfiles
που δεν χωράνε πουθενά αλλού. Η δεύτερη στήλη μπορεί να είναι 1 ή
0, όπου η τιμή 1 σημαίνει ότι μπορούν να τοποθετηθούν πακέτα σε αυτό
το δίσκο. Η τρίτη στήλη δουλεύει με παρόμοιο τρόπο, αλλά κανονίζει
αν μπορούν να τοποθετηθούν distfiles σε αυτό το δίσκο. Η τελευταία
στήλη περιέχει τον αριθμό των ελεύθερων bytes στον
δίσκο.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>doit.sh</filename></term>
<listitem><para>Αυτό κάνει την περισσότερη δουλειά. Μόλις έχετε βάλει
όλα τα αρχεία στη θέση τους και έχετε κάνει τις απαραίτητες
ρυθμίσεις, αυτό το script οδηγεί την διαδικασία διαχωρισμού των
πακέτων. Έχετε το νου σας όσο τρέχει όμως, γιατί είναι interactive.
Περισσότερες λεπτομέρειες σχετικά με αυτό το script υπάρχουν και
παρακάτω.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>checkdeps.pl</filename></term>
<listitem><para>Ελέγχει αν όλα τα προαπαιτούμενα πακέτα είναι
διαθέσιμα, όταν του δοθεί ένα αρχείο <filename>INDEX</filename> κι
ένας κατάλογος με πακέτα.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>oneshot.pl</filename></term>
<listitem><para>Αυτό είναι το πρόγραμμα που κάνει όλα τα μαγικά (και
χρησιμοποιώ τον όρο πολύ χαλαρά, καθώς χρησιμοποιεί μια brute force
προσέγγιση). Με είσοδο μια συλλογή από απαιτούμενα πακέτα για κάθε
δίσκο και ένα σετ από πακέτα/distfiles αυτό είναι το script που
τοποθετεί ένα πακέτο ή distfile σε ένα δίσκο μαζί με όλα τα πακέτα
από τα οποία εξαρτάται.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>print-cdrom-packages.sh</filename></term>
<listitem><para>Αυτό το αρχείο είναι ένα αντίγραφο του
<filename>src/release/scripts/print-cdrom-packages.sh</filename>
από την έκδοση στην οποία δουλεύετε.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>scrubindex.pl</filename></term>
<listitem><para>Αυτό το πρόγραμμα αφαιρεί από ένα
<filename>INDEX</filename> αρχείο τις γραμμές που είναι σχετικές με
πακέτα που δεν υπάρχουν. Αφαιρεί επίσης και τα πακέτα που απαιτούν
τα XFree86. ΣΗΜΕΙΩΣΗ: θα πρέπει να ρυθμίσετε την τιμή της
μεταβλητής <varname>xdep</varname> για να βεβαιωθείτε ότι ο αριθμός
έκδοσης είναι σωστός.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>setup.sh</filename></term>
<listitem><para>Αυτό είναι ένα βοηθητικό script που χρησιμοποιείται
στο bento cluster για να κατεβάσει ένα αντίγραφο του ports tree και
του αντίστοιχου σετ από πακέτα/distfiles.</para></listitem>
</varlistentry>
</variablelist>
<para>Μια λίστα από ελέγχους που πρέπει να κάνετε και ρυθμίσεις που πρέπει
να ελέγξετε πριν συνεχίσετε είναι:</para>
<orderedlist>
<listitem><para>Διορθώστε το <filename>config</filename> για να περιέχει
πληροφορίες για όλους τους δίσκους που έχετε, τα μεγέθη τους, και αν
θέλετε να περιέχουν πακέτα, distfiles, και τα δύο, ή κανένα από τα
δύο.</para></listitem>
<listitem><para>Βεβαιωθείτε ότι έχετε σβήσει τον κατάλογο
<filename>gen</filename> αν υπάρχει κάποιος παλιός κατάλογος με αυτό
το όνομα που έχει ξεμείνει από παλιότερα. Αυτός ο κατάλογος περιέχει
διάφορα αρχεία που έχουν νόημα μόνο για το τωρινό τρέξιμο των
προγραμμάτων.</para></listitem>
<listitem><para>Στα πρώτα τρεξίματα που θα κάνετε για να χωριστούν τα
πακέτα είναι καλύτερα να μην κάνετε στα αλήθεια την αντιγραφή των
πακέτων και των distfiles. Αυτό θα σας γλιτώσει και χρόνο και χώρο
στο δίσκο όσο κάνετε δοκιμές μέχρι να σιγουρευτείτε ότι όλα πάνε καλά.
Στο αρχείο <filename>oneshot.pl</filename> αλλάξτε την τιμή της
μεταβλητής <varname>fake</varname> σε 1 κι αντί να κάνει αντιγραφή
των αρχείων θα τα κάνει απλώς &man.touch.1;. Βεβαιωθείτε ότι αλλάξατε
την τιμή της <varname>fake</varname> πάλι σε 0 πριν δώσετε τους
δίσκους σε αυτόν που θα κάνει την μαζική παραγωγή βέβαια, γιατί αλλιώς
οι δίσκοι θα έχουν ένα κατάλογο με πολλά αρχεία μηδενικού
μεγέθους.</para></listitem>
<listitem><para>Βεβαιωθείτε ότι έχετε ένα πρόσφατο αντίγραφο του
<filename>print-cdrom-packages.sh</filename> και ότι είναι από την
σωστή έκδοση.</para></listitem>
<listitem><para>Ελέγξτε ότι στο αρχείο
<filename>scrubindex.pl</filename> αναφέρεται η σωστή έκδοση των
XFree86. Η ίδια τιμή πρέπει να υπάρχει και στα
<filename>doit.sh</filename>.</para></listitem>
</orderedlist>
<para>Το επόμενο βήμα είναι να φτιάξετε ένα αντίγραφο από το ports tree,
τα πακέτα και τα distfiles από ένα πρόσφατο τρέξιμο της μεταγλώττισης
των πακέτων από το cluster των ports. Δείτε το αρχείο
<filename>setup.sh</filename> για ένα παράδειγμα. Τα βασικά βήματα που
πρέπει να κάνετε όμως είναι τα εξής:</para>
<orderedlist>
<listitem><para>Αντιγράψτε το <filename>ports.tar.gz</filename> και
αποσυμπιέστε το στον κατάλογο <filename>ports</filename> μαζί με το
<filename>doit.sh</filename> και τον κατάλογο
<filename>scripts</filename>.</para></listitem>
<listitem><para>Σβήστε τις συντομεύσεις και τους καταλόγους των
πακέτων/distfiles. Το bento τα έχει αυτά σαν συντομεύσεις και θα
πάρετε λάθος αποτελέσματα αν δεν τα σβήσετε πριν
συνεχίσετε.</para></listitem>
<listitem><para>Δημιουργήστε ένα νέο κατάλογο για τα ports/πακέτα και
αντιγράψτε το σετ των πακέτων από το cluster μεταγλώττισης των
πακέτων.</para></listitem>
<listitem><para>Δημιουργήστε ένα νέο κατάλογο για ports/distfiles και
αντιγράψτε τα distfiles από το cluster μεταγλώττισης των πακέτων.
ΣΗΜΕΙΩΣΗ: αν δεν θέλετε κανένα distfile απλά δημιουργήστε τον κατάλογο
και αφήστε τον άδειο. Αυτός ο κατάλογος πρέπει να υπάρχει ακόμα κι αν
δεν περιέχει τίποτα.</para></listitem>
</orderedlist>
<para>Τώρα είμαστε πλέον έτοιμοι για το διασκεδαστικό κομμάτι της
ομαδοποίησης των πακέτων. Μπορείτε να ξεκινήσετε την διαδικασία
τρέχοντας το <command>./doit.sh</command>. Την πρώτη φορά που το
τρέχετε κάνει τα εξής:</para>
<orderedlist>
<listitem><para>Δημιουργεί μια λίστα από τα ports που δεν μπορούν να
διανέμονται στο FTP master site.</para></listitem>
<listitem><para>Σας ρωτάει αν θέλετε να σβήσετε αυτά τα ports, αφού δεν
μπορούν να διανέμονται ελεύθερα. Γενικά εδώ καλύτερα να απαντάτε
(y)es.</para></listitem>
<listitem><para>Φτιάχνει μια λίστα από τα πακέτα που δεν μπορούν να
μπουν στους δίσκους.</para></listitem>
<listitem><para>Σας ρωτάει αν θέλετε να σβήσετε τα πακέτα/distfiles που
δεν μπορούν να μπουν σε CD-ROM. Καλύτερα είναι να απαντήσετε (y)es
εδώ.</para></listitem>
<listitem><para>Αντιγράφει το αρχείο <filename>INDEX</filename> από τον
κατάλογο <filename>ports</filename> στον κατάλογο
<filename>gen</filename>. Καθώς το κάνει, αφαιρεί τις γραμμές που
αντιστοιχούν σε ports ή πακέτα που δεν υπάρχουν. Ελέγχει επίσης αν
υπάρχουν όλα τα προαπαιτούμενα πακέτα και ικανοποιούνται οι εξαρτήσεις
των πακέτων/ports.</para></listitem>
<listitem><para>Δημιουργεί μια λίστα από πακέτα που είναι απαραίτητο να
υπάρχουν σε κάθε δίσκο.</para></listitem>
<listitem><para>Σας ρωτάει αν θέλετε να αντιγράψετε τα αρχεία στους
δίσκους. Αφού γίνει η αντιγραφή στους δίσκους θα ελέγξει για
εξαρτήσεις που λείπουν, θα καθαρίσει το αρχείο
<filename>INDEX</filename> και θα δημιουργήσει ένα αρχείο
<filename>CHECKSUM.MD5</filename>.</para></listitem>
<listitem><para>Ελέγχει ότι όλα τα απαιτούμενα πακέτα είναι όντως σε
κάθε δίσκο, και τυπώνει ένα συγκεντρωτικό πίνακα με τα μεγέθη των
δίσκων.</para></listitem>
</orderedlist>
<para>θα πρέπει να είστε αρκετά τυχεροί για να πετύχει ο διαχωρισμός την
πρώτη φορά, όλα τα πακέτα που χρειάζονται να μεταγλωττιστούν σωστά και
να χωρέσουν και σε κάθε δίσκο. Το μόνο που χρειάζεται μετά είναι να
δώσετε την τιμή 0 στην μεταβλητή <varname>fake</varname> στο αρχείο
<filename>oneshot.pl</filename> και να ξανατρέξετε το
<command>./doit.sh</command>. Την δεύτερη φορά που θα τρέξει, καθώς και
όλες τις υπόλοιπες, δεν θα κάνει τα βήματα 1-5 που αναφέραμε παραπάνω.
Αν θέλετε να ξανατρέξετε κάποια από αυτά τα βήματα, κοιτάξτε στο
<filename>doit.sh</filename> για να δείτε ποια αρχεία πρέπει να σβήσετε
ώστε να μην αποφύγει το <filename>doit.sh</filename> αυτά τα βήματα.
Αν θέλετε να ξανατρέξουν όλα τα βήματα, ο πιο εύκολος τρόπος είναι με
<command>rm -rf gen</command>.</para>
<para>Όταν τελειώσει επιτυχώς η διαδικασία, τα πακέτα/distfiles θα έχουν
αντιγραφεί σε καταλόγους <filename>disc*</filename> και όσα έχουν
απομείνει θα υπάρχουν στον κατάλογο <filename>scratch</filename>.</para>
<para>Τι να κάνετε αν κάτι δεν πάει καλά; Μερικά από τα πιο συχνά
προβλήματα και συμβουλές γι' αυτά φαίνονται παρακάτω:</para>
<variablelist>
<varlistentry>
<term>Απαιτούμενα πακέτα που λείπουν</term>
<listitem><para>Αυτό συμβαίνει πολύ συχνά. Θα χρειαστεί είτε να
περιμένετε για ένα νέο σετ από πακέτα να ετοιμαστεί, στο οποίο τα
πακέτα που λείπουν θα έχουν μεταγλωττιστεί επιτυχώς, ή να βρείτε
κάποιον που μπορεί να ξεκινήσει πάλι την διαδικασία μεταγλώττισης
των πακέτων για σας. <emphasis>Μην</emphasis> προσπαθήσετε να
μεταγλωττίσετε εσείς τα πακέτα που λείπουν στα δικά σας μηχανήματα
και να τα προσθέσετε στο σωρό. Παρόλο που μπορεί να τα καταφέρετε
κι έτσι αν είστε εξαιρετικά προσεκτικοί, στη μεγαλύτερη πλειοψηφία
των περιπτώσεων θα σας ξεφύγει κάποια λεπτομέρεια και η απλή
προσθήκη ενός μόνο πακέτου μπορεί να προκαλέσει προβλήματα σε
εκατοντάδες άλλα πακέτα.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Απαιτούμενα πακέτα που δεν χωράνε</term>
<listitem><para>Μερικές φορές συμβαίνει κι αυτό, και είναι σχετικά
απλό να διορθωθεί. Απλώς διορθώστε το
<filename>print-cdrom-packages.sh</filename> και μετακινήστε τα
πακέτα μέχρι να βρείτε μια διάταξη που να βολεύει. Ναι, αυτό είναι
μια χρονοβόρα διαδικασία και ένας από τους σοβαρούς λόγους για τους
οποίους θα πρέπει να ενεργοποιήσετε την μεταβλητή
<varname>fake</varname> στο αρχείο <filename>oneshot.pl</filename>
μέχρι να καταφέρετε το αποτέλεσμα που θέλετε. Ξανατρέξτε το
<command>./doit.sh</command> όταν τελειώσετε με τις ρυθμίσεις
σας.</para></listitem>
</varlistentry>
<varlistentry>
<term>Απαιτούμενα πακέτα δεν είναι στον σωστό (ή σε κανένα)
δίσκο</term>
<listitem><para>Αυτό συνήθως σημαίνει ότι δεν τα προσθέσατε στο
<filename>print-cdrom-packages.sh</filename> ή τα τοποθετήσατε σε
λάθος δίσκο. Αυτό το script είναι ο κανόνας στον οποίο βασίζεται η
απόφαση για την τοποθεσία ενός πακέτου. Αν θέλετε οπωσδήποτε να
τοποθετηθεί ένα συγκεκριμένο πακέτο σε κάποιο δίσκο, αυτός είναι ο
μόνος τρόπος να το κάνετε με σιγουριά.</para></listitem>
</varlistentry>
</variablelist>
<para>Αν κολλήσετε σε κάποιο σημείο και δεν μπορείτε να βρείτε γιατί κάτι
δεν πάει καλά ή πως να το διορθώσετε, στείλτε ένα email στον &a.steve;
για βοήθεια.</para>
</sect1>
</article>

View file

@ -1,19 +0,0 @@
/*
* Ο φυλλομετρητής Netscape 4.X δεν αναγνωρίζει την ντιρεκτίβα 'import'
* του CSS, οπότε δε μπορούμε να προσθέσουμε ένα layer πάνω από το
* προκαθορισμένο CSS stylesheet. Οπότε χρησιμοποιούμε αυτό το hack για να
* αντιγράψουμε αυτό το stylesheet στο τέλος από το `docbook.css'.
*
* $FreeBSD$
*
* %SOURCE% en_US.ISO8859-1/articles/releng-packages/extra.css
* %SRCID% 1.1
*/
/* @import "docbook.css"; */
/* Παραμετροποίηση, η οποία δείχνει ωραία σε αυτό το άρθρο. */
DIV.TITLEPAGE {
text-align: center;
}

View file

@ -32,7 +32,6 @@ SUBDIR+= problem-reports
SUBDIR+= rc-scripting
SUBDIR+= relaydelay
SUBDIR+= releng
SUBDIR+= releng-packages
SUBDIR+= remote-install
SUBDIR+= serial-uart
SUBDIR+= solid-state

View file

@ -1,18 +0,0 @@
#
# $FreeBSD$
#
# Article: FreeBSD Release Engineering of Third Party Software Packages
DOC?= article
FORMATS?= html
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
CSS_SHEET_ADDITIONS= extra.css
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,359 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en">
<info><title>FreeBSD Release Engineering for Third Party Software
Packages</title>
<authorgroup>
<author><personname><firstname>Steve</firstname><surname>Price</surname></personname><affiliation>
<address><email>steve@FreeBSD.org</email></address>
</affiliation></author>
</authorgroup>
<legalnotice xml:id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.intel;
&tm-attrib.xfree86;
&tm-attrib.general;
</legalnotice>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>This paper describes the approach used by the FreeBSD
ports management team to produce a high quality package set
suitable for official FreeBSD release media. This document is
a work in progress, but eventually it will cover the process
used to build a clean package set on the FreeBSD.org <quote>Ports
Cluster</quote>, how to configure any other set of machines as a
ports cluster, how to split up the packages for the release
media, and how to verify that a package set is
consistent.</para>
</abstract>
</info>
<!-- Introduction
<sect1 id="introduction">
<title>Introduction</title>
<para><emphasis>Coming Soon</emphasis></para>
</sect1>
-->
<sect1 xml:id="portbuild">
<title>Building packages from the Ports Collection</title>
<para>The <link xlink:href="http://www.FreeBSD.org/ports">FreeBSD Ports
collection</link> is a collection of over &os.numports;
third-party software packages available for FreeBSD. The &a.portmgr;
is responsible for maintaining a consistent ports tree that can be used
to create the binary packages that accompany a given FreeBSD
release.</para>
<sect2>
<title>The Ports Cluster</title>
<para>In order to provide a consistent set of third-party
packages for FreeBSD releases, every port is built in a
separate chroot environment, starting with an empty
<filename>/usr/local</filename> and
<filename>/usr/X11R6</filename>. The requisite dependencies
are installed as packages before the build proceeds. This
enforces <emphasis>consistency</emphasis> in the package build
process. By starting the package build in a pristine
environment, we can assure that the package metadata (such as
required dependencies) is accurate. This way, we will never
generate packages that might work on some systems and not on
others depending on what software was previously
installed.</para>
<para>The <quote>Ports Cluster</quote> for the x86 architecture
currently consists of a master node (Dual &pentium; III 733MHz)
and 8 slave nodes (&pentium; III 800MHz) to do the actual
package builds. With this configuration, a complete package
build takes over 24 hours. These machines are co-located with
the other FreeBSD Project equipment at Yahoo's corner of
Exodus in Santa Clara, CA.</para>
<para>The <quote>Ports Cluster</quote> for the Alpha
architecture consists of 7 PWS 500A machines donated by Compaq
and also co-located with Yahoo's facilities.</para>
</sect2>
</sect1>
<sect1>
<title>The Package Split</title>
<para>For FreeBSD 4.4 over 4.1 gigabytes of packages were created.
This causes a problem for CDROM distributions because we would
like to ship as many packages as possible without making the
user insert another disc to satisfy dependencies. The solution
is to create <quote>clusters</quote> of like packages with
similar dependencies and group these onto specific discs. This
section describes the software and methodology used to create
those package sets for the official FreeBSD release
discs.</para>
<para>The scripts and other files needed to produce a package
split can be found in the CVS tree in
<filename>ports/Tools/scripts/release</filename>.
Copy this directory to a machine that has enough free disk
space to hold 2 to 3 times the size of the package set that you
wish to split.</para>
<para>The following scripts are present in this directory:</para>
<variablelist>
<varlistentry>
<term><filename>config</filename></term>
<listitem><para>This file contains the free space on each disc
and whether packages, distfiles, or both are allowed on any
given disc. The first column is the disc name. It must be
of the form <literal>disc[0-9a-z]</literal>. Currently it is set up
to allow for 10 discs (4 for the release set and 6 for the toolkit).
There is an implied extra disc called <quote>scratch</quote> where
all of the remaining distfiles/packages land if they do not fit
elsewhere. The second column can be either a 1 or 0, where 1
says that it is okay to place packages on this disc. The
third column works the same way, but it controls
whether distfiles are placed on this disc. The last column
denotes the number of bytes of free space on a
disc.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>doit.sh</filename></term>
<listitem><para>This is the workhorse. Once you have all the
files in place and things properly configured this script
directs the process of splitting packages. Beware it is
interactive so you need to keep an eye on it as it runs.
More details on what happens in this script will
follow.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>checkdeps.pl</filename></term>
<listitem><para>Makes sure all packages dependencies are
satisfied given an <filename>INDEX</filename> file and a directory
of packages.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>oneshot.pl</filename></term>
<listitem><para>This is where all the magic (and I use that
term loosely as it is mostly just a brute force approach)
happens. Given a list of required packages for each disc
and a set of packages/distfiles this is the script that
places a package or distfile on a disc along with all of its
dependencies.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>print-cdrom-packages.sh</filename></term>
<listitem><para>This file is a copy of
<filename>src/release/scripts/print-cdrom-packages.sh</filename>
from the release you are working on.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>scrubindex.pl</filename></term>
<listitem><para>This script removes lines from an
<filename>INDEX</filename> file for packages that are not present.
It also removes the &xfree86; dependencies. NOTE: you will need to
tweak the value of the <varname>xdep</varname> variable to make sure
the version number is correct.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>setup.sh</filename></term>
<listitem><para>This is a helper script that I use on the
ports building cluster to grab a copy of the ports tree and the
matching set of the packages/distfiles.</para></listitem>
</varlistentry>
</variablelist>
<para>Here is a checklist of things you will need to check or
configure before going any further.</para>
<orderedlist>
<listitem><para>Edit <filename>config</filename> to denote the
number of discs you have, their sizes, and whether you want
them want to contain packages, distfiles, both, or
neither.</para></listitem>
<listitem><para>Make sure you remove the <varname>gen</varname>
directory if there is an old one laying around. This directory
contains working files that will only be valid for the current
split.</para></listitem>
<listitem><para>On your first pass through a split it is best to
fake the copying of packages and distfiles. This will save
both time and disk space while you do a couple of trial runs to
make sure things fit, etc. In the
<filename>oneshot.pl</filename> set the <varname>fake</varname>
variable to 1 and instead of actually copying the files it will
&man.touch.1; them. Be sure you turn this off or set
<varname>fake</varname> to 0 before you give the resultant discs to
the person that will be mastering the discs otherwise they will get a
directory full of zero-sized files.</para></listitem>
<listitem><para>Make sure you have a recent copy of the
<filename>print-cdrom-packages.sh</filename> and that it is
from the correct release.</para></listitem>
<listitem><para>Check to make sure the &xfree86; dependency in
<filename>scrubindex.pl</filename> has the correct
version number. You will also need to make sure this value is
correct in <filename>doit.sh</filename> as
well.</para></listitem>
</orderedlist>
<para>Next you will need to get a copy of the ports tree, packages,
and distfiles from a recent build on the package cluster. See
the <filename>setup.sh</filename> for a working example
but essentially here is what needs to be done.</para>
<orderedlist>
<listitem><para>Grab a copy of <filename>ports.tar.gz</filename>
and extract it into the <filename>ports</filename> directory alongside
<filename>doit.sh</filename> and the
<filename>scripts</filename> directory.</para></listitem>
<listitem><para>Remove the packages/distfiles directories or
symlinks. Bento has these as symlinks and you will have mixed
results if you do not get rid of them before
proceeding.</para></listitem>
<listitem><para>Create a new ports/packages directory and copy
the package set from the package building
cluster.</para></listitem>
<listitem><para>Create a new ports/distfiles directory and copy
the distfiles from the package building cluster. NOTE: if you
do not want any distfiles simply create the directory and leave
it empty. This directory must be present even if it does not
contain anything.</para></listitem>
</orderedlist>
<para>Now we are finally ready for the fun task of actually
splitting the packages. You start the processing by running
<command>./doit.sh</command>. Here is what it does the first
time you run it.</para>
<orderedlist>
<listitem><para>Create a list of the restricted (can not be on the
master FTP site) ports.</para></listitem>
<listitem><para>Asks you if you would like to remove the restricted
ports. Most of the time you will want to answer (y)es
here.</para></listitem>
<listitem><para>Create a list of the packages/distfiles that
can not be put on the discs.</para></listitem>
<listitem><para>Asks you if you would like to remove the
non-cdromable packages/distfiles. Most of the time you will
want to answer (y)es here.</para></listitem>
<listitem><para>Copies the <filename>INDEX</filename> from the
<filename>ports</filename> directory to the <filename>gen</filename>
directory. In doing so it removes the lines for ports
where the packages do not exist. It also checks to make sure
that all of the required dependency packages are
present.</para></listitem>
<listitem><para>Create a list of packages that are required on
each disc.</para></listitem>
<listitem><para>Asks you if you would like to populate the discs.
After populating each disc it will check for missing
dependencies, scrub the <filename>INDEX</filename> file, and create the
<filename>CHECKSUM.MD5</filename> file.</para></listitem>
<listitem><para>Check to make sure the required packages made it
on each disc and gives you a summary of the sizes of each
disc.</para></listitem>
</orderedlist>
<para>After going through this the first time if you are lucky
enough that all of the required packages built and fit on each
disc. All you need to do is set <varname>fake</varname> to 0 in
<filename>oneshot.pl</filename> and re-run
<command>./doit.sh</command>. The second and subsequent times
around it will skip steps 1-5 above. If you want to re-run any
of those steps refer to <filename>doit.sh</filename> for which files
need to be removed to not short-circuit those steps. If you want to
repeat all of these steps then the easiest way is to <command>rm -rf
gen</command>.</para>
<para>Upon successful completion the packages/distfiles will be in
the <filename>disc*</filename> directories and the leftover will
be in the <filename>scratch</filename> directory.</para>
<para>What to do if things go wrong? Here is some common gotchas
and workarounds.</para>
<variablelist>
<varlistentry>
<term>Missing required packages</term>
<listitem><para>This is a pretty common occurrence. You will
either need to wait for a new set of packages where the
missing packages were built or get someone to re-start the
package build for you. <emphasis>Do not</emphasis> attempt to build
the missing packages on your own machine and add them into the fray.
While you might be able to get away with this if you are
extremely careful the vast majority of the time you will miss
some little detail and the simple process of adding a
package could make hundreds of others come up mysteriously
broken.</para></listitem>
</varlistentry>
<varlistentry>
<term>Required packages will not fit</term>
<listitem><para>This happens on occasion too and is relatively
easy to fix. Simply edit
<filename>print-cdrom-packages.sh</filename> to move
packages around until they fit. Yes this is an iterative
process and one of the reasons why you should enable
<varname>fake</varname> in <filename>oneshot.pl</filename> until you
have gotten things the way you want them. Re-run
<command>./doit.sh</command> after you made your
adjustments.</para></listitem>
</varlistentry>
<varlistentry>
<term>Required packages not on the right (or any) disc</term>
<listitem><para>This usually means you did not add them to
<filename>print-cdrom-packages.sh</filename> or you put them
on the wrong disc. This script is the gospel by which this
whole process determines where a package must be. If you
want to force a package to land on a particular disc this is
the only way to ensure that it will
happen.</para></listitem>
</varlistentry>
</variablelist>
<para>If you get completely stuck and can not figure out why things
are borked or how to fix them then email &a.steve.email; for
assistance.</para>
</sect1>
</article>

View file

@ -1,16 +0,0 @@
/*
* Netscape 4 does not recognice the @import directive of CSS, so we
* can't add an additional stylesheet layer on top of the default one.
* Instead, we use this hack to copy this file to the end of
* docbook.css.
*
* $FreeBSD$
*/
/* @import "docbook.css"; */
/* Customization that looks good for this particular article. */
DIV.TITLEPAGE {
text-align: center;
}

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd" [
<!ENTITY art.re.pkgs '<link xmlns="http://docbook.org/ns/docbook" xlink:href="&url.articles.releng-packages;/article.html">The Release Engineering of Third Party Packages</link>'>
]>
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en">
@ -728,12 +727,6 @@
is responsible for maintaining a consistent ports tree that can be used
to create the binary packages that accompany official &os;
releases.</para>
<para>The release engineering activities for our collection of
third-party packages is beyond the scope of this document. A
separate article, &art.re.pkgs;, covers this topic
in depth.</para>
</sect2>
<sect2>
@ -796,17 +789,6 @@
directory.</para>
</sect3>
<sect3>
<title>Discs 3 and 4</title>
<para>The remaining two discs contain additional software
packages for &os;. The packages should be clustered so that
a package and all of its <emphasis>dependencies</emphasis> are
included on the same disc. More information about the
creation of these discs is provided in the &art.re.pkgs;
article.</para>
</sect3>
<sect3>
<title>Multi-volume support</title>

View file

@ -247,18 +247,6 @@
interested in producing customized FreeBSD releases for
corporate rollouts or commercial productization.</p>
<p><a href="&url.articles;/releng-packages/index.html">FreeBSD
Release Engineering for Third Party Packages</a>
(releng-packages)<br/>
Describes the approach used by the FreeBSD ports management team
to produce a high quality package set suitable for official
FreeBSD release media. This document is a work in progress, but
eventually it will cover the process used to build a clean
package set on the FreeBSD.org "Ports Cluster", how to configure
any other set of machines as a ports cluster, how to split up
the packages for the release media, and how to verify that a
package set is consistent.</p>
<p><a href="&url.articles;/remote-install/index.html">Remote
Installation of the &os; Operating System without a
Remote Console</a> (remote-install)<br/>

View file

@ -21,7 +21,6 @@ SUBDIR+= new-users
SUBDIR+= pam
SUBDIR+= pr-guidelines
SUBDIR+= problem-reports
SUBDIR+= releng-packages
ROOT_SYMLINKS+= new-users

View file

@ -1,25 +0,0 @@
#
# The FreeBSD Documentation Project
# The FreeBSD French Documentation Project
#
# $FreeBSD$
# $Id: Makefile,v 1.1 2002-06-20 09:51:25 blackend Exp $
# Original revision: 1.1
#
# Article: FreeBSD Release Engineering of Third Party Software Packages
DOC?= article
FORMATS?= html
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
# XML content
SRCS= article.xml
CSS_SHEET_ADDITIONS= extra.css
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,465 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<!--
The FreeBSD Documentation Project
The FreeBSD French Documentation Project
$Id: article.xml,v 1.1 2002-06-20 09:51:25 blackend Exp $
$FreeBSD$
Original revision: 1.4
-->
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="fr">
<info><title>Techniques de publication des logiciels tiers
pré-compilés pour FreeBSD</title>
<authorgroup>
<author><personname><firstname>Steve</firstname><surname>Price</surname></personname><affiliation>
<address><email>steve@FreeBSD.org</email></address>
</affiliation></author>
</authorgroup>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>Ce document décrit l'approche utilisée par
l'équipe technique de publication des versions de FreeBSD
pour produire un ensemble de haute qualité de logiciels
pré-compilés adapté au
support officiel de distribution de FreeBSD. Ce document est un
travail en cours, mais au final il couvrira le processus employé
pour construire un ensemble de logiciels pré-compilés
sur le &ldquo;Ports Cluster&rdquo; (grappe de machines pour les
logiciels portés) de FreeBSD.org, comment configurer
n'importe quel autre ensemble de machines en tant que grappe
de machines pour les logiciels portés, comment répartir
les logiciels pré-compilés
pour le support de publication, et comment vérifier qu'un
ensemble de logiciels pré-compilés est
cohérent.</para>
&trans.a.fonvieille;
</abstract>
</info>
<!-- Introduction
<sect1 id="introduction">
<title>Introduction</title>
<para><emphasis>Coming Soon</emphasis></para>
</sect1>
-->
<sect1 xml:id="portbuild">
<title>Compiler les logiciels pré-compilés &agrave;
partir du catalogue des logiciels portés</title>
<para>Le <link xlink:href="http://www.FreeBSD.org/ports">catalogue des
logiciels portés pour FreeBSD</link> est un catalogue de
plus de &os.numports; logiciels tiers disponibles pour FreeBSD.
&a.portmgr; est responsable du maintien de la cohérence du
catalogue des logiciels portés qui peut être utilisé
pour la création des logiciels binaires pré-compilés
qui accompagnent une version donnée de FreeBSD.</para>
<sect2>
<title>La &ldquo;grappe de machines&rdquo; pour les
logiciels portés</title>
<para>Afin de fournir un ensemble cohérent de logiciels
pré-compilés tiers pour les publications de
FreeBSD, chaque logiciel porté est compilé dans
un environnement chroot, en
partant de répertoires <filename>/usr/local</filename> et
<filename>/usr/X11R6</filename> vides. Les dépendances requises
sont installées sous forme de logiciels
pré-compilés avant le
processus de compilation. Cela renforce la
<emphasis>cohérence</emphasis> dans le processus de compilation
des logiciels pré-compilés. En démarrant la
compilation du logiciel dans un environnement vierge, nous pouvons
être sûr que les données du logiciel
pré-compilé (comme les dépendances
requises) sont précises, et donc que nous ne
générerons jamais
de logiciels pré-compilés qui pourraient fonctionner sur
certains systèmes et pas sur d'autres en fonction du
logiciel qui fut précédemment installé.</para>
<para>La &ldquo;grappe de machines pour les logiciels
portés&rdquo; destinée &agrave; l'architecture
x86 consiste actuellement en un noeud maître (un
Bi-Pentium III 733Mhz) et 8 noeuds esclaves (Pentium III 800Mhz)
pour effectuer la compilation des logiciels
pré-compilés. Avec cette
configuration, une compilation complète des logiciels
pré-compilés est effectuée en 24
heures. Ces machines sont hébergées avec d'autres
équipements du Projet FreeBSD au centre
Yahoo &ldquo;corner of Exodus&rdquo; &agrave; Santa Clara en
Californie.</para>
<para>La &ldquo;grappe de machines pour les logiciels
portés&rdquo; destinée &agrave; l'architecture
Alpha se compose de 7 machines PWS 500A données par
Compaq et également hébergées avec
les équipements de Yahoo.</para>
</sect2>
</sect1>
<sect1>
<title>Répartition des logiciels pré-compilés</title>
<para>Pour FreeBSD 4.4 plus de 4.1 gigaoctets de logiciels
pré-compilés furent créés. Cela
pose un problème pour les CDROMs
de distribution car nous aimerions mettre autant de logiciels
pré-compilés que possible sans que l'utilisateur
ne soit obligé d'introduire un autre disque pour
satisfaire des dépendances. La
solution est de créer des &ldquo;bouquets&rdquo; de logiciels
pré-compilés avec des dépendances identiques
et de les grouper sur des disques spécifiques. Cette
section décrit le logiciel et la
méthode mise en oeuvre dans la création de ces
ensembles de logiciels pré-compilés pour les disques
officiels de distribution de FreeBSD.</para>
<para>Tout d'abord vous devrez récupérer une copie de
l'archive <command>tar</command> &agrave; l'URL suivante:</para>
<para><uri xlink:href="http://people.freebsd.org/~steve/release-scripts.tgz">http://people.freebsd.org/~steve/release-scripts.tgz</uri></para>
<para>Copiez cette archive sur une machine qui dispose de
suffisamment d'espace libre pour héberger 2 &agrave; 3
fois la taille de l'ensemble de logiciels
pré-compilés que vous désirez diviser.
L'archive sera extraite dans le répertoire de travail
courant aussi soyez sûr d'avoir créé un
répertoire convenablement nommé pour la
version sur laquelle vous êtes en train de travailler.</para>
<para>Après avoir extrait les fichiers, vous remarquerez les
fichiers suivants:</para>
<variablelist>
<varlistentry>
<term><filename>config</filename></term>
<listitem><para>Ce fichier contient l'espace libre disponible
sur chaque disque et si les logiciels
pré-compilés, leurs
sources, ou les deux sont autorisés sur n'importe quel
disque donné. La première colonne est le nom
du disque. Il doit
être sous la forme disc[0-9a-z]. Actuellement c'est
configuré
pour permettre 10 disques (4 pour l'ensemble de distribution
et 6 pour la &ldquo;trousse &agrave; outils&rdquo;). Il existe
un disque supplémentaire appelé
&ldquo;scratch&rdquo; où résident
les sources/logiciels pré-compilés restants s'ils
ne peuvent trouver place ailleurs. La deuxième colonne
peut être &agrave; 1 ou &agrave; 0 où 1 indique
qu'il est correct de placer les logiciels
pré-compilés sur ce disque. La troisième
colonne fonctionne
de la même façon sauf qu'elle contrôle si
les sources sont placées sur ce disque. La
dernière colonne représente le
nombre d'octets d'espace libre sur un
disque.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>doit.sh</filename></term>
<listitem><para>C'est le cheval de labour. Une fois que vous
avez tous les fichiers en place et les choses correctement
configurées cette procédure dirige le processus
de division des logiciels pré-compilés. Prenez
garde, c'est une procédure
interactive aussi vous devez garder un oeil dessus quand elle
tourne. Plus de détails sur ce que fait cette
procédure suivront.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>scripts/checkdeps.pl</filename></term>
<listitem><para>S'assure que toutes les dépendances des
logiciels pré-compilés sont satisfaites &agrave;
l'aide d'un fichier d'INDEX et d'un répertoire de
logiciels pré-compilés.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>scripts/oneshot.pl</filename></term>
<listitem><para>C'est ici que tout la magie (et j'utilise ce
terme de façon plutôt impropre étant
donné que c'est pour la
plupart du temps juste qu'une approche en force brute) se
produit. En fonction d'une liste de logiciels requis pour
chaque disque et un ensemble de logiciels
pré-compilés/sources, c'est cette
procédure qui place un
logiciel pré-compilé ou une source sur un
disque avec toutes
ses dépendances.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>scripts/print-cdrom-packages.sh</filename></term>
<listitem><para>Ce fichier est une copie du fichier
<filename>src/release/scripts/print-cdrom-packages.sh</filename>
provenant de la version sur laquelle vous êtes en train de
travailler.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>scripts/scrubindex.pl</filename></term>
<listitem><para>Cette procédure efface les lignes d'un
fichier INDEX concernant les logiciels
pré-compilés qui ne sont pas
présents. Elle retire également les
dépendances d'XFree86.
NOTE: vous devrez ajuster la valeur de la variable xdep pour
être sûr que le numéro de version est
correct.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>scripts/setup.sh</filename></term>
<listitem><para>C'est une procédure auxiliaire que
j'utilise sur la &ldquo;grappe de machines&rdquo; bento pour
récupérer une copie du catalogue des logiciels
portés et l'ensemble correspondant de logiciels
pré-compilés/sources.</para></listitem>
</varlistentry>
</variablelist>
<para>Voici une liste des choses que vous devrez contrôler ou
configurer avant d'aller plus loin.</para>
<orderedlist>
<listitem><para>Editez le fichier <filename>config</filename> pour
indiquer le nombre de disques dont vous disposez, leur taille,
et si vous désirez qu'ils contiennent des logiciels
pré-compilés, des sources, les deux, ou ni l'un ni
l'autre.</para></listitem>
<listitem><para>Soyez sûr d'effacer le répertoire
gen s'il en existe un ancien. Ce répertoire contient
les fichiers de travail qui ne seront seulement valables que
pour la division actuelle.</para></listitem>
<listitem><para>Dans votre premier essai de division, il est mieux
de simuler la copie des logiciels pré-compilés et
des sources. Cela économisera du temps et de l'espace
disque pendant que vous faites quelques essais pour être
sûr que tout ce passe comme
prévu, etc... Dans la procédure
<filename>scripts/oneshot.pl</filename> positionnez la variable
fake &agrave; 1 et au lieu de vraiment copier les fichiers, elle
créera des fichiers vides &agrave; l'aide de la commande
&man.touch.1;. Soyez sûr de désactiver cela en
positionnant fake &agrave; 0 avant de confier
les disques résultants &agrave; la personne chargée
de la &ldquo;mastérisation&rdquo;, sinon on obtiendra un
répertoire rempli de fichiers vides.</para></listitem>
<listitem><para>Vérifiez que vous disposez bien d'une copie
récente du fichier
<filename>print-cdrom-packages.sh</filename> et qu'il provient
de la version correcte de distribution.</para></listitem>
<listitem><para>Contrôlez que la dépendance d'XFree86 dans
<filename>scripts/scrubindex.pl</filename> possède le
numéro de version correct. Vous devrez également
vérifier que cette valeur est correcte dans
<filename>doit.sh</filename>.</para></listitem>
</orderedlist>
<para>Ensuite vous devrez récupérer une copie du
catalogue des logiciels portés, des logiciels
pré-compilés, et des sources &agrave;
partir d'une récente compilation sur la &ldquo;grappe de
machines&rdquo; destinée &agrave; la compilation des logiciels
pré-compilés. Voir le
fichier <filename>scripts/setup.sh</filename> pour un exemple qui
fonctionne, mais voici essentiellement ce qu'il faut faire.</para>
<orderedlist>
<listitem><para>Récupérez une copie de
<filename>ports.tar.gz</filename> et désarchivez
l&agrave; dans le répertoire des logiciels
portés &agrave; coté de
<filename>doit.sh</filename> et du répertoire
<filename>scripts</filename>.</para></listitem>
<listitem><para>Effacez les répertoires de logiciels
pré-compilés/sources ou les liens symboliques. Bento
les a sous forme de liens symboliques et vous obtiendrez
des résultats mixtes si vous ne vous en débarrassez
pas avant de poursuivre.</para></listitem>
<listitem><para>Créez un nouveau répertoire
ports/packageset copiez-y l'ensemble des logiciels
pré-compilés depuis la &ldquo;grappe de
machines&rdquo; de compilation de
logiciels pré-compilés.</para></listitem>
<listitem><para>Créez un nouveau répertoire
ports/distfiles et copiez-y les sources depuis la &ldquo;grappe de
machines&rdquo; de compilation des logiciels
pré-compilés. NOTE: Si vous ne voulez
aucune source, créez simplement le répertoire et
laissez-le vide. Ce répertoire doit être
présent même s'il ne contient rien.</para></listitem>
</orderedlist>
<para>Vous êtes désormais fin prêt pour
l'amusante tâche de répartition des logiciels
pré-compilés. Vous démarrez le
processus en lançant <command>./doit.sh</command>. Voici
ce qu'il se passe la première fois que vous lancez
le processus.</para>
<orderedlist>
<listitem><para>Création de la liste des logiciels
portés &agrave; diffusion restreinte (qui ne peuvent
être sur le site FTP principal).</para></listitem>
<listitem><para>On vous demandera si vous désirez retirer les
logiciels portés &agrave; diffusion restreinte. La plupart
du temps vous voudrez répondre &ldquo;(y)es&rdquo;
ici.</para></listitem>
<listitem><para>Création d'une liste de logiciels
pré-compilés/sources qui ne peuvent être
placés sur les disques.</para></listitem>
<listitem><para>On vous demandera si vous désirez retirer les
logiciels pré-compilés/sources que l'on ne peut
placer sur CDROM. La plupart du temps vous voudrez répondre
&ldquo;(y)es&rdquo; ici.</para></listitem>
<listitem><para>Copie de INDEX du répertoire ports vers le
répertoire gen. En faisant cela, on retire les lignes pour les
logiciels portés pour lesquels une version
pré-compilée n'existe pas. On vérifie
également que toutes les dépendances
requises sous forme pré-compilées sont
présentes.</para></listitem>
<listitem><para>Création d'une liste de logiciels
pré-compilés qui sont nécessaires sur
chaque disque.</para></listitem>
<listitem><para>On vous demandera si vous désirez peupler les
disques. Après avoir rempli chaque disque, la procédure
recherchera les dépendances manquantes, nettoiera le fichier
INDEX, et créera le fichier CHECKSUM.MD5.</para></listitem>
<listitem><para>La procédure vérifiera les logiciels
pré-compilés requis présents sur chaque disque et
vous donnera un résumé de
la taille de chaque disque.</para></listitem>
</orderedlist>
<para>Après être passé par cette première
tentative si vous êtes suffisamment chanceux pour que tous
les logiciels pré-compilés
soient créés et placés sur chaque disque,
tout ce que vous devez faire est de positionner fake &agrave; 0 dans
<filename>scripts/oneshot.pl</filename> et relancer la procédure
<command>./doit.sh</command>. La seconde fois et les suivantes,
les étapes 1 &agrave; 5 seront passées. Si vous
voulez effectuer &agrave; nouveau une de ces étapes,
référez-vous &agrave; doit.sh pour connaître
quels fichiers doivent être effacés pour ne pas
court-circuiter ces étapes. Si vous voulez
répéter toutes ces étapes alors la
méthode la plus simple est d'utiliser
la commande <command>rm -rf gen</command>.</para>
<para>Après une opération réussie les logiciels
pré-compilés/sources seront dans les répertoires
<filename>disc*</filename> et ce qui
reste sera dans le répertoire scratch.</para>
<para>Que faire si les choses se passent mal? Voici quelques
problèmes courants et leurs solutions.</para>
<variablelist>
<varlistentry>
<term>Logiciels pré-compilés
nécessaires manquants</term>
<listitem><para>C'est un problème assez courant. Vous
devrez soit attendre un nouvel ensemble de logiciels
pré-compilés où les logiciels manquants
seront compilés
soit trouver quelqu'un pour relancer la compilation de
logiciels pré-compilés pour
vous. N'essayez pas de compiler les logiciels manquants sur
votre machine et de les jeter dans l'arène. Alors que vous
pourriez être en mesure de vous débrouiller avec si
vous êtes extrêmement prudent, la majeur partie du temps
un petit détail vous échappera et le simple fait
d'ajouter un logiciel pourra faire que des centaines
d'autres apparaîtrons comme mystérieusement
défectueux.</para></listitem>
</varlistentry>
<varlistentry>
<term>Logiciels pré-compilés requis mais qui ne
pourront trouver place sur les disques</term>
<listitem><para>Cela se produit également occasionnellement et
est relativement simple &agrave; corriger. Editez simplement
print-cdrom-packages.sh pour déplacer les logiciels
pré-compilés jusqu'&agrave; qu'ils trouvent
place. C'est bien, en
effet, un processus &agrave; répéter plusieurs fois
et c'est une des raisons pourquoi vous devriez activer fake dans
<filename>scripts/oneshot.pl</filename> jusqu'&agrave; ce que vous
ayez obtenu les choses comme désirées.
Relancez <command>./doit.sh</command> après avoir
effectué vos ajustements.</para></listitem>
</varlistentry>
<varlistentry>
<term>Logiciels pré-compilés requis mais pas
présents sur le bon disque (voire sur aucun)</term>
<listitem><para>Cela signifie généralement que vous ne
les avez pas ajoutés dans le fichier
<filename>print-cdrom-packages.sh</filename> ou que vous les
avez mis sur le mauvais disque. C'est par cette procédure
que l'ensemble du processus détermine où doit aller un
logiciel pré-compilé. Si vous voulez forcer un
logiciel &agrave; se retrouver sur un disque particulier c'est
la seule manière d'être sûr que cela se
produira.</para></listitem>
</varlistentry>
</variablelist>
<para>Si vous restez complètement coincé et que vous
n'arrivez pas &agrave; comprendre pourquoi les choses sont
cassées ou que vous ne savez pas comment les corriger alors
envoyez un courrier électronique &agrave; &a.steve; pour
demander de l'aide.</para>
</sect1>
</article>

View file

@ -1,16 +0,0 @@
/*
* Netscape 4 does not recognice the @import directive of CSS, so we
* can't add an additional stylesheet layer on top of the default one.
* Instead, we use this hack to copy this file to the end of
* docbook.css.
*
* $FreeBSD$
*/
/* @import "docbook.css"; */
/* Customization that looks good for this particular article. */
DIV.TITLEPAGE {
text-align: center;
}

View file

@ -34,7 +34,6 @@ SUBDIR+= problem-reports
#SUBDIR+= rc-scripting
#SUBDIR+= relaydelay
#SUBDIR+= releng
#SUBDIR+= releng-packages
#SUBDIR+= remote-install
#SUBDIR+= serial-uart
#SUBDIR+= solid-state

View file

@ -27,7 +27,6 @@ SUBDIR+= pr-guidelines
SUBDIR+= problem-reports
SUBDIR+= relaydelay
SUBDIR+= releng
SUBDIR+= releng-packages
#SUBDIR+= serial-uart
SUBDIR+= solid-state
#SUBDIR+= vinum

View file

@ -1,22 +0,0 @@
# The FreeBSD Russian Documentation Project
#
# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/releng-packages/Makefile,v 1.2 2005/07/01 07:07:44 gad Exp $
# $FreeBSD$
#
# Original revision: r39631
#
# Article: FreeBSD Release Engineering of Third Party Software Packages
DOC?= article
FORMATS?= html
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
CSS_SHEET_ADDITIONS= extra.css
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,412 +0,0 @@
<?xml version="1.0" encoding="koi8-r"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<!--
The FreeBSD Russian Documentation Project
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/releng-packages/article.xml,v 1.7 2006/03/22 17:03:22 marck Exp $
Original revision: r43184
-->
<!--
The FreeBSD Documentation Project
-->
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru">
<info><title>Подготовка релизов FreeBSD в части программных пакетов сторонних
разработчиков</title>
<authorgroup>
<author><personname><firstname>Steve</firstname><surname>Price</surname></personname><affiliation>
<address><email>steve@FreeBSD.org</email></address>
</affiliation></author>
</authorgroup>
<legalnotice xml:id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.intel;
&tm-attrib.xfree86;
&tm-attrib.general;
</legalnotice>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>В этом документе описывается подход, используемый группой
менеджеров портов FreeBSD для создания высококачественного набора
пакетов, предназначенного для размещения на носителях с официальными
релизами FreeBSD. Этот документ находится в состоянии доработки, и
постепенно он покроет весь процесс построения целостного набора
пакетов в <quote>Кластере Портов</quote> проекта FreeBSD.org, опишет,
как настроить любой другой набор машин в качестве кластера портов, как
разделить пакеты для размещения на носителях с релизом и как проверить
целостность набора пакетов.</para>
</abstract>
</info>
<!-- Введение
<sect1 id="introduction">
<title>Введение</title>
<para><emphasis>Вскоре будет</emphasis></para>
</sect1>
-->
<sect1 xml:id="portbuild">
<title>Построение пакетов из Коллекции Портов</title>
<para><link xlink:href="http://www.FreeBSD.org/ports">Коллекция портов
FreeBSD</link> представляет собой собрание более чем &os.numports;
программных пакетов сторонних разработчиков, доступных для FreeBSD. За
поддержку дерева портов, которое может использоваться для подготовки
бинарных пакетов, идущих с некоторым релизом FreeBSD, в рабочем
состоянии, отвечает &a.portmgr;.</para>
<sect2>
<title>Кластер портов</title>
<para>Для подготовки целостного набора пакетов сторонних разработчиков
для релизов FreeBSD каждый порт строиться в отдельном окружении с
изменённым корнем файловой системы, с изначально пустыми каталогами
<filename>/usr/local</filename> и <filename>/usr/X11R6</filename>.
Требуемые зависимости устанавливаются в виде пакетов до момента начала
построения. Это обеспечивает <emphasis>целостность</emphasis> процесса
построения пакетов. Запуская построение пакета в чистом окружении,
мы можем гарантировать, что метаданные пакета (такие, как требуемые
зависимости) корректны. Таким образом, мы никогда не создаём пакеты,
которые, в зависимости от ранее установленного программного
обеспечения, на одних системах работать могут, а на других работать не
будут.</para>
<para><quote>Кластер портов</quote> для архитектуры x86 в настоящее время
состоит из центрального узла (Dual &pentium; III 733MHz) и 8
подчинённых узлов (&pentium; III 800MHz), выполняющих реальное
построение пакетов. В такой конфигурации полное построение пакетов
занимает более 24 часов. Эти машины размещены вместе с остальным
оборудованием Проекта FreeBSD в углу с оборудованием компании Yahoo
у провайдера Exodus в калифорнийском городе Санта-Клара.</para>
<para><quote>Кластер портов</quote> для архитектуры Alpha состоит из
7 машин PWS 500A, предоставленных компанией Compaq, и они также
расположены вместе с оборудованием компании Yahoo.</para>
</sect2>
</sect1>
<sect1>
<title>Разделение пакетов</title>
<para>Для FreeBSD 4.4 было создано более 4.1 гигабайт пакетов. Это
привело к проблемам для распространения на CDROM, так как нам нужно
записать как можно больше пакетов без необходимости заставлять
пользователя вставлять другой диск для поиска зависимостей. Решением
является создание <quote>кластеров</quote> близких пакетов с похожими
зависимостями и группировать их на отдельные диски. В этом разделе
описывается программное обеспечение и методология, использованная при
создании таких наборов пакетов для официальных дисков FreeBSD с
релизами.</para>
<para>Скрипты и остальные файлы, необходимые для выполнения разделения
пакетов, можно найти в дереве CVS в каталоге
<filename>ports/Tools/scripts/release</filename>. Скопируйте этот
каталог на машину с свободным дисковым пространством, достаточным для
хранения 2 или 3 копий набора пакетов, который вы хотите
разделить.</para>
<para>В этом каталоге находятся следующие скрипты:</para>
<variablelist>
<varlistentry>
<term><filename>config</filename></term>
<listitem>
<para>В этом файле находится свободное пространство на каждом диске и
то, разрешено ли на этих дисках размещать пакеты, дистрибутивные
файлы или оба типа файлов одновременно. Первая колонка содержит
название диска. Оно должно быть в виде
<literal>disc[0-9a-z]</literal>. На данный момент настройка
выполнена на 10 дисков (4 для релиза и 6 для инструментального
набора). При этом подразумевается дополнительный диск под
названием <quote>scratch</quote>, куда помещаются остальные
дистрибутивные файлы и пакеты, если они больше никуда не
помещаются. Вторая колонка может быть 1 или 0, где 1 означает
возможность размещения на этом диске пакетов. Третья колонка
работает так же, но контролирует размещение на этом диске пакетов.
Последняя колонка отмечает количество байтов свободного
пространства на диске.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>doit.sh</filename></term>
<listitem>
<para>Это рабочая лошадка. Как только все файлы будут на своих
местах и всё будет полностью настроено, этот скрипт управляет
процессом разделения пакетов. Имейте в виду, что он
интерактивный, так что вам нужно присматривать за его работой.
Подробности о том, что делает скрипт, будут даны позже.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>checkdeps.pl</filename></term>
<listitem>
<para>Проверяет наличие всех зависимостей по файлу
<filename>INDEX</filename> и каталогу с пакетами.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>oneshot.pl</filename></term>
<listitem>
<para>Здесь происходит основное волшебство (я использую это слово с
некоторой натяжкой, так как большей частью всё решается в лоб).
Имея перечень требуемых пакетов для каждого диска и набор
пакетов/дистрибутивных файлов, этот скрипт размещает пакеты или
дистрибутивные файлы по дискам вместе со всеми их
зависимостями.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>print-cdrom-packages.sh</filename></term>
<listitem>
<para>Этот файл является копией
<filename>src/release/scripts/print-cdrom-packages.sh</filename> из
релиза, над которым вы работаете.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>scrubindex.pl</filename></term>
<listitem>
<para>Этот скрипт удаляет строки из файла <filename>INDEX</filename>
для отсутствующих пакетов. Он также удаляет зависимости
&xfree86;. ЗАМЕЧАНИЕ: вам нужно изменить значение переменной
<varname>xdep</varname>, чтобы обеспечить правильность номера
версии.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>setup.sh</filename></term>
<listitem>
<para>Это вспомогательный скрипт, используемый мною в кластере сборки пакетов
для получения копии дерева портов и соответствующего набора
пакетов/дистрибутивных файлов.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Вот контрольный список того, что вам нужно будет проверить или
настроить перед тем, как продолжить.</para>
<orderedlist>
<listitem>
<para>Отредактируйте <filename>config</filename>, отметив количество
имеющихся у вас дисков, их размеры и собираетесь ли вы размещать на
них пакеты, дистрибутивные файлы, оба типа файлов или ничего из
них.</para>
</listitem>
<listitem>
<para>Проверьте, что вы удалили каталог <varname>gen</varname>, который
мог остаться от предыдущих работ. Этот каталог содержит рабочие
файлы, которые будут актуальны только для текущих действий.</para>
</listitem>
<listitem>
<para>При первом вашем прогоне лучше всего избежать копирования
пакетов и дистрибутивных файлов. Это сохранит как время, так и
дисковое пространство, пока вы сможете проделать пару пробных
запусков, чтобы удостовериться в том, что всё помещается, и так
далее. В файле <filename>oneshot.pl</filename> задайте переменную
<varname>fake</varname> в значение 1 и вместо реального копирования
файлов он будет только выполнять над ними команду &man.touch.1;.
Обязательно выключите эту возможность или установите переменную
<varname>fake</varname> в значение 0 перед тем, как передавать
получающиеся диски тому, кто будет тиражировать диски, в противном
случае каталоги будут заполнены файлами с нулевыми размерами.</para>
</listitem>
<listitem>
<para>Убедитесь, что у вас есть последняя копия файла
<filename>print-cdrom-packages.sh</filename>, и он взят из
соответствующего релиза.</para>
</listitem>
<listitem>
<para>Проверьте, что зависимость &xfree86; в файле
<filename>scrubindex.pl</filename> имеет корректный номер версии.
Вам также нужно будет проверять, что это значение правильно задано в
файле <filename>doit.sh</filename>.</para>
</listitem>
</orderedlist>
<para>Теперь вам нужно сделать копию дерева портов, пакетов и
дистрибутивных файлов из последнего построения кластера пакетов.
Посмотрите файл <filename>setup.sh</filename> в качестве рабочего
примера, но здесь описано всё необходимое.</para>
<orderedlist>
<listitem>
<para>Возьмите копию <filename>ports.tar.gz</filename> и распакуйте
её в каталог <filename>ports</filename> отдельно от файла
<filename>doit.sh</filename> и каталога
<filename>scripts</filename>.</para>
</listitem>
<listitem>
<para>Удалите каталог packages/distfiles или символические ссылки на
него. В bento имеются эти символические ссылки и вы будете получать
смешанные результаты, если не избавитесь от них перед
обработкой.</para>
</listitem>
<listitem>
<para>Создайте новый каталог ports/packages и скопируйте набор пакетов
из кластера построения пакетов.</para>
</listitem>
<listitem>
<para>Создайте новый каталог ports/distfiles и скопируйте
дистрибутивные файлы из кластера построения пакетов. ЗАМЕЧАНИЕ:
если вы не хотите копировать дистрибутивные файлы, просто создайте
каталог и оставьте его пустым. Этот каталог должен существовать,
даже если в нём ничего нет.</para>
</listitem>
</orderedlist>
<para>Теперь мы окончательно готовы к весёлому занятию по реальному
разделению пакетов. Запускайте обработку командой
<command>./doit.sh</command>. Вот что она делает при первом её
запуске.</para>
<orderedlist>
<listitem>
<para>Создаёт список ограниченных к распространению (которые не могут
находиться на главном FTP-сервере) портов.</para>
</listitem>
<listitem>
<para>Запросит у вас, нужно ли удаление ограниченных к распространению
портов. В большинстве случаев здесь вам лучше ответить (y)es.</para>
</listitem>
<listitem>
<para>Создаёт перечень пакетов/дистрибутивных файлов, которые не могут
быть размещены на дисках.</para>
</listitem>
<listitem>
<para>Запросит у вас разрешение на удаление пакетов/дистрибутивных
файлов, которые не размещаются на компакт-диск. В большинстве
случаев здесь лучше ответить (y)es.</para>
</listitem>
<listitem>
<para>Копирует файл <filename>INDEX</filename> из каталога
<filename>ports</filename> в каталог <filename>gen</filename>. При
этом она удаляет строчки портов, для которых нет пакетов. Также
проверяется наличие всех требуемых зависимых пакетов.</para>
</listitem>
<listitem>
<para>Создаёт список пакетов, требуемых для размещения на каждом
диске.</para>
</listitem>
<listitem>
<para>Делает запрос на создание дисков. После генерации каждого диска
она проверяет отсутствующие зависимости, вычищает файл
<filename>INDEX</filename> и создаёт файл
<filename>CHECKSUM.MD5</filename>.</para>
</listitem>
<listitem>
<para>Выполняет проверку того, что на каждом диске размещены требуемые
пакеты и выдаёт общую статистику по размерам каждого диска.</para>
</listitem>
</orderedlist>
<para>Если вам повезёт с первого раза, то все требуемые пакеты будут
построены и размещены по дискам. Всё, что вам нужно сделать, это
задать в качестве значения переменной <varname>fake</varname> в 0 в файле
<filename>oneshot.pl</filename> и перезапустить
<command>./doit.sh</command>. При втором и последующем запусках шаги
1-5 выше будут пропускаться. Если вы хотите выполнить любые из тех шагов
повторно, обратитесь к <filename>doit.sh</filename>, чтобы выяснить,
какие файлы необходимо удалить для того, чтобы не пропустить эти этапы.
Если вы хотите повторить все эти шаги, то проще всего выполнить
<command>rm -rf gen</command>.</para>
<para>К моменту успешного завершения пакеты и дистрибутивные файлы будут
располагаться в каталогах <filename>disc*</filename>, а оставшиеся файлы
будут находиться в каталоге <filename>scratch</filename>.</para>
<para>Что делать, если что-то происходит не так? Вот некоторые
распространённые проблем и их решения.</para>
<variablelist>
<varlistentry>
<term>Отсутствие требуемых пакетов</term>
<listitem>
<para>Такое часто случается. Вам нужно подождать появления нового
набора пакетов, где будут построены отсутствующие пакеты, либо
попросить кого-нибудь перезапустить построение пакетов для вас.
<emphasis>Не пытайтесь</emphasis> строить отсутствующие пакеты
на собственной машине и добавлять их. Хотя вам может удастся
обойтись этим, если вы очень осторожны, все же в большинстве
случаев вы, скорее всего, пропустите какую-то маленькую деталь и
простой процесс добавления одного пакета может привести к
неожиданной неработоспособности сотен остальных.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Требуемые пакеты не помещаются</term>
<listitem>
<para>Такое тоже случается, и это относительно легко исправить.
Просто отредактируйте файл
<filename>print-cdrom-packages.sh</filename>, перенося пакеты,
пока они не станут помещаться. Да, это итерационный процесс, и
это одна из причин, по которой вы должны включать
<varname>fake</varname> в <filename>oneshot.pl</filename>, пока не
получите то, что хотите. Перезапустите
<command>./doit.sh</command> после того, как внесли свои
изменения.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Требуемые пакеты располагаются не на том (или ни на каком)
диске</term>
<listitem>
<para>Обычно это означает, что вы не добавили их в файл
<filename>print-cdrom-packages.sh</filename> или разместили их не
на том диске. Этот скрипт является святым источником, по которому
в целом определяется, где должен находиться пакет. Если вы хотите
обеспечить расположение пакета на определённом диске, то это
единственное место, гарантирующее требуемое вам
расположение.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Если вы окончательно запутались, и не можете понять, почему всё
работает неправильно и как это исправить, то пошлите письмо в адрес
&a.steve.email; с просьбой о помощи.</para>
</sect1>
</article>

View file

@ -1,17 +0,0 @@
/*
* Netscape 4 does not recognice the @import directive of CSS, so we
* can't add an additional stylesheet layer on top of the default one.
* Instead, we use this hack to copy this file to the end of
* docbook.css.
*
* $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/releng-packages/extra.css,v 1.1 2004/02/25 22:24:56 phantom Exp $
* $FreeBSD$
*/
/* @import "docbook.css"; */
/* Customization that looks good for this particular article. */
DIV.TITLEPAGE {
text-align: center;
}

View file

@ -104,7 +104,6 @@
<!ENTITY url.articles.releng "&url.doc.langbase;/articles/releng">
<!ENTITY url.articles.releng.en "&url.doc.langbase.en;/articles/releng">
<!ENTITY url.articles.releng-packages "&url.doc.langbase;/articles/releng-packages">
<!ENTITY url.articles.releng-packages.en "&url.doc.langbase.en;/articles/releng-packages">
<!ENTITY url.articles.remote-install "&url.doc.langbase;/articles/remote-install">
<!ENTITY url.articles.remote-install.en "&url.doc.langbase.en;/articles/remote-install">
<!ENTITY url.articles.serial-uart "&url.doc.langbase;/articles/serial-uart">