---
title: "Κεφάλαιο 5. Εγκατάσταση Εφαρμογών: Πακέτα και Ports"
part: Μέρος I. Ξεκινώντας με το FreeBSD
prev: books/handbook/basics
next: books/handbook/x11
showBookMenu: true
weight: 7
params:
  path: "/books/handbook/ports/"
---

[[ports]]
= Εγκατάσταση Εφαρμογών: Πακέτα και Ports
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 5
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/ports/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[ports-synopsis]]
== Σύνοψη

Το FreeBSD συνοδεύεται από μία πλούσια συλλογή από προγράμματα σαν μέρος του βασικού συστήματος. Όμως, λίγα μπορεί να κάνει κάποιος πριν βρεθεί στην ανάγκη να εγκαταστήσει μια πρόσθετη εφαρμογή για να υλοποιήσει μια πραγματική εργασία. Το FreeBSD παρέχει δυο συμπληρωματικές τεχνολογίες για να εγκαταστήσετε πρόσθετες εφαρμογές στο σύστημα σας: τη Συλλογή των Ports (Ports Collection, για εγκατάσταση από τον πηγαίο κώδικα), και τα πακέτα (packages, για εγκατάσταση από προ-μεταγλωττισμένα εκτελέσιμα πακέτα). Κάθε μία από τις δυο μεθόδους μπορεί να χρησιμοποιηθεί για να εγκαταστήσετε τις νεότερες εκδόσεις από τις αγαπημένες σας εφαρμογές, από τοπικά αποθηκευτικά μέσα ή απευθείας από το δίκτυο.

Αφού διαβάσετε αυτό το κεφάλαιο, θα ξέρετε:

* Πως να εγκαθιστάτε προ-μεταγλωττισμένα πακέτα λογισμικού.
* Πως να μεταγλωττίζετε πρόσθετο λογισμικό από τον πηγαίο κώδικα χρησιμοποιώντας την Συλλογή των Ports.
* Πως να κάνετε απεγκατάσταση εγκαταστημένων πακέτων ή ports.
* Πως να αλλάζετε τις προκαθορισμένες ρυθμίσεις που χρησιμοποιεί η Συλλογή των Ports.
* Πως να βρίσκετε τα κατάλληλα πακέτα λογισμικού.
* Πως να αναβαθμίζετε τις εφαρμογές σας.

[[ports-overview]]
== Επισκόπησή της εγκατάστασης λογισμικού

Αν έχετε χρησιμοποιήσει ένα UNIX(R) σύστημα στο παρελθόν, θα γνωρίζετε ότι η συνηθισμένη διαδικασία για την εγκατάσταση πρόσθετου λογισμικού είναι περίπου η παρακάτω:

[.procedure]
. "Κατέβασμα" του λογισμικού, που μπορεί να διανέμεται σε μορφή πηγαίου κώδικα, ή σαν εκτελέσιμο.
. Αποσυμπίεση του λογισμικού από την μορφή της διανομής του (συνήθως ένα tarball συμπιεσμένο με το man:compress[1], man:gzip[1], ή man:bzip2[1]).
. Εντοπισμός της τεκμηρίωσης (πιθανώς ένα αρχείο [.filename]#INSTALL# ή [.filename]#README# ή μερικά αρχεία μέσα σε ένα υποκατάλογο [.filename]#doc/#) και ανάγνωσή τους για το πως θα εγκατασταθεί το λογισμικό.
. Αν το λογισμικό διανέμεται με τη μορφή πηγαίου κώδικα, μεταγλώττιση του. Αυτό μπορεί να περιλαμβάνει την επεξεργασία ενός [.filename]#Makefile#, ή την εκτέλεση ενός `configure` script, και άλλες εργασίες.
. Δοκιμή και εγκατάσταση του λογισμικού.

Και αυτά μόνο αν όλα πάνε καλά. Αν εγκαθιστάτε ένα λογισμικό που δεν έχει μεταφερθεί στο FreeBSD ίσως να πρέπει να τροποποιήσετε τον πηγαίο κώδικα για να δουλέψει σωστά.

Αν το θέλετε, μπορείτε να συνεχίσετε να εγκαθιστάτε λογισμικό με τον "παραδοσιακό" τρόπο στο FreeBSD. Όμως, το FreeBSD παρέχει δυο τεχνολογίες που μπορούν να σας γλιτώσουν από πολύ κόπο: τα πακέτα και τα ports. Την στιγμή που γράφτηκε αυτό το κείμενο, διατίθονταν με αυτόν τον τρόπο πάνω από {numports} πρόσθετες εφαρμογές.

Για οποιαδήποτε εφαρμογή, το αντίστοιχο FreeBSD πακέτο της είναι ένα μοναδικό αρχείο που πρέπει εσείς να "κατεβάσετε". Το πακέτο περιέχει προ-μεταγλωττισμένα αντίγραφα από όλες τις εντολές της εφαρμογής, όπως επίσης και αρχεία παραμετροποίησης ή τεκμηρίωσης. Ένα τέτοιο πακέτο σε μορφή αρχείου, μπορείτε να το χειριστείτε με τις εντολές διαχείρισής πακέτων του FreeBSD, όπως οι man:pkg_add[1], man:pkg_delete[1], man:pkg_info[1], και πάει λέγοντας. Η εγκατάσταση μιας νέας εφαρμογής μπορεί να γίνει με μία μόνο εντολή.

Ένα FreeBSD port για μία εφαρμογή είναι μια συλλογή από αρχεία σχεδιασμένα για να αυτοματοποιήσουν την διαδικασία μεταγλώττισης της εφαρμογής από τον πηγαίο κώδικα.

Θυμηθείτε ότι υπάρχουν μερικά βήματα που θα πρέπει λογικά να κάνετε αν μεταγλωττίσετε ένα πρόγραμμα μόνος σας ("κατέβασμα", αποσυμπίεση, προσαρμογή (patching), μεταγλώττιση, εγκατάσταση). Τα αρχεία που αποτελούν ένα port περιέχουν όλες τις απαραίτητες πληροφορίες για να επιτρέψουν στο σύστημα να κάνει όλα αυτά για εσάς. Εσείς εκτελείτε μερικές απλές εντολές, και ο πηγαίος κώδικας για την εφαρμογή αυτόματα "κατεβαίνει", αποσυμπιέζεται, προσαρμόζεται, μεταγλωττίζεται, και εγκαθίσταται για εσάς.

Στην πραγματικότητα, το σύστημα ports μπορεί επίσης να χρησιμοποιηθεί για να δημιουργηθούν πακέτα που μπορείτε αργότερα να διαχειριστείτε με την `pkg_add` και τις άλλες εντολές διαχείρισής πακέτων που θα αναφερθούν σε λίγο.

Τόσο τα πακέτα, όσο και τα ports κατανοούν τις _εξαρτήσεις (dependencies)_. Ας υποθέσουμε ότι θέλετε να εγκαταστήσετε μία εφαρμογή που εξαρτάται από μία συγκεκριμένη βιβλιοθήκη για να λειτουργήσει. Τόσο η εφαρμογή, όσο και η βιβλιοθήκη διατίθενται ως πακέτα και ports του FreeBSD. Αν χρησιμοποιήσετε την εντολή `pkg_add` ή το σύστημα των ports για να εγκαταστήσετε την εφαρμογή, αμφότερα θα παρατηρήσουν ότι η βιβλιοθήκη δεν είναι εγκατεστημένη, και αυτόματα θα την εγκαταστήσουν πριν από το πρόγραμμα.

Έχοντας αναφέρει ότι οι δύο τεχνολογίες είναι αρκετά όμοιες, ίσως να αναρωτιέστε γιατί το FreeBSD προσφέρει και τις δύο. Τα πακέτα και τα ports αμφότερα έχουν τα δικά τους πλεονεκτήματα, και το τι θα χρησιμοποιήσετε εξαρτάται από την δική σας προτίμηση.

.Πλεονεκτήματα των Πακέτων
* Ένα συμπιεσμένο tarball πακέτου είναι συνήθως μικρότερο από το συμπιεσμένο tarball που περιέχει τον πηγαίο κώδικα για την εφαρμογή.
* Τα πακέτα δεν χρειάζονται μεταγλώττιση. Για μεγάλες εφαρμογές, όπως είναι ο Mozilla, το KDE, ή το GNOME αυτό μπορεί να είναι σημαντικό, ιδιαίτερα αν βρίσκεστε σε ένα αργό μηχάνημα.
* Τα πακέτα δεν απαιτούν να κατανοήσετε την διαδικασία που σχετίζεται με την μεταγλώττιση λογισμικού στο FreeBSD.

.Πλεονεκτήματα των Ports
* Τα πακέτα συνήθως είναι μεταγλωττισμένα με συντηρητικές επιλογές, επειδή πρέπει να λειτουργούν στον μέγιστο αριθμό συστημάτων. Με εγκατάσταση από το port, μπορείτε να ρυθμίσετε τις επιλογές μεταγλώττισης (για παράδειγμα) να δημιουργήσουν εκτελέσιμο κώδικα που να εκμεταλλεύεται τις ικανότητες ενός Pentium 4 ή Athlon επεξεργαστή.
* Μερικές εφαρμογές έχουν επιλογές μεταγλώττισης που σχετίζονται με το τι μπορούν να κάνουν και τι όχι. Για παράδειγμα, ο Apache μπορεί να μεταγλωττιστεί με ένα ευρύ φάσμα από επιλογές. Μεταγλωττίζοντας τον από το port, δεν είναι ανάγκη να δεχτείτε τις προεπιλεγμένες επιλογές, μπορείτε να κάνετε τις δικές σας.
+ 
Σε μερικές περιπτώσεις, μπορεί να υπάρχουν πολλαπλά πακέτα για την ίδια εφαρμογή, με διαφορετικές ρυθμίσεις. Για παράδειγμα, το Ghostscript διατίθεται ως ένα πακέτο [.filename]#ghostscript# και ένα πακέτο [.filename]#ghostscript-nox11#, αναλόγως αν θα εγκαταστήσετε ή όχι έναν X11 server. Αυτού του τύπου οι ρυθμίσεις είναι δυνατές με τα πακέτα, αλλά γρήγορα γίνονται αδύνατες αν μία εφαρμογή έχει περισσότερες από μία ή δύο διαφορετικές ρυθμίσεις μεταγλώττισης.
* Οι συνθήκες των αδειών διανομής από μερικές διανομές λογισμικού, απαγορεύουν την διανομή εκτελέσιμου κώδικα. Πρέπει να διανεμηθούν με την μορφή πηγαίου κώδικα.
* Μερικά άτομα δεν εμπιστεύονται τα έτοιμα εκτελέσιμα. Τουλάχιστον με τον πηγαίο κώδικα, μπορείτε (θεωρητικά) να τον διαβάσετε και να ψάξετε για πιθανά προβλήματα μόνος σας.
* Αν έχετε τοπικά, δικά σας patches, θα χρειαστείτε τον πηγαίο κώδικα για να τα εφαρμόσετε.
* Μερικά άτομα γουστάρουν να έχουν τον πηγαίο κώδικα, ώστε να τον διαβάσουν αν βαρεθούνε, να τον αλλάξουν (hack), να δανειστούν από αυτόν (αν βέβαια το επιτρέπει η άδεια), κ.λ.π.

Για να είστε ενήμερος για τα ανανεωμένα ports, εγγραφείτε στην {freebsd-ports} και στην {freebsd-ports-bugs}.

[WARNING]
====

Πριν εγκαταστήσετε οποιοδήποτε εφαρμογή, πρέπει να ελέγχετε το http://vuxml.freebsd.org/[http://vuxml.freebsd.org/] για θέματα ασφαλείας που σχετίζονται με την εφαρμογή σας.

Μπορείτε επίσης να εγκαταστήσετε το package:ports-mgmt/portaudit[] το οποίο αυτόματα θα ελέγχει όλες τις εγκαταστημένες εφαρμογές για γνωστά τρωτά σημεία. Έλεγχος επίσης θα πραγματοποιείται πριν τη μεταγλώττιση οποιουδήποτε port. Στο ενδιάμεσο, μπορείτε να χρησιμοποιείτε την εντολή `portaudit -F -a` αφότου έχετε πρώτα εγκαταστήσει μερικά πακέτα.
====

Το υπόλοιπο αυτού του κεφαλαίου εξηγεί πως να χρησιμοποιήσετε τα πακέτα και τα ports για να εγκαταστήσετε και να διαχειριστείτε πρόσθετο λογισμικό στο FreeBSD.

[[ports-finding-applications]]
== Βρίσκοντας την Εφαρμογή σας

Πριν εγκαταστήσετε οποιαδήποτε εφαρμογή πρέπει να γνωρίζετε τι θέλετε να κάνει, και πως ονομάζεται η εφαρμογή.

Η λίστα των διαθέσιμων εφαρμογών στο FreeBSD μεγαλώνει συνεχώς. Ευτυχώς, υπάρχουν πολλοί τρόποι να βρείτε αυτό που θέλετε:

* Στη δικτυακή τοποθεσία του FreeBSD θα βρείτε μια λίστα από όλες τις διαθέσιμες εφαρμογές, στο link:https://www.FreeBSD.org/ports/[http://www.FreeBSD.org/ports/]. Η λίστα αυτή ανανεώνεται συχνά, ενώ υπάρχει και δυνατότητα αναζήτησης. Τα ports είναι χωρισμένα σε κατηγορίες, και μπορείτε να αναζητήσετε μία εφαρμογή είτε με το όνομα (αν το ξέρετε), ή να δείτε όλες τις εφαρμογές που είναι διαθέσιμες σε μια κατηγορία.
*
+ 
Ο Dan Langille διατηρεί το FreshPorts, στο http://www.FreshPorts.org/[http://www.FreshPorts.org/]. Το FreshPorts καταγράφει τις αλλαγές των εφαρμογών στο δέντρο των ports καθώς συμβαίνουν, επιτρέποντάς σας να "παρακολουθείτε" ένα ή περισσότερα ports, και μπορεί να σας στείλει email όταν αυτά ανανεώνονται.
*
+ 
Αν δεν γνωρίζετε το όνομα της εφαρμογής που θέλετε, δοκιμάστε να χρησιμοποιήσετε ένα site σαν το Freecode(http://www.freecode.com/[http://www.freecode.com/]) για να βρείτε μία εφαρμογή, και μετά μπορείτε να ελέγξετε ξανά το site του FreeBSD για να δείτε αν η εφαρμογή έχει γίνει port.
* Αν ξέρετε το ακριβές όνομα του port, και θέλετε μόνο να βρείτε σε ποια κατηγορία είναι, μπορείτε να χρησιμοποιήσετε την εντολή man:whereis[1]. Απλά γράψτε `whereis αρχείο`, όπου _αρχείο_ είναι το πρόγραμμα που θέλετε να εγκαταστήσετε. Αν αυτό βρίσκεται στο σύστημα σας, η εντολή θα σας πει που είναι, όπως παρακάτω:
+
[source,shell]
....
# whereis lsof
lsof: /usr/ports/sysutils/lsof
....
+ 
Αυτό μας λέει ότι το `lsof` (ένα εργαλείο συστήματος) μπορεί να βρεθεί στον κατάλογο [.filename]#/usr/ports/sysutils/lsof#.
* Επιπρόσθετα, μπορείτε να χρησιμοποιήσετε μια απλή εντολή man:echo[1] για να εντοπίσετε την τοποθεσία κάποιου προγράμματος μέσα στα ports. Για παράδειγμα:
+
[source,shell]
....
# echo /usr/ports/*/*lsof*
/usr/ports/sysutils/lsof
....
+ 
Σημειώστε ότι το παραπάνω θα δείξει επίσης και οποιαδήποτε αρχεία έχουν κατέβει στον κατάλογο [.filename]#/usr/ports/distfiles# εφόσον ταιριάζουν στην αναζήτηση.
* Ακόμη ένας τρόπος να βρείτε ένα συγκεκριμένο port, είναι χρησιμοποιώντας τον εσωτερικό μηχανισμό αναζήτησης της Συλλογής των Ports. Γα να χρησιμοποιήσετε αυτό τον τρόπο αναζήτησης, Θα χρειαστεί να βρίσκεστε στον κατάλογο [.filename]#/usr/ports#. Όταν βρεθείτε σε αυτόν τον κατάλογο, εκτελέστε το `make search name=όνομα--προγράμματος` όπου _όνομα--προγράμματος_ είναι το όνομα του προγράμματος που θέλετε να βρείτε. Για παράδειγμα, αν αναζητάτε το `lsof`:
+
[source,shell]
....
# cd /usr/ports
# make search name=lsof
Port:   lsof-4.56.4
Path:   /usr/ports/sysutils/lsof
Info:   Lists information about open files (similar to fstat(1))
Maint:  obrien@FreeBSD.org
Index:  sysutils
B-deps:
R-deps: 
....
+ 
Το τμήμα της εξόδου που πρέπει να προσέξετε ιδιαίτερα είναι η γραμμή "Path:", αφού αυτή σας λέει που να βρείτε το port. Οι υπόλοιπες πληροφορίες που παρέχονται δεν χρειάζονται για να εγκατασταθεί το port, για αυτό δεν θα αναλυθούν εδώ.
+ 
Για πιο λεπτομερή αναζήτηση μπορείτε να χρησιμοποιήσετε επίσης `make search key=φράση` όπου _φράση_ είναι κάποιο κείμενο προς αναζήτηση. Αυτό αναζητά ονόματα port, σχόλια, περιγραφές και εξαρτήσεις, και μπορεί να χρησιμοποιηθεί για να βρεθούν ports που σχετίζονται με ένα συγκεκριμένο θέμα, εάν δεν γνωρίζετε το όνομα του προγράμματος που αναζητάτε.
+ 
Σε όλες τις παραπάνω περιπτώσεις, η φράση προς αναζήτηση είναι case-insensitive (δεν λαμβάνει υπόψη τις διαφορές κεφαλαίων-μικρών). Η αναζήτηση για το "LSOF", θα δώσει τα ίδια αποτελέσματα με την αναζήτηση για το "lsof".

[[packages-using]]
== Χρησιμοποιώντας το Σύστημα των Πακέτων

Υπάρχουν διάφορα εργαλεία με τα οποία μπορείτε να διαχειριστείτε τα πακέτα στο FreeBSD:

* Σε ένα σύστημα που βρίσκεται ήδη σε λειτουργία, μπορείτε να εκτελέσετε το sysinstall για να εγκαταστήσετε, να διαγράψετε, και να δείτε τις εγκατεστημένες και τις διαθέσιμες εφαρμογές. Για περισσότερες πληροφορίες, δείτε το crossref:install[packages,"Εγκατάσταση Πακέτων"].
* Τα διάφορα εργαλεία διαχείρισης μέσω της γραμμής εντολών, που αποτελούν και το αντικείμενο συζήτησης αυτής της ενότητας.

=== Εγκαθιστώντας ένα Πακέτο

Μπορείτε να χρησιμοποιήσετε το εργαλείο man:pkg_add[1] για να εγκαταστήσετε ένα πακέτο λογισμικού του FreeBSD από ένα τοπικά αποθηκευμένο αρχείο ή από έναν διακομιστή στο δίκτυο.

."Κατέβασμα" ενός πακέτου χειροκίνητα και εγκατάσταση του τοπικά
[example]
====

[source,shell]
....
# ftp -a ftp2.FreeBSD.org
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230-     This machine is in Vienna, VA, USA, hosted by Verio.
230-         Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp> get lsof-4.56.4.tgz
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375       00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp> exit
# pkg_add lsof-4.56.4.tgz
....

====

Εάν δεν έχετε μία τοπική πηγή πακέτων (όπως είναι ένα FreeBSD CD-ROM set) τότε ίσως είναι ευκολότερο να χρησιμοποιήσετε την επιλογή `-r` για το man:pkg_add[1]. Αυτή θα κάνει το εργαλείο να καθορίσει αυτόματα τη σωστή μορφή και έκδοση και έπειτα να ανακτήσει και να εγκαταστήσει το πακέτο από ένα FTP site.

[source,shell]
....
# pkg_add -r lsof
....

Το παραπάνω παράδειγμα θα "κατεβάσει" και θα εγκαταστήσει το σωστό πακέτο χωρίς περαιτέρω επέμβαση του χρήστη. Αν δεν θέλετε να χρησιμοποιήσετε το κύριο site διανομής πακέτων, μπορείτε να χρησιμοποιήσετε κάποιο mirror. Για το σκοπό αυτό, θα πρέπει να ρυθμίσετε σωστά την τιμή της `PACKAGESITE`, ώστε να παρακάμψετε τις προεπιλεγμένες ρυθμίσεις. Το man:pkg_add[1] χρησιμοποιεί το man:fetch[3] για να "κατεβάσει" τα αρχεία, και αυτό με τη σειρά του χρησιμοποιεί διάφορες μεταβλητές περιβάλλοντος, περιλαμβανομένων των `FTP_PASSIVE_MODE`, `FTP_PROXY`, και `FTP_PASSWORD`. Ίσως χρειαστεί να ρυθμίσετε μία ή περισσότερες από αυτές αν βρίσκεστε πίσω από ένα firewall, ή ίσως να χρειαστεί να χρησιμοποιήσετε έναν FTP/HTTP proxy. Δείτε το man:fetch[3] για την πλήρη λίστα των μεταβλητών. Προσέξτε ότι στο παραπάνω παράδειγμα χρησιμοποιείται το `lsof` αντί του `lsof-4.56.4`. Όταν γίνεται απομακρυσμένη λήψη, πρέπει να αφαιρεθεί ο αριθμός έκδοσης του πακέτου. Το man:pkg_add[1] θα "κατεβάσει" αυτόματα την τελευταία έκδοση της εφαρμογής.

[NOTE]
====
Το man:pkg_add[1] θα "κατεβάσει" την τελευταία έκδοση της εφαρμογής αν χρησιμοποιείτε FreeBSD-CURRENT ή FreeBSD-STABLE. Αν τρέχετε μια -RELEASE έκδοση, θα "κατεβάσει" την έκδοση του πακέτου που έχει μεταγλωττιστεί με την έκδοση σας. Είναι δυνατό να το αλλάξετε αυτό, αλλάζοντας την `PACKAGESITE`. Για παράδειγμα, αν τρέχετε ένα σύστημα FreeBSD 8.1-RELEASE, το man:pkg_add[1], από προεπιλογή, θα προσπαθήσει να "κατεβάσει" πακέτα από το `ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/`. Αν θέλετε να αναγκάσετε το man:pkg_add[1] να "κατεβάσει" πακέτα του FreeBSD 8-STABLE, θέστε την `PACKAGESITE` ως `ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/`.
====

Τα αρχεία των πακέτων διανέμονται σε μορφές [.filename]#.tgz# και [.filename]#.tbz#. Μπορείτε να τα βρείτε στο link:ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/[ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/], ή στα CD-ROM της διανομής του FreeBSD. Κάθε CD στο FreeBSD 4-CD set (και στο PowerPak, κλπ.) περιέχει πακέτα στον κατάλογο [.filename]#/packages#. Η κατηγοριοποίηση των πακέτων ακολουθεί την δομή του δέντρου [.filename]#/usr/ports#. Κάθε κατηγορία έχει το δικό της κατάλογο, και κάθε πακέτο μπορεί να βρεθεί στον κατάλογο [.filename]#All#.

Η δομή των καταλόγων του συστήματος πακέτων ταιριάζει με την αντίστοιχη των ports. Τα δύο συστήματα συνεργάζονται μεταξύ τους για να δημιουργήσουν το συνολικό σύστημα πακέτων/ports.

=== Διαχείριση των Πακέτων

Το man:pkg_info[1] είναι ένα εργαλείο που παραθέτει και περιγράφει τα διάφορα πακέτα που είναι εγκαταστημένα.

[source,shell]
....
# pkg_info
cvsup-16.1          A general network file distribution system optimized for CV
docbook-1.2         Meta-port for the different versions of the DocBook DTD
...
....

Το man:pkg_version[1] είναι ένα εργαλείο που συνοψίζει τις εκδόσεις όλων των εγκαταστημένων πακέτων. Συγκρίνει την έκδοση κάθε πακέτου, με την τρέχουσα έκδοση που βρίσκεται στο δέντρο των ports.

[source,shell]
....
# pkg_version
cvsup                       =
docbook                     =
...
....

Τα σύμβολα στην δεύτερη στήλη δηλώνουν την σχετική ηλικία μεταξύ των εγκατεστημένων εκδόσεων και των εκδόσεων που είναι διαθέσιμες στο τοπικό δέντρο των ports.

[.informaltable]
[cols="20%,80%", frame="none", options="header"]
|===
| Σύμβολο
| Σημασία

|=
|Η έκδοση του εγκατεστημένου πακέτου ταιριάζει με αυτή που είναι διαθέσιμη στο τοπικό δέντρο των ports.

|<
|Η εγκατεστημένη έκδοση είναι παλαιότερη από αυτή που είναι διαθέσιμη στο δέντρο των ports.

|>
|Η εγκατεστημένη έκδοση είναι νεότερη από αυτή που είναι διαθέσιμη στο τοπικό δέντρο των ports. (Το τοπικό δέντρο των ports είναι πιθανότατα απαρχαιωμένο.)

|?
|Το εγκατεστημένο πακέτο δεν βρίσκεται στα περιεχόμενα των ports. (Αυτό μπορεί να συμβεί, για παράδειγμα, αν ένα εγκατεστημένο port έχει αφαιρεθεί από την Συλλογή των Ports, ή έχει μετονομαστεί.)

|*
|Υπάρχουν πολλαπλές εκδόσεις του πακέτου.

|!
|Το εγκατεστημένο πακέτο υπάρχει στο index, αλλά για κάποιο λόγο το `pkg_version` δεν κατάφερε να συγκρίνει την έκδοση του εγκατεστημένου πακέτου με την αντίστοιχη καταχώρηση στο index.
|===

=== Αφαιρώντας ένα Πακέτο

Για να αφαιρέσετε ένα εγκατεστημένο πακέτο λογισμικού, χρησιμοποιήστε το εργαλείο man:pkg_delete[1].

[source,shell]
....
# pkg_delete xchat-1.7.1
....

Σημειώστε ότι το man:pkg_delete[1] απαιτεί το πλήρες όνομα και αριθμό έκδοσης του πακέτου. Η παραπάνω εντολή δεν θα λειτουργήσει αν δώσετε απλώς _xchat_ αντί για _xchat-1.7.1_. Είναι ωστόσο εύκολο να χρησιμοποιήσετε την man:pkg_version[1] για να βρείτε την έκδοση του εγκατεστημένου πακέτου. Αντί για αυτό, μπορείτε επίσης να χρησιμοποιήσετε ένα μπαλαντέρ:

[source,shell]
....
# pkg_delete xchat\*
....

Στην περίπτωση αυτή, θα διαγραφούν όλα τα πακέτα που τα ονόματα τους αρχίζουν με `xchat`.

=== Διάφορα

Όλες οι πληροφορίες για τα πακέτα είναι αποθηκευμένες στον κατάλογο [.filename]#/var/db/pkg#. Στα αρχεία αυτού του καταλόγου, θα βρείτε τη περιγραφή κάθε πακέτου, καθώς και τη λίστα των αρχείων που εγκαθιστά.

[[ports-using]]
== Χρησιμοποιώντας την Συλλογή των Ports

Τα παρακάτω τμήματα δίνουν βασικές οδηγίες χρήσης της Συλλογής των Ports για εγκατάσταση ή διαγραφή προγραμμάτων στο σύστημα σας. Μπορείτε να βρείτε λεπτομερή περιγραφή των διαθέσιμων επιλογών του `make` και των μεταβλητών περιβάλλοντος στο man:ports[7].

[[ports-tree]]
=== Ανακτώντας την Συλλογή των Ports

Πριν μπορέσετε να εγκαταστήσετε προγράμματα μέσω των ports, πρέπει πρώτα να ανακτήσετε την Συλλογή των Ports. Πρόκειται ουσιαστικά για μια συλλογή από [.filename]#Makefiles#, patches, και αρχεία περιγραφής που τοποθετούνται στο [.filename]#/usr/ports#.

Όταν εγκαταστήσατε το FreeBSD σύστημα σας, το sysinstall σας ρώτησε αν θέλατε να εγκαταστήσετε την Συλλογή των Ports. Αν επιλέξατε όχι, μπορείτε να ακολουθήσετε αυτές τις οδηγίες για να ανακτήσετε την Συλλογή των Ports:

[.procedure]
====
*Procedure: Μέθοδος CVSup*

Αυτή είναι μια γρήγορη μέθοδος για να ανακτήσετε και να διατηρήσετε ένα ανανεωμένο αντίγραφο της Συλλογής των Ports, χρησιμοποιώντας το πρωτόκολλο CVSup. Αν θέλετε να μάθετε περισσότερα για το CVSup, δείτε το crossref:mirrors[cvsup-mirrors,Χρησιμοποιώντας το CVSup].
[NOTE]
****
Η υλοποίηση του CVSup που περιλαμβάνεται σε ένα σύστημα FreeBSD, ονομάζεται csup.
****

Σιγουρευθείτε ότι το [.filename]#/usr/ports# είναι άδειο πριν εκτελέσετε το csup για πρώτη φορά! Εάν έχετε ήδη ανακτήσει τη Συλλογή των Ports μέσω κάποιας άλλης πηγής, το csup δεν θα διαγράψει patches που έχουν αφαιρεθεί στο μεταξύ.

. Εκτελέστε το `csup`:
+
[source,shell]
....
# csup -L 2 -h cvsup.FreeBSD.org /usr/shared/examples/cvsup/ports-supfile
....
+ 
Αλλάξτε το _cvsup.FreeBSD.org_ με έναν κοντινό σας διακομιστή CVSup. Δείτε το crossref:mirrors[cvsup-mirrors,CVSup Mirrors] (crossref:mirrors[cvsup-mirrors,Τοποθεσίες CVSup]) για την πλήρη λίστα των mirror sites.
+
[NOTE]
======
Αν θέλετε, μπορείτε να χρησιμοποιήσετε το δικό σας [.filename]#ports-supfile#, ώστε να αποφύγετε (για παράδειγμα) να δηλώσετε τον διακομιστή CVSup στην γραμμή εντολών.

[.procedure]
****
.. Σε αυτή την περίπτωση, ως `root`, αντιγράψτε το [.filename]#/usr/shared/examples/cvsup/ports-supfile# σε μία νέα τοποθεσία, όπως το [.filename]#/root# ή τον δικό σας home κατάλογο.
.. Τροποποιήστε το [.filename]#ports-supfile#.
.. Αλλάξτε το _CHANGE_THIS.FreeBSD.org_ με έναν κοντινό σας διακομιστή CVSup.Δείτε το crossref:mirrors[cvsup-mirrors,CVSup Mirrors] (crossref:mirrors[cvsup-mirrors,Τοποθεσίες CVSup]) για την πλήρη λίστα των mirror sites.
.. Εκτελέστε τώρα το `csup`, με τον ακόλουθο τρόπο:
+
[source,shell]
....
# csup -L 2 /root/ports-supfile
....
****
======

. Εκτελώντας την εντολή man:csup[1] αργότερα, θα "κατεβάσει" και θα εφαρμόσει όλες τις πρόσφατες αλλαγές στην Συλλογή των Ports, εκτός από το να επανα-μεταγλωττίσει τα ports για το σύστημα σας.
====

[.procedure]
====
*Procedure: Μέθοδος Portsnap*

Το Portsnap είναι ένα εναλλακτικό σύστημα για την διανομή της Συλλογής των Ports. Παρακαλώ ελέγξτε το crossref:cutting-edge[updating-upgrading-portsnap,Χρησιμοποιώντας το Portsnap] για μία λεπτομερή περιγραφή όλων των χαρακτηριστικών της εφαρμογής.

. "Κατεβάστε" ένα συμπιεσμένο snapshot της Συλλογής των Ports [.filename]#/var/db/portsnap#. Αν θέλετε, μπορείτε να αποσυνδεθείτε από το Διαδίκτυο μετά από αυτό το βήμα.
+
[source,shell]
....
# portsnap fetch
....
. Αν εκτελείτε το Portsnap για πρώτη φορά, κάντε εξαγωγή του snapshot μέσα στο [.filename]#/usr/ports#:
+
[source,shell]
....
# portsnap extract
....
+ 
Εάν ήδη έχετε ένα γεμάτο [.filename]#/usr/ports# και απλώς το ανανεώνετε, εκτελέστε την ακόλουθη εντολή:
+
[source,shell]
....
# portsnap update
....
====

[.procedure]
====
*Procedure: Μέθοδος Sysinstall*

Αυτή η μέθοδος χρησιμοποιεί το sysinstall για την εγκατάσταση της Συλλογής των Ports από το μέσο εγκατάστασης. Σημειώστε ότι με αυτό τον τρόπο θα εγκαταστήσετε το παλαιό αντίγραφο της Συλλογής των Ports, που αντιστοιχεί στην ημερομηνία της έκδοσης του FreeBSD που χρησιμοποιείτε. Εάν έχετε πρόσβαση στο Διαδίκτυο, πρέπει πάντα να χρησιμοποιείτε μία από τις μεθόδους που αναφέρθηκαν πιο πάνω.

. Ως `root`, εκτελέστε το `sysinstall` όπως φαίνεται παρακάτω:
+
[source,shell]
....
# sysinstall
....

. Επιλέξτε το [.guimenuitem]#Configure#, και πιέστε kbd:[Enter].
. Επιλέξτε το [.guimenuitem]#Distributions#, και πιέστε kbd:[Enter].
. Μετακινηθείτε στο [.guimenuitem]#ports#, και πιέστε kbd:[Space].
. Μετακινηθείτε στο [.guimenuitem]#Exit#, και πιέστε kbd:[Enter].
. Επιλέξτε το μέσο εγκατάστασης της επιθυμίας σας, όπως CDROM, FTP, και πάει λέγοντας.
. Μετακινηθείτε στο [.guimenuitem]#Exit# και πιέστε kbd:[Enter].
. Πιέστε kbd:[X] για να βγείτε από το sysinstall.
====

[[ports-skeleton]]
=== Εγκαθιστώντας Ports

Το πρώτο πράγμα που πρέπει να διευκρινιστεί σχετικά με την Συλλογή των Ports είναι η έννοια του όρου "skeleton (σκελετός)". Με λίγα λόγια, ένα port skeleton είναι η ελάχιστη συλλογή αρχείων που καθοδηγούν ένα σύστημα FreeBSD ώστε να μεταγλωττίσει και να εγκαταστήσει σωστά ένα πρόγραμμα. Κάθε port skeleton περιέχει:

* Ένα [.filename]#Makefile#. Το [.filename]#Makefile# περιέχει διάφορες δηλώσεις που ορίζουν πως πρέπει να μεταγλωττιστεί η εφαρμογή και που πρέπει να εγκατασταθεί στο σύστημά σας.
* Ένα αρχείο [.filename]#distinfo#. Αυτό το αρχείο περιέχει πληροφορίες για τα αρχεία που πρέπει να "κατέβουν" για την μεταγλώττιση του port, και τα checksums τους (χρησιμοποιώντας το man:sha256[1]), για να επιβεβαιωθεί ότι τα αρχεία δεν έχουν αλλοιωθεί κατά την διάρκεια της μεταφοράς τους.
* Έναν κατάλογο [.filename]#files#. Αυτός ο κατάλογος περιέχει τα patches που επιτρέπουν στο πρόγραμμα να μεταγλωττιστεί και εγκατασταθεί στο FreeBSD σύστημα σας. Τα patches είναι μικρά αρχεία που ορίζουν αλλαγές σε συγκεκριμένα αρχεία. Είναι σε μορφή κοινού κειμένου, και βασικά λένε "Αφαίρεσε την γραμμή 10" ή "Μετέτρεψε τη γραμμή 26 σε αυτό ...". Τα patches είναι επίσης γνωστά ως "diffs" επειδή δημιουργούνται με το πρόγραμμα man:diff[1].
+ 
Αυτός ο κατάλογος μπορεί να περιέχει και άλλα αρχεία που χρησιμοποιούνται για να μεταγλωττιστεί το port.
* Ένα αρχείο [.filename]#pkg-descr#. Αυτό είναι μία πιο λεπτομερής, συχνά πολλών γραμμών, περιγραφή του προγράμματος.
* Ένα αρχείο [.filename]#pkg-plist#. Αυτό περιέχει μια λίστα όλων των αρχείων που θα εγκατασταθούν από το port. Επίσης καθοδηγεί το σύστημα των ports τι αρχεία να αφαιρέσει κατά την απεγκατάσταση.

Μερικά ports έχουν και άλλα αρχεία, όπως το [.filename]#pkg-message#. Το σύστημα των ports χρησιμοποιεί αυτά τα αρχεία για να χειριστεί ειδικές περιστάσεις. Αν θέλετε περισσότερες λεπτομέρειες για αυτά τα αρχεία, και τα ports γενικότερα, δείτε το extref:{porters-handbook}[FreeBSD Porter's Handbook].

Το port περιέχει οδηγίες για το πως να μεταγλωττιστεί ο πηγαίος κώδικας, αλλά δεν περιέχει τον πηγαίο κώδικα. Μπορείτε να προμηθευτείτε τον πηγαίο κώδικα από ένα CD-ROM ή από το Διαδίκτυο. Ο πηγαίος κώδικας διανέμεται με οποιοδήποτε τρόπο επιθυμεί ο δημιουργός του. Συχνά είναι ένα tarred και gzipped αρχείο, αλλά μπορεί να είναι συμπιεσμένος με κάποιο άλλο εργαλείο ή να είναι ακόμα και ασυμπίεστος. Ο πηγαίος κώδικας του προγράμματος, σε οποιαδήποτε μορφή κι αν διατίθεται, λέγεται "distfile". Οι δύο μέθοδοι για να εγκαταστήσετε ένα FreeBSD port περιγράφονται παρακάτω.

[NOTE]
====
Πρέπει να συνδεθείτε ως `root` για να εγκαταστήσετε ports.
====

[WARNING]
====

Πριν εγκαταστήσετε οποιαδήποτε port, πρέπει να σιγουρευτείτε ότι έχετε μία ανανεωμένη Συλλογή των Ports, και πρέπει να ελέγξετε το http://vuxml.freebsd.org/[http://vuxml.freebsd.org/] για θέματα ασφαλείας σχετικά με το port που ενδιαφέρεστε.

Αν θέλετε να ελέγχετε αυτόματα για τυχόν προβλήματα ασφαλείας πριν από κάθε εγκατάσταση νέας εφαρμογής, μπορείτε να χρησιμοποιήσετε το portaudit. Θα βρείτε αυτό το εργαλείο στην Συλλογή των Ports (package:ports-mgmt/portaudit[]). Είναι καλή ιδέα να εκτελέσετε το `portaudit -F` πριν εγκαταστήσετε ένα νέο port, για να ανακτήσετε την τρέχουσα βάση δεδομένων προβλημάτων ασφαλείας. Αντίστοιχος έλεγχος και ανανέωση της βάσης δεδομένων εκτελείται επίσης αυτόματα κατά τον καθημερινό έλεγχο ασφαλείας του συστήματος. Για περισσότερες πληροφορίες διαβάστε τις σελίδες manual man:portaudit[1] και man:periodic[8].
====

Η Συλλογή των Ports προϋποθέτει ότι έχετε λειτουργική σύνδεση με το Διαδίκτυο. Εάν δεν έχετε, θα χρειαστεί να βάλετε μόνος σας ένα αντίγραφο του distfile μέσα στο [.filename]#/usr/ports/distfiles#.

Αρχικά, μετακινηθείτε στον κατάλογο του port που θέλετε να εγκαταστήσετε:

[source,shell]
....
# cd /usr/ports/sysutils/lsof
....

Μόλις βρεθείτε στον κατάλογο [.filename]#lsof#, θα δείτε τον port skeleton. Το επόμενο βήμα είναι να μεταγλωττίσετε, ή να "κτίσετε (build)", το port. Αυτό γίνεται απλά πληκτρολογώντας `make` στην γραμμή εντολών. Όταν το κάνετε, θα δείτε κάτι όπως αυτό:

[source,shell]
....
# make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===>  Extracting for lsof-4.57
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===>  Patching for lsof-4.57
===>  Applying FreeBSD patches for lsof-4.57
===>  Configuring for lsof-4.57
...
[configure output snipped]
...
===>  Building for lsof-4.57
...
[compilation output snipped]
...
#
....

Προσέξτε ότι μόλις η μεταγλώττιση ολοκληρωθεί θα επιστρέψετε στην γραμμή εντολών. Το επόμενο βήμα είναι να εγκαταστήσετε το port. Για να το εγκαταστήσετε, χρειάζεται απλώς να προσθέσετε μια λέξη στην εντολή `make`, και αυτή η λέξη είναι `install`:

[source,shell]
....
# make install
===>  Installing for lsof-4.57
...
[installation output snipped]
...
===>   Generating temporary packing list
===>   Compressing manual pages for lsof-4.57
===>   Registering installation for lsof-4.57
===>  SECURITY NOTE:
      This port has installed the following binaries which execute with
      increased privileges.
#
....

Μόλις επιστρέψετε στην γραμμή εντολών, θα πρέπει να μπορείτε να εκτελέσετε την εφαρμογή που μόλις εγκαταστήσατε. Θα δείτε μια προειδοποίηση ασφαλείας, επειδή το `lsof` είναι ένα πρόγραμμα που τρέχει με αυξημένα προνόμια. Κατά την μεταγλώττιση και εγκατάσταση των ports, θα πρέπει να προσέχετε οποιαδήποτε προειδοποίηση εμφανιστεί.

Μια καλή ιδέα, είναι να διαγράψετε τον υποκατάλογο που περιέχει όλα τα προσωρινά αρχεία που χρησιμοποιήθηκαν κατά την μεταγλώττιση. Όχι μόνο καταναλώνουν πολύτιμο χώρο, άλλα μπορεί να προκαλέσουν προβλήματα αργότερα όταν θα θελήσετε να εγκαταστήσετε μια νεότερη έκδοση του port.

[source,shell]
....
# make clean
===>  Cleaning for lsof-4.57
#
....

[NOTE]
====
Μπορείτε να γλιτώσετε δύο πρόσθετα βήματα απλώς εκτελώντας `make install clean` αντί για `make`, `make install` και `make clean` ως τρία ξεχωριστά βήματα.
====

[NOTE]
====
Μερικά κελύφη κρατάνε μια λίστα από τις εντολές που βρίσκονται διαθέσιμες στους καταλόγους που αναφέρονται στην μεταβλητή περιβάλλοντος `PATH`, για να επιταχύνουν τις αναζητήσεις για τα εκτελέσιμα αρχεία αυτών των εντολών. Αν χρησιμοποιείτε ένα από αυτά τα κελύφη, θα πρέπει να χρησιμοποιήσετε την εντολή `rehash` μετά την εγκατάσταση ενός port, πριν μπορέσετε να χρησιμοποιήσετε τις νέες εντολές. Αυτή η εντολή λειτουργεί σε κελύφη όπως το `tcsh`. Χρησιμοποιήστε την εντολή `hash -r` για κελύφη όπως το `sh`. Δείτε την τεκμηρίωση του κελύφους σας για περισσότερες πληροφορίες.
====

Μερικά προϊόντα τρίτων κατασκευαστών σε DVD-ROM, όπως το FreeBSD Toolkit από το http://www.freebsdmall.com/[FreeBSD Mall], περιέχουν distfiles. Αυτά μπορούν να χρησιμοποιηθούν με την Συλλογή των Ports. Προσαρτήστε το DVD-ROM στο [.filename]#/cdrom#. Αν χρησιμοποιείτε κάποιο διαφορετικό σημείο προσάρτησης, ρυθμίστε την μεταβλητή `CD_MOUNTPTS` του make. Τα αναγκαία distfiles θα χρησιμοποιηθούν αυτόματα αν υπάρχουν στο δισκάκι.

[NOTE]
====
Πρέπει να γνωρίζετε ότι οι άδειες μερικών ports δεν επιτρέπουν την διανομή τους σε CD-ROM. Αυτό μπορεί να οφείλεται π.χ. στο ότι πρέπει να συμπληρώσετε μια φόρμα εγγραφής πριν "κατεβάσετε" την εφαρμογή, ή στο ότι δεν επιτρέπεται η επαναδιανομή, ή σε κάποιο άλλο λόγο. Εάν θέλετε να εγκαταστήσετε ένα port που δεν περιλαμβάνεται στο CD-ROM, θα χρειαστεί να είστε συνδεδεμένος στο Διαδίκτυο για να το επιτύχετε.
====

Το σύστημα των ports χρησιμοποιεί το man:fetch[3] για να "κατεβάσει" τα αρχεία. Το man:fetch[3] χρησιμοποιεί διάφορες μεταβλητές περιβάλλοντος, περιλαμβανομένων των `FTP_PASSIVE_MODE`, `FTP_PROXY`, και `FTP_PASSWORD`. Ίσως χρειαστεί να ρυθμίσετε μία ή περισσότερες αν βρίσκεστε πίσω από ένα firewall, ή ίσως να χρειαστεί να χρησιμοποιήσετε έναν FTP/HTTP proxy. Δείτε το man:fetch[3] για μια πλήρη λίστα των μεταβλητών αυτών.

Για χρήστες που δεν μπορούν να είναι συνδεδεμένοι όλη την ώρα, διατίθεται η επιλογή `make fetch`. Απλώς εκτελέστε την εντολή στον κατάλογο ([.filename]#/usr/ports#) και τα απαραίτητα αρχεία θα "κατέβουν" για εσάς. Η εντολή αυτή θα λειτουργήσει και σε υποκαταλόγους, όπως για παράδειγμα: [.filename]#/usr/ports/net#. Προσέξτε ότι αν ένα port εξαρτάται από βιβλιοθήκες ή άλλα ports, η εντολή αυτή _δεν_ θα ανακτήσει τα distfiles τους. Αντικαταστήστε το `fetch` με το `fetch-recursive` αν θέλετε μαζί με το port να ανακτήσετε και όλες τις εξαρτήσεις του.

[NOTE]
====
Μπορείτε να μεταγλωττίσετε όλα τα ports σε μία κατηγορία ή ακόμα και σε όλες, εκτελώντας το `make` στον αρχικό κατάλογο, όπως με την προαναφερθείσα `make fetch` μέθοδο. Αυτό όμως είναι επικίνδυνο, γιατί μερικά ports δεν μπορούν να συνυπάρχουν. Σε άλλες περιπτώσεις, μερικά ports μπορεί να εγκαταστήσουν δυο διαφορετικά αρχεία με το με το ίδιο όνομα.
====

Σε μερικές σπάνιες περιπτώσεις, οι χρήστες μπορεί να χρειάζεται να ανακτήσουν τα tarballs από ένα site διαφορετικό από τα `MASTER_SITES` (η τοποθεσία από όπου "κατεβαίνουν" τα αρχεία). Μπορείτε να αλλάξετε την επιλογή `MASTER_SITES` με την ακόλουθη εντολή:

[source,shell]
....
# cd /usr/ports/directory
# make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch
....

Σε αυτό το παράδειγμα αλλάξαμε την επιλογή `MASTER_SITES` σε `ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/`.

[NOTE]
====
Μερικά ports επιτρέπουν (ή απαιτούν) να δώσετε επιλογές μεταγλώττισης που μπορούν να ενεργοποιήσουν/απενεργοποιήσουν τμήματα της εφαρμογής που είναι αχρείαστα, συγκεκριμένες επιλογές ασφαλείας, και άλλες τροποποιήσεις. Κοινά παραδείγματα τέτοιων ports είναι τα package:www/firefox[], package:security/gpgme[], και το package:mail/sylpheed-claws[]. Όταν υπάρχουν διαθέσιμες τέτοιες επιλογές, θα εμφανιστεί στην οθόνη σας σχετικό μήνυμα.
====

==== Παρακάμπτοντας τους Προεπιλεγμένους Καταλόγους των Ports

Μερικές φορές είναι χρήσιμο (ή επιτακτικό) να χρησιμοποιήσετε ένα διαφορετικό κατάλογο εργασίας και εγκατάστασης. Οι μεταβλητές `WRKDIRPREFIX` και `PREFIX` μπορούν να παρακάμψουν τους προεπιλεγμένους καταλόγους. Για παράδειγμα, η εντολή:

[source,shell]
....
# make WRKDIRPREFIX=/usr/home/example/ports install
....

θα μεταγλωττίσει το port στο [.filename]#/usr/home/example/ports# και θα εγκαταστήσει τα πάντα στο [.filename]#/usr/local#, ενώ η εντολή:

[source,shell]
....
# make PREFIX=/usr/home/example/local install
....

θα μεταγλωττίσει το port στο [.filename]#/usr/ports# και θα το εγκαταστήσει στο [.filename]#/usr/home/example/local#.

Και φυσικά η εντολή:

[source,shell]
....
# make WRKDIRPREFIX=../ports PREFIX=../local install
....

θα συνδυάσει και τα δυο (είναι πολύ μεγάλη για να την δείξουμε εδώ, άλλα πρέπει να πήρατε την γενική ιδέα).

Εναλλακτικά, αυτές οι μεταβλητές μπορούν να ρυθμιστούν ως μέρος του περιβάλλοντος σας. Διαβάστε την σελίδα manual για το κέλυφος σας, για να βρείτε τις σχετικές οδηγίες.

==== Αντιμετωπίζοντας το `imake`

Μερικά ports που χρησιμοποιούν το `imake` (μέρος του X Window System) δεν συνεργάζονται σωστά με το `PREFIX`, και επιμένουν να εγκατασταθούν στο [.filename]#/usr/X11R6#. Όμοια, μερικά Perl ports αγνοούν το `PREFIX` και εγκαθίστανται στο δέντρο Perl. Το να κάνετε αυτά τα ports να σέβονται το `PREFIX` είναι μία δύσκολη ή αδύνατη δουλειά.

==== Επαναρύθμιση Επιλογών Ports

Όταν μεταγλωττίζετε κάποια ports, μπορεί να εμφανιστεί στην οθόνη σας ένα μενού επιλογών (βασισμένο σε ncurses) το οποίο να σας επιτρέπει να αλλάξετε διάφορες επιλογές μεταγλώττισης. Δεν είναι σπάνιο κάποιοι χρήστες να θέλουν να επισκεφτούν ξανά αυτό το μενού, για να προσθέσουν, να αφαιρέσουν ή να αλλάξουν κάποιες επιλογές, μετά την μεταγλώττιση του port. Μια επιλογή είναι να μετακινηθείτε στον κατάλογο του port και να γράψετε `make config`, με το οποίο θα εμφανιστεί ξανά το μενού με τις προηγούμενες ρυθμίσεις σας ήδη επιλεγμένες. Μια άλλη δυνατότητα, είναι να χρησιμοποιήσετε την εντολή `make showconfig`, με την οποία θα δείτε όλες τις επιλεγμένες ρυθμίσεις του port. Τέλος, μια ακόμα επιλογή είναι να εκτελέσετε την εντολή `make rmconfig` η οποία θα αφαιρέσει όλες τις αποθηκευμένες επιλογές και θα σας επιτρέψει να ξεκινήσετε ξανά από την αρχή. Όλες αυτές οι επιλογές, και ακόμα περισσότερες, εξηγούνται στη σελίδα manual του man:ports[7].

[[ports-removing]]
=== Αφαιρώντας Εγκατεστημένα Ports

Τώρα που γνωρίσατε πως να εγκαθιστάτε ports, πιθανώς θα αναρωτιέστε πως αφαιρούνται, στην περίπτωση που εγκαταστήσατε ένα και αργότερα αποφασίσατε ότι εγκαταστήσατε το λάθος port. Θα αφαιρέσουμε το προηγούμενο παράδειγμα (που ήταν το `lsof` για όσους δεν το πρόσεξαν). Τα ports αφαιρούνται όπως και τα πακέτα (το αναλύσαμε στην ενότητα <<packages-using,Χρησιμοποιώντας το Σύστημα των Πακέτων>>), χρησιμοποιώντας την εντολή man:pkg_delete[1]:

[source,shell]
....
# pkg_delete lsof-4.57
....

[[ports-upgrading]]
=== Αναβαθμίζοντας τα Ports

Αρχικά, δείτε τα παρωχημένα ports για τα οποία υπάρχουν διαθέσιμες νεότερες εκδόσεις στην Συλλογή των Ports, με την εντολή man:pkg_version[1]:

[source,shell]
....
# pkg_version -v
....

[[ports-file-updating]]
==== [.filename]#/usr/ports/UPDATING#

Μόλις ανανεώσετε την Συλλογή των Ports, πρέπει να ελέγξετε το αρχείο [.filename]#/usr/ports/UPDATING#, πριν επιχειρήσετε την αναβάθμιση ενός port. Αυτό το αρχείο περιγράφει διάφορα πιθανά προβλήματα, καθώς και ενδεχόμενα πρόσθετα βήματα που πρέπει να εκτελέσετε όταν ανανεώνετε ένα port. Παραδείγματα των παραπάνω, είναι η αλλαγή μορφής κάποιων αρχείων, αλλαγή στην τοποθεσία των αρχείων ρυθμίσεων, ή άλλες ασυμβατότητες με παλαιότερες εκδόσεις.

Αν το [.filename]#UPDATING# αναιρεί κάτι που διαβάσατε εδώ, θεωρήστε ότι ισχύει το [.filename]#UPDATING#.

[[portupgrade]]
==== Αναβαθμίζοντας Ports με το Portupgrade

Το εργαλείο portupgrade είναι σχεδιασμένο για να αναβαθμίζει εύκολα εγκατεστημένα ports. Διατίθεται από το package:ports-mgmt/portupgrade[] port. Εγκαταστήστε το όπως κάθε port, χρησιμοποιώντας την εντολή `make install clean`:

[source,shell]
....
# cd /usr/ports/ports-mgmt/portupgrade
# make install clean
....

Η εντολή `pkgdb -F` θα διαβάσει και θα διορθώσει όλες τις ασυνέπειες που ίσως υπάρχουν στη λίστα των εγκατεστημένων ports. Είναι καλή ιδέα είναι να την εκτελείτε συχνά, ενδεχομένως πριν από κάθε αναβάθμιση.

Όταν εκτελείτε το `portupgrade -a`, το portupgrade θα αρχίσει να αναβαθμίζει όλα τα παρωχημένα ports που είναι εγκατεστημένα στο σύστημα σας. Χρησιμοποιήστε την επιλογή `-i` αν θέλετε να σας ρωτά για επιβεβαίωση για κάθε ξεχωριστή αναβάθμιση.

[source,shell]
....
# portupgrade -ai
....

Αν θέλετε να αναβαθμίσετε μόνο μία συγκεκριμένη εφαρμογή, και όχι όλα τα διαθέσιμα ports, χρησιμοποιήστε το `portupgrade pkgname`. Συμπεριλάβετε την επιλογή `-R` αν το portupgrade πρέπει πρώτα να αναβαθμίσει όλα τα ports που απαιτούνται για την συγκεκριμένη εφαρμογή.

[source,shell]
....
# portupgrade -R firefox
....

Για να χρησιμοποιήσετε πακέτα αντί για ports στην εγκατάσταση, δώστε την επιλογή `-P`. Με αυτή την επιλογή το portupgrade αναζητά τους τοπικούς καταλόγους που ορίζονται στο `PKG_PATH`, ή ανακτά τα πακέτα από απομακρυσμένα sites εάν δεν βρεθούν τοπικά. Αν τα πακέτα δεν μπορούν να ανακτηθούν με τους παραπάνω τρόπους, το portupgrade θα χρησιμοποιήσει τα ports. Για να αποφύγετε εντελώς την χρήση των ports, καθορίστε την επιλογή `-PP`.

[source,shell]
....
# portupgrade -PR gnome2
....

Για να ανακτήσετε απλώς τα distfiles (ή τα πακέτα, αν έχετε ορίσει την επιλογή `-P`) χωρίς να μεταγλωττίσετε ή να εγκαταστήσετε τίποτα, χρησιμοποιήστε το `-F`. Για περισσότερες πληροφορίες, δείτε το man:portupgrade[1].

[[portmanager]]
==== Αναβαθμίζοντας Ports με το Portmanager

Το Portmanager είναι ένα ακόμα εργαλείο για εύκολη αναβάθμιση εγκατεστημένων ports. Διατίθεται από το package:ports-mgmt/portmanager[] port:

[source,shell]
....
# cd /usr/ports/ports-mgmt/portmanager
# make install clean
....

Όλα τα εγκατεστημένα ports μπορούν να αναβαθμιστούν χρησιμοποιώντας αυτή την απλή εντολή:

[source,shell]
....
# portmanager -u
....

Μπορείτε να προσθέσετε την επιλογή `-ui` στην παραπάνω εντολή (`portmanager -u -ui`) για να ερωτηθείτε να επιβεβαιώσετε κάθε βήμα που θα εκτελέσει το Portmanager. Το Portmanager μπορεί επίσης να χρησιμοποιηθεί για να εγκαταστήσετε νέα ports στο σύστημα. Σε αντίθεση με την εντολή `make install clean`, το Portmanager θα αναβαθμίσει όλες τις εξαρτήσεις πριν την μεταγλώττιση και εγκατάσταση του επιλεγμένου port.

[source,shell]
....
# portmanager x11/gnome2
....

Αν υπάρχουν προβλήματα που σχετίζονται με τις εξαρτήσεις ενός επιλεγμένου port, μπορείτε να χρησιμοποιήσετε το Portmanager για να τις επανα-μεταγλωττίσει όλες με την σωστή σειρά. Μόλις τελειώσει με τις εξαρτήσεις, θα επανα-μεταγλωττίσει και το προβληματικό port.

[source,shell]
....
# portmanager graphics/gimp -f
....

Για περισσότερες πληροφορίες δείτε τη σελίδα manual man:portmanager[1].

[[portmaster]]
==== Αναβαθμίζοντας τα Ports μέσω του Portmaster

Το Portmaster είναι ένα ακόμα εργαλείο για την αναβάθμιση των εγκατεστημένων ports. Το Portmaster σχεδιάστηκε ώστε να χρησιμοποιεί τα εργαλεία που παρέχει το "βασικό" σύστημα (δεν εξαρτάται από άλλα ports) και χρησιμοποιεί τις πληροφορίες του [.filename]#/var/db/pkg# για να καθορίσει ποια ports θα αναβαθμίσει. Είναι διαθέσιμο μέσω του port package:ports-mgmt/portmaster[]:

[source,shell]
....
# cd /usr/ports/ports-mgmt/portmaster
# make install clean
....

Το Portmaster ομαδοποιεί τα ports σε τέσσερις κατηγορίες:

* Root ports (δεν εξαρτώνται από άλλα, και ούτε άλλα εξαρτώνται από αυτά)
* Trunk ports (δεν εξαρτώνται από άλλα, ωστόσο κάποια πακέτα εξαρτώνται από αυτά)
* Branch ports (έχουν εξαρτήσεις και προς τις δύο κατευθύνσεις)
* Leaf ports (εξαρτώνται από άλλα, αλλά όχι το αντίθετο)

Μπορείτε να δείτε μια λίστα όλων των εγκατεστημένων ports και να ψάξετε για ενημερωμένες εκδόσεις, χρησιμοποιώντας την επιλογή `-L`:

[source,shell]
....
# portmaster -L
===>>> Root ports (No dependencies, not depended on)
===>>> ispell-3.2.06_18
===>>> screen-4.0.3
        ===>>> New version available: screen-4.0.3_1
===>>> tcpflow-0.21_1
===>>> 7 root ports
...
===>>> Branch ports (Have dependencies, are depended on)
===>>> apache-2.2.3
        ===>>> New version available: apache-2.2.8
...
===>>> Leaf ports (Have dependencies, not depended on)
===>>> automake-1.9.6_2
===>>> bash-3.1.17
        ===>>> New version available: bash-3.2.33
...
===>>> 32 leaf ports

===>>> 137 total installed ports
        ===>>> 83 have new versions available
....

Μπορείτε να αναβαθμίσετε όλα τα εγκατεστημένα ports με την παρακάτω απλή εντολή:

[source,shell]
....
# portmaster -a
....

[NOTE]
====
Από προεπιλογή, το Portmaster θα δημιουργήσει αντίγραφο ασφαλείας του εγκατεστημένου πακέτου πριν το διαγράψει. Αν η εγκατάσταση της νέας έκδοσης είναι επιτυχής, το Portmaster θα σβήσει το αντίγραφο αυτό. Αν χρησιμοποιήσετε την επιλογή `-b`, το Portmaster δεν θα σβήσει αυτόματα το αντίγραφο. Αν χρησιμοποιήσετε την επιλογή `-i`, θα θέσετε το Portmaster σε διαδραστική λειτουργία, όπου θα σας ζητάει επιβεβαίωση πριν την αναβάθμιση κάθε port.
====

Αν αντιμετωπίσετε λάθη κατά τη διαδικασία της αναβάθμισης, μπορείτε να χρησιμοποιήσετε την επιλογή `-f` για να αναβαθμίσετε και να μεταγλωττίσετε ξανά όλα τα ports:

[source,shell]
....
# portmaster -af
....

Μπορείτε επίσης να χρησιμοποιήσετε το Portmaster για να εγκαταστήσετε νέα ports στο σύστημα σας, αναβαθμίζοντας και όλες τις εξαρτήσεις τους πριν τη μεταγλώττιση και εγκατάσταση τους:

[source,shell]
....
# portmaster shells/bash
....

Παρακαλούμε δείτε τη σελίδα manual του man:portmaster[8] για περισσότερες πληροφορίες.

[[ports-disk-space]]
=== Ports και Αποθηκευτικός Χώρος

Η Συλλογή των Ports καταναλώνει διαθέσιμο χώρο στο δίσκο με την πάροδο του χρόνου. Μετά την μεταγλώττιση και εγκατάσταση λογισμικού από τα ports, πρέπει πάντα να θυμάστε να καθαρίζετε τους προσωρινούς καταλόγους [.filename]#work# χρησιμοποιώντας την εντολή `make clean`. Mπορείτε να καθαρίσετε όλη την Συλλογή των Ports με την ακόλουθη εντολή:

[source,shell]
....
# portsclean -C
....

Με την πάροδο του χρόνου, θα συσσωρευτούν πολλά αρχεία διανομής πηγαίου κώδικα στον κατάλογο [.filename]#distfiles#. Μπορείτε να τα αφαιρέσετε χειροκίνητα, ή μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να διαγράψετε όλα τα distfiles που δεν σχετίζονται πλέον με κανένα port:

[source,shell]
....
# portsclean -D
....

Ή για να αφαιρέσετε όλα τα distfiles που δεν σχετίζονται με κανένα port που βρίσκεται εγκατεστημένο στο σύστημα σας:

[source,shell]
....
# portsclean -DD
....

[NOTE]
====
Το εργαλείο `portsclean` εγκαθίσταται ως μέρος του portupgrade.
====

Μην ξεχνάτε να αφαιρείτε τα εγκατεστημένα ports όταν δεν τα χρειάζεστε πλέον. Ένα καλό εργαλείο για να αυτοματοποιηθεί αυτή η εργασία, είναι το port package:ports-mgmt/pkg_cutleaves[].

[[ports-nextsteps]]
== Ενέργειες μετά την Εγκατάσταση

Μετά την εγκατάσταση μιας νέας εφαρμογής, λογικά θα θέλετε να διαβάσετε ότι τεκμηρίωση υπάρχει, να τροποποιήσετε τα αρχεία ρυθμίσεων που χρειάζεται, να βεβαιωθείτε ότι η εφαρμογή ξεκινάει κατά την εκκίνηση (αν είναι daemon), κ.λ.π.

Τα ακριβή βήματα που θα χρειαστούν για να ρυθμίσετε κάθε εφαρμογή, θα είναι προφανώς διαφορετικά. Όμως, αν μόλις εγκαταστήσατε μια νέα εφαρμογή και αναρωτιέστε "Τώρα τι;" οι παρακάτω συμβουλές μπορεί να σας βοηθήσουν:

* Χρησιμοποιήστε το man:pkg_info[1] για να δείτε τι αρχεία εγκαταστάθηκαν, και που. Για παράδειγμα, αν μόλις εγκαταστήσατε το FooPackage version 1.0.0, τότε η εντολή:
+
[source,shell]
....
# pkg_info -L foopackage-1.0.0 | less
....
+ 
θα σας δείξει όλα τα αρχεία που εγκαταστάθηκαν από αυτό το πακέτο. Προσέξτε τα αρχεία στον κατάλογο [.filename]#man/#, που θα είναι σελίδες manual, τους κατάλογους [.filename]#etc/#, όπου θα είναι τα αρχεία ρυθμίσεων, και το [.filename]#doc/#, όπου θα βρίσκεται πιο περιεκτική τεκμηρίωση.
+ 
Αν δεν είστε σίγουρος ποια έκδοση της εφαρμογής εγκαταστήσατε, μια εντολή όπως αυτή:
+
[source,shell]
....
# pkg_info | grep -i foopackage
....
+ 
θα βρει όλα τα εγκατεστημένα πακέτα που έχουν το _foopackage_ στο όνομα του πακέτου. Αντικαταστήστε το _foopackage_ στην γραμμή εντολών με το πακέτο που αναζητάτε.
* Μόλις δείτε που βρίσκονται τα manual pages της εφαρμογής, δείτε τα με την man:man[1]. Όμοια, δείτε τα παραδείγματα των αρχείων ρύθμισης, και όποια άλλη πρόσθετη τεκμηρίωση διατίθεται.
* Αν υπάρχει web site για την εφαρμογή, ελέγξτε το για πρόσθετη τεκμηρίωση, συχνές ερωτήσεις (FAQ), και άλλα. Αν δεν είστε σίγουρος για την διεύθυνσή του web site, ίσως το βρείτε στην έξοδο της εντολής:
+
[source,shell]
....
# pkg_info foopackage-1.0.0
....
+ 
Αν υπάρχει γραμμή `WWW:`, θα πρέπει να έχει το URL για το web site της εφαρμογής.
* Ports που πρέπει να ξεκινούν κατά την εκκίνηση (όπως διακομιστές Internet) συνήθως εγκαθιστούν ένα script στο [.filename]#/usr/local/etc/rc.d#. Πρέπει να ελέγξετε το script για την ορθότητα του και να το τροποποιήσετε ή να το μετονομάσετε αν χρειάζεται. Δείτε το crossref:config[configtuning-starting-services,Εκκινώντας Υπηρεσίες] για περισσότερες πληροφορίες.

[[ports-broken]]
== Αντιμετωπίζοντας Χαλασμένα Ports

Αν έρθετε αντιμέτωπος με ένα port το οποίο δεν λειτουργεί, υπάρχουν κάποια πράγματα που μπορείτε να κάνετε:

. Δείτε αν εκκρεμεί κάποια διόρθωση για το port στο link:https://www.FreeBSD.org/support/#gnats[Problem Report database]. Εάν ναι, μπορείτε να χρησιμοποιήσετε τη προτεινόμενη διόρθωση.
. Ζητήστε βοήθεια από τον συντηρητή του port. Πληκτρολογήστε `make maintainer` ή διαβάστε το [.filename]#Makefile# για να βρείτε την διεύθυνση email του συντηρητή. Στο μήνυμα σας, θυμηθείτε να συμπεριλάβετε το όνομα και την έκδοση του port (στείλτε τη γραμμή `$FreeBSD:` από το [.filename]#Makefile#) καθώς και την έξοδο του σφάλματος.
+
[NOTE]
====
Μερικά ports δεν συντηρούνται από κάποιο συγκεκριμένο άτομο, αλλά από κάποια extref:{mailing-list-faq}[mailing list]. Πολλές, αν όχι όλες, από αυτές τις διευθύνσεις έχουν την μορφή mailto:freebsd-listname@FreeBSD.org[freebsd-listname@FreeBSD.org]. Παρακαλούμε να το έχετε υπόψη σας κατά τη διατύπωση των ερωτήσεων σας.

Συγκεκριμένα, τα ports που φαίνονται ότι συντηρούνται από το mailto:ports@FreeBSD.org[ports@FreeBSD.org], δεν συντηρούνται από κανέναν στην πραγματικότητα. Διορθώσεις και υποστήριξη, αν υπάρχουν, έρχονται γενικά από την κοινότητα που συμμετέχει στην συγκεκριμένη mailing list. Χρειαζόμαστε πάντοτε περισσότερους εθελοντές!
====
+ 
Αν δεν λάβετε απάντηση, μπορείτε να χρησιμοποιήσετε το man:send-pr[1] για να στείλετε μια αναφορά σφάλματος (δείτε το extref:{problem-reports}[Γράφοντας Αναφορές Σφάλματος για το FreeBSD]).
. Διορθώστε το! Το extref:{porters-handbook}[Porter's Handbook] περιέχει λεπτομερείς πληροφορίες για την υποδομή των "Ports" ώστε να μπορείτε να διορθώσετε το περιστασιακό προβληματικό port ή ακόμα και να δημιουργήσετε ένα δικό σας port!
. Ανακτήστε το πακέτο από ένα κοντινό σας FTP site. Η "κύρια" συλλογή πακέτων βρίσκεται στο `ftp.FreeBSD.org`, στον link:ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/[κατάλογο πακέτων]. Πριν τη χρησιμοποιήσετε, ελέγξτε _πρώτα_ το crossref:mirrors[mirrors-ftp,τοπικό σας mirror]. Τα πακέτα είναι πιο σίγουρο ότι θα λειτουργήσουν, από το να προσπαθείτε να μεταγλωττίσετε τον πηγαίο κώδικα, και η διαδικασία τελειώνει πιο γρήγορα. Χρησιμοποιήστε το πρόγραμμα man:pkg_add[1] για να εγκαταστήσετε το πακέτο στο σύστημα σας.
