Εισαγωγή
Ports vs. Packages
Ο διαχειριστής πακέτων FreeBSD, pkg
Εγκατάσταση pkg
Διαμόρφωση pkg
Εύρεση πακέτων
Εγκατάσταση πακέτων
Λήψη πληροφοριών σχετικά με τα εγκατεστημένα πακέτα
Αφαίρεση πακέτων
Κλείδωμα συσκευασιών
Αποθετήρια πακέτων
Παράδειγμα υποεντολών pkg
Σημαντικά αρχεία και κατάλογοι
Περίληψη
Εισαγωγή
Το FreeBSD είναι ένα λειτουργικό σύστημα ανοιχτού κώδικα που μοιάζει με Unix που χρησιμοποιείται για την τροφοδοσία σύγχρονων διακομιστών, επιτραπέζιων υπολογιστών και ενσωματωμένων πλατφορμών. Γίγαντες όπως το Netflix, το Yahoo!, το WhatsApp, το BBC και η Sony χρησιμοποιούν το FreeBSD με κάποια μορφή. Το σύστημα FreeBSD δεν είναι τόσο ευρέως γνωστό όσο το Linux, κυρίως επειδή το Linux έχει επικεντρωθεί για πολλά χρόνια στην επιφάνεια εργασίας και το έργο FreeBSD τείνει να βασίζεται περισσότερο σε διακομιστές.
Σε αυτόν τον οδηγό, θα μάθετε για τη διαχείριση πακέτων στο FreeBSD 12.
Ports vs. Packages
Στο FreeBSD έχουμε δύο διαφορετικούς τρόπους εγκατάστασης πρόσθετου λογισμικού: μέσω της συλλογής Ports ή Ports και μέσω προρυθμισμένων πακέτων για εγκατάσταση και διαχείριση λογισμικού.
Το Ports είναι ένα σύστημα για τη δημιουργία πρόσθετου λογισμικού στο FreeBSD. Με το Ports ξεκινάτε με τον ακατέργαστο πηγαίο κώδικα που παρέχεται από τον προμηθευτή λογισμικού και δημιουργείτε το λογισμικό ακριβώς με τον τρόπο που χρειάζεστε, ενεργοποιώντας και απενεργοποιώντας τις λειτουργίες όπως χρειάζεστε.
Τα πακέτα είναι προ-μεταγλωττισμένο λογισμικό και είναι το αποτέλεσμα της δημιουργίας θυρών, χρησιμοποιώντας τις επιλογές που ο συντηρητής θυρών πιστεύει ότι θα είναι πιο χρήσιμες για τη μεγαλύτερη ποικιλία ατόμων και ομαδοποιώντας τα σε ένα πακέτο για να είναι εύκολα εγκατείσιμα. Τα πακέτα σάς επιτρέπουν να εγκαταστήσετε, να απεγκαταστήσετε και να αναβαθμίσετε γρήγορα το πρόσθετο λογισμικό. Το σύστημα συσκευασίας του FreeBSD ονομάζεται πακέτο ή pkg
. Οι πληροφορίες πακέτου αποθηκεύονται σε μια βάση δεδομένων SQLite στην οποία μπορείτε να ρωτήσετε σχετικά με τα δεδομένα του πακέτου.
Ένα άλλο σημαντικό πράγμα σχετικά με τη διαχείριση πακέτων FreeBSD είναι η θέση των δυαδικών πακέτων. Τα πακέτα εγκαθιστούν δυαδικά αρχεία στο /usr/local
, και τα περισσότερα αρχεία διαμόρφωσης καταλήγουν σε /usr/local/etc
αντί για /etc
. Εάν προέρχεστε από τον κόσμο του Linux, μπορεί να το βρείτε πολύ ασυνήθιστο.
Ο διαχειριστής πακέτων του FreeBSD, pkg
Η επόμενη γενιά που αντικαθιστά τα παραδοσιακά εργαλεία διαχείρισης πακέτων του FreeBSD είναι το pkg
. Η προσφορά πολλών δυνατοτήτων που κάνουν την αντιμετώπιση των δυαδικών πακέτων ταχύτερη και ευκολότερη, pkg
είναι ο ευκολότερος τρόπος εγκατάστασης λογισμικού που δεν περιλαμβάνεται ήδη στο βασικό σύστημα του FreeBSD. Είναι ένα ενιαίο πρόγραμμα με πολλές υποεντολές που θα χρησιμοποιήσετε σχεδόν για κάθε λειτουργία σε πακέτα όπως εγκατάσταση, αφαίρεση και διερεύνηση πακέτων. Όλες οι λειτουργίες και οι αλλαγές του πακέτου πρέπει να εκτελούνται ως root
ή μέσω sudo
.
Δείτε πώς θα εγκαταστήσετε το curl
πακέτο στο FreeBSD:
pkg install curl
Μπορείτε να τροφοδοτήσετε την εντολή με -y
για να αποφύγετε την Proceed with this action? [y/N]:
ερώτηση κατά την εγκατάσταση λογισμικού ή μπορείτε να ρυθμίσετε τις παραμέτρους pkg
ώστε να υποθέτουμε πάντα -y
σε ένα αρχείο διαμόρφωσης.
Για να αφαιρέσετε τη συσκευασία, θα χρησιμοποιήσετε delete
:
pkg delete curl
Όπως μπορείτε να δείτε, είναι πολύ απλό και διαισθητικό.
Χρησιμοποιήστε το pkg help
για γρήγορη αναφορά στις διαθέσιμες υποεντολές ή pkg help <subcommand>
για να εμφανίσετε τη σελίδα του εγχειριδίου για μια συγκεκριμένη υποεντολή:
pkg help
pkg help install
pkg help delete
Εγκατάσταση pkg
Η στοκ έκδοση του FreeBSD δεν αποστέλλεται με pkg
εγκατεστημένο τον διαχειριστή πακέτων. Την πρώτη φορά που προσπαθείτε να εγκαταστήσετε κάποιο πακέτο, pkg
σας ζητά να εγκαταστήσετε το εργαλείο διαχείρισης πακέτων. Για παράδειγμα, ας υποθέσουμε ότι το πρώτο πακέτο που θέλετε να εγκαταστήσετε στο φρέσκο FreeBSD σας είναι το wget
, και θα δείτε το ακόλουθο μήνυμα στο τερματικό σας:
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Θα πατήσετε Yκαι ENTERθα ξεκινήσει η εγκατάσταση του εργαλείου διαχείρισης πακέτων. Αφού τοποθετηθεί, θα εγκατασταθεί το αρχικό πακέτο λογισμικού που θέλατε να εγκαταστήσετε ( wget
).
Μπορείτε επίσης να εγκαταστήσετε το σύστημα συσκευασίας μόνο του, χωρίς να προσθέσετε άλλα πακέτα, εκτελώντας το pkg bootstrap
. Επιπλέον, pkg
ξέρει πώς να εγκαταστήσει και να ενημερώσει τον εαυτό του και άλλα πακέτα.
ΣΗΜΕΙΩΣΗ: Οι παρουσίες Vultr έχουν pkg
εγκατασταθεί από προεπιλογή, επομένως δεν χρειάζεται να το εγκαταστήσετε.
Διαμόρφωση pkg
Το pkg
πρόγραμμα έχει σχεδιαστεί για να είναι εξαιρετικά ευέλικτο, με κάθε υποεντολή να έχει πολλές επιλογές. Μπορείτε να δημιουργήσετε προσαρμοσμένη, αλλά συνεπή συμπεριφορά για τα περισσότερα προγράμματα με το αρχείο διαμόρφωσης σε όλο το σύστημα για το pkg
, που βρίσκεται στο /usr/local/etc/pkg.conf
.
Το αρχείο περιέχει σχολιασμένες προεπιλογές για pkg
. Απλώς διαβάζοντας αυτό το αρχείο, μπορείτε να μάθετε πολλά για το πώς pkg
συμπεριφέρεται. Η διαμόρφωση είναι γραμμένη σε καθολική γλώσσα διαμόρφωσης (UCL) και υπάρχουν πολλές επιλογές διαμόρφωσης με σχόλια και αρκετά ψευδώνυμα. Οι μεταβλητές μπορούν να οριστούν σε έναν ακέραιο, μια συμβολοσειρά ή μια τιμή Boolean:
#PKG_DBDIR = "/var/db/pkg";
#PKG_CACHEDIR = "/var/cache/pkg";
#PORTSDIR = "/usr/ports";
#INDEXDIR = "";
#INDEXFILE = "INDEX-10"; # Autogenerated
#HANDLE_RC_SCRIPTS = false;
#DEFAULT_ALWAYS_YES = false;
#ASSUME_ALWAYS_YES = false;
. . .
Μπορείτε να ορίσετε ψευδώνυμα για pkg
υποεντολές στο pkg.conf
. Στο κάτω μέρος του pkg.conf
, θα βρείτε μια ενότητα με την ετικέτα ALIAS
. Όταν εκτελείτε επανειλημμένα σύνθετες εντολές, θα πρέπει να προσθέσετε ψευδώνυμα.
Για περισσότερες πληροφορίες σχετικά με τη μορφή αρχείου και τις επιλογές, μπορείτε να ανατρέξετε στη pkg.conf(5)
σελίδα man:
man pkg.conf
Εύρεση πακέτων
Τώρα που έχετε εγκαταστήσει έναν διαχειριστή πακέτων, μπορείτε να εγκαταστήσετε πακέτα. Εάν είστε διαχειριστής συστήματος, γνωρίζετε το γεγονός ότι διαφορετικά λειτουργικά συστήματα εκχωρούν διαφορετικά ονόματα σε συσκευασμένες εκδόσεις του ίδιου λογισμικού. Ένα πακέτο για διακομιστή web Apache στο FreeBSD, για παράδειγμα, θα έχει εντελώς διαφορετικό όνομα από το πακέτο Apache σε διαφορετικές διανομές Linux. Επομένως, προτού μπορέσετε να εγκαταστήσετε οτιδήποτε, θα πρέπει να καταλάβετε ποιο είναι το όνομα του πακέτου που θέλετε να εγκαταστήσετε.
Το FreeBSD Project προσφέρει πολλά σετ πακέτων σε ένα δημόσιο αποθετήριο και ενημερώνονται κάθε λίγες μέρες. Αυτή τη στιγμή υπάρχουν πάνω από 25.000 πακέτα.
Για παράδειγμα, ας προσπαθήσουμε να αναζητήσουμε διακομιστή ιστού Apache:
pkg search apache
# apache24-2.4.38 Version 2.4.x of Apache web server
Θα βρει όλα τα πακέτα με apache
το όνομά τους. Αυτό θα επιστρέψει μια μακρά λίστα, αλλά αυτό που ψάχνετε είναι το apache24
πακέτο. Υπάρχει μια σύντομη περιγραφή κάθε πακέτου. Αυτό θα σας βοηθήσει όταν αποφασίζετε ποιο πακέτο να εγκαταστήσετε, αλλά δεν είναι πάντα απλό.
Ορισμένες αναζητήσεις μπορούν να δημιουργήσουν εκατοντάδες αποτελέσματα. Θα χρειαστεί να χρησιμοποιήσετε διαφορετικές επιλογές γραμμής εντολών για να περικόψετε ή να προσαρμόσετε τα αποτελέσματα αναζήτησης. Συμβουλευτείτε τη pkg-search
σελίδα man ή τη σελίδα βοήθειας για pkg help search
να μάθετε περισσότερα σχετικά με τις συνήθεις επιλογές αναζήτησης.
Εάν δεν είστε σίγουροι εάν ένα πακέτο είναι αυτό που πραγματικά θέλετε, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να αναζητήσετε λεπτομέρειες του πακέτου:
pkg search -R apache24
# name: "apache24"
# origin: "www/apache24"
# version: "2.4.38"
# comment: "Version 2.4.x of Apache web server"
# maintainer: "[email protected]"
# www: "https://httpd.apache.org/"
# abi: "FreeBSD:12:amd64"
# arch: "freebsd:12:x86:64"
# prefix: "/usr/local"
# . . .
# . . .
Αυτή η εντολή θα σας δώσει πολλές χρήσιμες πληροφορίες για το πακέτο.
Εγκατάσταση πακέτων
Για να εγκαταστήσετε λογισμικό, χρησιμοποιήστε την install
υποεντολή και το όνομα ενός πακέτου για εγκατάσταση:
pkg install apache24
Όταν εγκαθιστάτε πακέτα με το pkg install
, pkg
συμβουλευτείτε τον τοπικό κατάλογο πακέτων και, στη συνέχεια, πραγματοποιεί λήψη του πακέτου που ζητήσατε από το χώρο αποθήκευσης στη διεύθυνση pkg.FreeBSD.org
. Μόλις εγκατασταθεί το πακέτο, καταχωρείται σε μια βάση δεδομένων SQLite που διατηρείται στο /var/db/pkg/local.sqlite
. Προσέξτε να μην διαγράψετε αυτό το αρχείο, διαφορετικά, το σύστημά σας θα χάσει την παρακολούθηση των πακέτων που έχουν εγκατασταθεί. Εάν το λογισμικό έχει εξαρτήσεις, pkg
θα τις εντοπίσει και θα τις εγκαταστήσει μαζί με το βασικό πακέτο. Τα πακέτα που εγκαθίστανται ως εξαρτήσεις ονομάζονται αυτόματα πακέτα.
Ο διαχειριστής πακέτων έχει τη δυνατότητα απλώς να κατεβάζει πακέτα μέσω του Διαδικτύου και να τα αποθηκεύει σε μία θέση στο δίσκο. Αυτό σας επιτρέπει να τα εγκαταστήσετε κάποια άλλη στιγμή. Μπορείτε να χρησιμοποιήσετε την pkg fetch
εντολή για λήψη του πακέτου χωρίς να το εγκαταστήσετε:
pkg fetch nginx
Αυτή η εντολή θα φέρει μόνο το Nginx χωρίς τις εξαρτήσεις του. Μπορείτε να χρησιμοποιήσετε τη -d
σημαία για να αρπάξετε όλες τις εξαρτήσεις καθώς και το ονομαζόμενο πακέτο:
pkg fetch -d nginx
Τα πακέτα μεταφορτώνονται στον κατάλογο προσωρινής μνήμης πακέτων /var/cache/pkg
. Αφού λάβετε πακέτα, pkg
θα τα προσθέσετε σε αυτόν τον κατάλογο. Μπορείτε να παραθέσετε αρχεία για να δείτε τι περιέχει:
ls /var/cache/pkg
Τώρα, για να εγκαταστήσετε ένα πακέτο λήψης μετά από ανάκτηση, εκτελέστε pkg install
κανονικά. Η διαδικασία εγκατάστασης χρησιμοποιεί τα αποθηκευμένα αρχεία αντί για τα ληφθέντα.
Με την πάροδο του χρόνου, ο κατάλογος της προσωρινής μνήμης πακέτων μπορεί να μεγαλώσει. Η pkg clean
εντολή αφαιρεί τυχόν αποθηκευμένα πακέτα που έχουν αντικατασταθεί από νεότερες εκδόσεις, καθώς και όλα τα αρχεία πακέτων που δεν βρίσκονται πλέον στο αποθετήριο:
pkg clean
Εάν θέλετε να καταργήσετε όλα τα πακέτα που έχουν αποθηκευτεί στην προσωρινή μνήμη, χρησιμοποιήστε τη -a
σημαία:
pkg clean -a
Εάν θέλετε να καθαρίσετε αυτόματα την προσωρινή μνήμη πακέτου μετά από κάθε εγκατάσταση ή αναβάθμιση πακέτου, ορίστε την pkg.conf
επιλογή AUTOCLEAN
σε true
.
Εάν ξεχάσετε ποια πακέτα έχετε εγκαταστήσει σε ένα σύστημα, μπορείτε να χρησιμοποιήσετε pkg info
για να λάβετε μια πλήρη λίστα εγκατεστημένου λογισμικού:
pkg info
# atk-2.28.1 GNOME accessibility toolkit (ATK)
# avahi-app-0.7_2 Service discovery on a local network
# ca_root_nss-3.42.1 Root certificate bundle from the Mozilla Project
# . . .
# . . .
Εάν θέλετε περισσότερες πληροφορίες σχετικά με ένα εγκατεστημένο πακέτο, χρησιμοποιήστε pkg info
και το όνομα του πακέτου. Αυτό δείχνει τις λεπτομέρειες εγκατάστασης του πακέτου σε μια αναφορά φιλική προς τον άνθρωπο:
pkg info nginx
# nginx-1.14.2_3,2
# Name : nginx
# Version : 1.14.2_3,2
# . . .
# . . .
Μπορείτε να δείτε πολλές χρήσιμες πληροφορίες όπως η έκδοση του λογισμικού, η ώρα εγκατάστασης λογισμικού, η άδεια χρήσης λογισμικού, οι σημαίες χρόνου μεταγλώττισης και άλλα. Ελέγξτε τη pkg-info
σελίδα man για τις πλήρεις λεπτομέρειες.
Αφαίρεση πακέτων
Για να απεγκαταστήσετε δυαδικά πακέτα χρησιμοποιήστε την pkg delete
υποεντολή. Είναι επίσης διαθέσιμο ως pkg remove
:
pkg delete nginx
# or
pkg remove nginx
Θα λάβετε μια λίστα με τα πακέτα που πρέπει να αφαιρεθούν και πόσο χώρο θα απελευθερώσει.
Εάν αφαιρέσετε ένα πακέτο από το οποίο εξαρτώνται άλλα πακέτα, pkg
καταργούνται και τα εξαρτημένα πακέτα.
Κλείδωμα συσκευασιών
Μπορεί να υπάρξει μια στιγμή που θέλετε ένα πακέτο στον διακομιστή σας να μην αναβαθμιστεί ποτέ. Όταν κλειδώνετε ένα πακέτο, pkg
δεν θα γίνει αναβάθμιση, υποβάθμιση, απεγκατάσταση ή επανεγκατάσταση του. Εφαρμόζει τους ίδιους κανόνες για τις εξαρτήσεις του πακέτου και τα προγράμματα από τα οποία εξαρτάται.
Χρησιμοποιήστε pkg lock
για να κλειδώσετε ένα πακέτο:
pkg lock openssl
Αυτό το openssl
πακέτο είναι πλέον κλειδωμένο.
Για να παραθέσετε όλα τα κλειδωμένα πακέτα στο σύστημα, χρησιμοποιήστε τη -l
σημαία:
pkg lock -l
Για να αφαιρέσετε την κλειδαριά χρησιμοποιήστε την pkg unlock
εντολή:
pkg unlock openssl
Για να κλειδώσετε ή να ξεκλειδώσετε όλα τα πακέτα στο σύστημα ταυτόχρονα, χρησιμοποιήστε τη -a
σημαία:
pkg lock -a
pkg unlock -a
Αποθετήρια πακέτων
Τα αποθετήρια πακέτων υποστηρίζονται από pkg
, τα οποία ονομάζονται συλλογές πακέτων. Μπορείτε να προσθέσετε, να αφαιρέσετε, να ενεργοποιήσετε και να απενεργοποιήσετε αποθετήρια. Θα πρέπει να διαμορφώσετε κάθε αποθετήριο στο δικό του αρχείο χρησιμοποιώντας τη μορφή UCL. Τα επίσημα αποθετήρια του FreeBSD ανήκουν στον /etc/pkg
κατάλογο. Το FreeBSD αποστέλλεται με το repo "FreeBSD" ενεργοποιημένο. Θα βρείτε το αρχείο διαμόρφωσής του στο /etc/pkg/FreeBSD.conf
:
FreeBSD: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
Μπορείτε να προσθέσετε και να αφαιρέσετε αποθετήρια όπως απαιτείται. Όπως /etc/pkg
προορίζεται για τα επίσημα αποθετήρια του FreeBSD, θα χρειαστείτε άλλον κατάλογο. Η παραδοσιακή τοποθεσία είναι /usr/local/etc/pkg/repos
. Εάν θέλετε να χρησιμοποιήσετε διαφορετικό κατάλογο, θα πρέπει να ορίσετε μια τοποθεσία pkg.conf
με την REPO_DIRS
επιλογή. Ο κατάλογος τοπικού αποθετηρίου δεν υπάρχει από προεπιλογή, επομένως θα πρέπει να τον δημιουργήσετε με mkdir -p /usr/local/etc/pkg/repos
. Βάλτε τις δικές σας διαμορφώσεις αποθετηρίου σε αυτόν τον κατάλογο.
Παραδείγματα pkg
υποεντολών
Αυτή η ενότητα θα αναφέρει μερικές από τις πιο συχνά χρησιμοποιούμενες υποεντολές που πιθανότατα θα χρησιμοποιήσετε κατά τη διαχείριση ενός διακομιστή FreeBSD:
# Installs a package without asking any questions
pkg install -y package
# Makes a backup of the local package database
pkg backup
# Lists all installed packages
pkg info
# Shows extended information for a package
pkg info package
# Searches package repository
pkg search -i package
# Shows packages with known security vulnerabilities
pkg audit -F
# Shows which package owns the named file
pkg which file
# Removes unused packages
pkg autoremove
# Uninstalls a package
pkg delete package
# Removes cached packages from /var/cache/pkg
pkg clean -ay
# Updates local copy of the package catalog
pkg update
# Upgrades installed packages to their latest version
pkg upgrade
# Checks the integrity of all your packages
pkg check -saq
# Verifies that a package's files are unaltered
pkg check -s nginx
# Shows what files came with the package
pkg info -l nginx
# Lists non-automatic packages
pkg prime-list
Σημαντικά αρχεία και κατάλογοι
- Το
pkg
αρχείο ρυθμίσεων -/usr/local/etc/pkg.conf
- Ο κατάλογος προορίζεται για επίσημα αποθετήρια του FreeBSD -
/etc/pkg
- Αρχείο αποθετηρίου FreeBSD -
/etc/pkg/FreeBSD.conf
- Παραδοσιακή τοποθεσία για προσαρμοσμένα αποθετήρια -
/usr/local/etc/pkg/repos
- Κατάλογος προσωρινής αποθήκευσης πακέτων -
/var/cache/pkg
- βάση δεδομένων SQLite -
/var/db/pkg/local.sqlite
Περίληψη
Το FreeBSD παρέχει δύο συμπληρωματικές τεχνολογίες για την εγκατάσταση λογισμικού τρίτων: τη Συλλογή Ports του FreeBSD, για εγκατάσταση από πηγή και πακέτα, για εγκατάσταση από προκατασκευασμένα δυαδικά αρχεία. Καθώς το FreeBSD μετατοπίζει το σύστημα πιο αποφασιστικά προς την καθολική διαχείριση πακέτων, προσπαθήστε να διαχειριστείτε λογισμικό τρίτων pkg
στο μέτρο του δυνατού. Αποφύγετε τη χρήση θυρών εκτός εάν το λογισμικό που θέλετε δεν έχει συσκευασμένη έκδοση ή εάν χρειαστεί να προσαρμόσετε τις επιλογές χρόνου μεταγλώττισης.