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:
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
fr_FR.ISO8859-1/articles
ja_JP.eucJP/articles
ru_RU.KOI8-R/articles
share/xml
|
@ -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"
|
||||
|
|
|
@ -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"
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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"
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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/>
|
||||
|
|
|
@ -21,7 +21,6 @@ SUBDIR+= new-users
|
|||
SUBDIR+= pam
|
||||
SUBDIR+= pr-guidelines
|
||||
SUBDIR+= problem-reports
|
||||
SUBDIR+= releng-packages
|
||||
|
||||
ROOT_SYMLINKS+= new-users
|
||||
|
||||
|
|
|
@ -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"
|
|
@ -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 “Ports Cluster” (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 à
|
||||
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 “grappe de machines” 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 “grappe de machines pour les logiciels
|
||||
portés” destinée à 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 “corner of Exodus” à Santa Clara en
|
||||
Californie.</para>
|
||||
|
||||
<para>La “grappe de machines pour les logiciels
|
||||
portés” destinée à 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 “bouquets” 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> à 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 à 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 “trousse à outils”). Il existe
|
||||
un disque supplémentaire appelé
|
||||
“scratch” où résident
|
||||
les sources/logiciels pré-compilés restants s'ils
|
||||
ne peuvent trouver place ailleurs. La deuxième colonne
|
||||
peut être à 1 ou à 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 à
|
||||
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 “grappe de machines” 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 à 1 et au lieu de vraiment copier les fichiers, elle
|
||||
créera des fichiers vides à l'aide de la commande
|
||||
&man.touch.1;. Soyez sûr de désactiver cela en
|
||||
positionnant fake à 0 avant de confier
|
||||
les disques résultants à la personne chargée
|
||||
de la “mastérisation”, 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 à
|
||||
partir d'une récente compilation sur la “grappe de
|
||||
machines” destinée à 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à dans le répertoire des logiciels
|
||||
portés à 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 “grappe de
|
||||
machines” 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 “grappe de
|
||||
machines” 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 à 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 à diffusion restreinte. La plupart
|
||||
du temps vous voudrez répondre “(y)es”
|
||||
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
|
||||
“(y)es” 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 à 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 à 5 seront passées. Si vous
|
||||
voulez effectuer à nouveau une de ces étapes,
|
||||
référez-vous à 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 à corriger. Editez simplement
|
||||
print-cdrom-packages.sh pour déplacer les logiciels
|
||||
pré-compilés jusqu'à qu'ils trouvent
|
||||
place. C'est bien, en
|
||||
effet, un processus à répéter plusieurs fois
|
||||
et c'est une des raisons pourquoi vous devriez activer fake dans
|
||||
<filename>scripts/oneshot.pl</filename> jusqu'à 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 à 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 à comprendre pourquoi les choses sont
|
||||
cassées ou que vous ne savez pas comment les corriger alors
|
||||
envoyez un courrier électronique à &a.steve; pour
|
||||
demander de l'aide.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
</article>
|
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
|
@ -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">
|
||||
|
|
Loading…
Reference in a new issue