Μετάβαση στο περιεχόμενο

Ρυθμίσεις cookies

Επιλέξτε ανά κατηγορία ποια cookies επιτρέπετε. Μπορείτε να αλλάξετε την επιλογή σας οποιαδήποτε στιγμή μέσω των Ρυθμίσεων cookies στο κάτω μέρος κάθε σελίδας. Δήλωση απορρήτου

Απαραίτητα

Πάντα ενεργά

Χρειάζονται για τη σύνδεση, για να διατηρείται το καλάθι σας και για να θυμόμαστε τις επιλογές σας. Είναι πάντα ενεργά.

Ποια cookies;
  • weboke_sessie, weboke_klant, weboke_remember: η συνεδρία σας και η παραμονή σε σύνδεση
  • weboke_basket: το καλάθι σας
  • wkBtwIncl: εμφάνιση τιμών με ή χωρίς ΦΠΑ
  • wok_cookies: η επιλογή σας για τα cookies, 12 μήνες

Μετρούν ποια διαφήμιση οδηγεί σε επίσκεψη ή παραγγελία, ώστε να μην πληρώνουμε για διαφημίσεις που δεν αποδίδουν.

Ποια cookies;
  • Google Ads μέσω Google Tag Manager (_gcl_au, _gcl_aw), έως 90 ημέρες
  • OpenAI Ads, διαφημίσεις στο ChatGPT
  • wok_aff: μέσω ποιου συνεργάτη ήρθατε σε εμάς (πρόγραμμα συνεργατών), 60 ημέρες

4,6

Χώρα και γλώσσα

Κάθε χώρα έχει τη δική της ιστοσελίδα, με τιμές και ΦΠΑ της χώρας αυτής.

Προβολή

Διαχείριση πακέτων με το apt

Ενότητα 4: Λογισμικό και ενημερώσεις · Χρόνος ανάγνωσης: 10 λεπτά

Στόχος μαθήματος: Μετά από αυτό το μάθημα μπορείτε να εγκαθιστάτε, να ενημερώνετε και να αφαιρείτε λογισμικό με το apt, βλέπετε από πού προέρχεται ένα πακέτο και αναγνωρίζετε ποιες ενημερώσεις είναι ενημερώσεις ασφαλείας.

Βασικές έννοιες: πακέτο, πηγή πακέτων (repository), sources.list, αρχείο .sources (deb822), signed-by, apt update, apt upgrade, apt full-upgrade, remove, purge, autoremove, apt-cache policy, πηγή ασφαλείας, dnf

Γιατί ένας διαχειριστής πακέτων;

Στα Windows κατεβάζετε ένα πρόγραμμα εγκατάστασης από έναν ιστότοπο. Σε έναν Linux server αυτό σχεδόν δεν το κάνετε ποτέ. Το λογισμικό έρχεται ως πακέτο από μια πηγή πακέτων (repository): έναν server της διανομής με χιλιάδες προγράμματα, όλα κατασκευασμένα και δοκιμασμένα για τη δική σας έκδοση του Debian ή του Ubuntu. Το πρόγραμμα που λαμβάνει, εγκαθιστά και ενημερώνει αυτά τα πακέτα ονομάζεται διαχειριστής πακέτων. Στο Debian και στο Ubuntu είναι το apt (με το dpkg από κάτω), στο AlmaLinux και στο Rocky Linux το dnf.

Αυτό έχει τρία μεγάλα πλεονεκτήματα:

  1. Μία εντολή ενημερώνει τα πάντα. Ο web server, ο SSH server, οι βιβλιοθήκες και ο kernel προέρχονται από την ίδια πηγή. Δεν χρειάζεται να ελέγχετε για κάθε πρόγραμμα χωριστά σε κάποιον ιστότοπο αν υπάρχει νέα έκδοση.
  2. Η προέλευση είναι ελεγμένη. Κάθε πηγή πακέτων είναι υπογεγραμμένη με ένα κλειδί. Το apt απορρίπτει πακέτα των οποίων η υπογραφή δεν είναι σωστή.
  3. Οι εξαρτήσεις τακτοποιούνται. Αν το nginx χρειάζεται μια βιβλιοθήκη, το apt την εγκαθιστά αυτόματα μαζί του και αργότερα την αφαιρεί ξανά.

Οι πηγές πακέτων: από πού προέρχεται;

Ποιες πηγές χρησιμοποιεί το apt αναγράφεται στο /etc/apt/. Για πολύ καιρό αυτό ήταν ένα μόνο αρχείο sources.list με γραμμές όπως:

deb http://deb.debian.org/debian bookworm main

Το Ubuntu 24.04 και νεότερα, τα cloud images του Debian και όλο και περισσότερες νέες εγκαταστάσεις χρησιμοποιούν τη νεότερη μορφή deb822: ξεχωριστά αρχεία με την κατάληξη .sources στο /etc/apt/sources.list.d/. Ένα παλιό sources.list μπορείτε να το μετατρέψετε με sudo apt modernize-sources (apt 3, Debian 13). Για παράδειγμα στο Debian 13:

anna@web1:~$ cat /etc/apt/sources.list.d/debian.sources
Types: deb
URIs: http://deb.debian.org/debian
Suites: trixie trixie-updates
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb
URIs: http://deb.debian.org/debian-security
Suites: trixie-security
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Διαβάστε το ως εξής: η suite είναι η έκδοση (το trixie είναι το Debian 13· το noble είναι το Ubuntu 24.04), το component είναι ένα τμήμα της πηγής (main στο Debian· main, universe, restricted και multiverse στο Ubuntu) και το Signed-By δηλώνει με ποιο κλειδί πρέπει να είναι υπογεγραμμένη η πηγή. Το τελευταίο είναι σημαντικό: ένα κλειδί ανήκει σε μία πηγή, όχι σε όλες τις πηγές μαζί. Αν αργότερα προσθέσετε μια πηγή από κάποιον δημιουργό λογισμικού (Docker, Caddy, PostgreSQL), αυτή παίρνει το δικό της αρχείο κλειδιού και τη δική της γραμμή Signed-By (μάθημα 9.2).

Η πηγή με το -security στο όνομα είναι η πηγή ασφαλείας. Από εκεί προέρχονται οι ενημερώσεις ασφαλείας, συνήθως την ίδια ημέρα που γίνεται γνωστό ένα κενό ασφαλείας. Στο Ubuntu αυτή η suite ονομάζεται noble-security (ή το όνομα της δικής σας έκδοσης).

Αν χρησιμοποιείτε ακόμη το παλιό sources.list, όλα λειτουργούν κανονικά. Απλώς μην αναμειγνύετε την ίδια πηγή και στις δύο μορφές, γιατί τότε το apt παραπονιέται για διπλές γραμμές.

update, upgrade και full-upgrade

Η διαφορά ανάμεσα σε αυτές τις τρεις έννοιες είναι η πρώτη παγίδα για τους αρχάριους.

ΕντολήΤι κάνει
apt updateΛαμβάνει τη λίστα με τα πακέτα και τις εκδόσεις που υπάρχουν στις πηγές. Δεν εγκαθιστά τίποτα.
apt upgradeΕνημερώνει τα εγκατεστημένα πακέτα στη νεότερη έκδοση από αυτή τη λίστα. Δεν αφαιρεί ποτέ τίποτα. Μια ενημέρωση που θα απαιτούσε την αφαίρεση άλλου πακέτου παραλείπεται.
apt full-upgradeΤο ίδιο, αλλά επιτρέπεται επίσης να αφαιρεί πακέτα ή να εγκαθιστά νέα, αν χρειάζεται. Απαραίτητο σε μια αναβάθμιση έκδοσης (μάθημα 4.3) και μερικές φορές σε έναν νέο kernel.

Επομένως πάντα πρώτα update και μετά upgrade:

anna@web1:~$ sudo apt update
Hit:1 http://deb.debian.org/debian trixie InRelease
Get:2 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]
...
3 packages can be upgraded. Run 'apt list --upgradable' to see them.
anna@web1:~$ apt list --upgradable
Listing... Done
libssl3t64/trixie-security 3.5.1-1+deb13u1 amd64 [upgradable from: 3.5.1-1]
openssh-server/trixie-security 1:10.0p1-7+deb13u1 amd64 [upgradable from: 1:10.0p1-7]
tzdata/trixie-updates 2026b-0+deb13u1 all [upgradable from: 2026a-0+deb13u1]

(Οι αριθμοί εκδόσεων παραπάνω είναι παράδειγμα.) Μετά το όνομα φαίνεται από ποια suite προέρχεται η νέα έκδοση. Ό,τι έχει -security είναι ενημέρωση ασφαλείας: αυτές τις θέλετε όσο το δυνατόν πιο γρήγορα. Οι -updates είναι άλλες σταθερές ενημερώσεις, όπως νέα δεδομένα ζωνών ώρας.

Στη συνέχεια:

anna@web1:~$ sudo apt upgrade

Το apt δείχνει τι αλλάζει και ζητά επιβεβαίωση. Διαβάστε αυτή τη λίστα. Αν εμφανίζεται "The following packages will be REMOVED" (τα παρακάτω πακέτα θα αφαιρεθούν), τότε συμβαίνει κάτι ασυνήθιστο και θέλετε πρώτα να μάθετε γιατί.

Εγκατάσταση, αφαίρεση και καθαρισμός

anna@web1:~$ sudo apt install nginx
anna@web1:~$ sudo apt remove nginx       # το πρόγραμμα αφαιρείται, οι ρυθμίσεις στο /etc παραμένουν
anna@web1:~$ sudo apt purge nginx        # αφαιρούνται το πρόγραμμα και οι ρυθμίσεις
anna@web1:~$ sudo apt autoremove         # καθαρισμός όσων δεν χρειάζονται πλέον

Η διαφορά ανάμεσα στο remove και στο purge είναι χρήσιμη: αν θέλετε να αφαιρέσετε κάτι προσωρινά και να το εγκαταστήσετε αργότερα ξανά με τις ίδιες ρυθμίσεις, χρησιμοποιήστε το remove. Αν θέλετε πραγματικά να ξεκινήσετε από την αρχή, το purge.

Αναζήτηση και περισσότερες πληροφορίες:

anna@web1:~$ apt search fail2ban
anna@web1:~$ apt show fail2ban
anna@web1:~$ apt-cache policy openssh-server
openssh-server:
  Installed: 1:10.0p1-7
  Candidate: 1:10.0p1-7+deb13u1
  Version table:
     1:10.0p1-7+deb13u1 500
        500 http://deb.debian.org/debian-security trixie-security/main amd64 Packages
 *** 1:10.0p1-7 500
        500 http://deb.debian.org/debian trixie/main amd64 Packages

Το apt-cache policy είναι η εντολή που χρησιμοποιείτε όταν θέλετε να μάθετε από πού προέρχεται ένα πακέτο και ποια έκδοση θα επιλέξει το apt. Το *** βρίσκεται δίπλα στην εγκατεστημένη έκδοση, το Candidate είναι αυτό που θα εγκαθιστούσε μια αναβάθμιση.

Εκδόσεις του Debian και η έκδοση ενός προγράμματος

Ένα συχνό παράπονο: "Το Debian έχει μια παλιά έκδοση του nginx." Αυτό είναι αλήθεια και γίνεται εσκεμμένα. Το Debian και το Ubuntu παγώνουν τις εκδόσεις κατά την κυκλοφορία μιας έκδοσης και στη συνέχεια προσθέτουν μόνο διορθώσεις ασφαλείας και σοβαρές επιδιορθώσεις, χωρίς νέες λειτουργίες. Γι' αυτό ένα πακέτο με "παλιό" αριθμό έκδοσης μπορεί να έχει όλες τις πρόσφατες διορθώσεις ασφαλείας: αυτές έχουν μεταφερθεί (backport) στην παλιά έκδοση. Αυτό το αναγνωρίζετε από την κατάληξη, όπως +deb13u1 ή ubuntu0.1.

Επομένως μη συγκρίνετε ποτέ μόνο τον αριθμό έκδοσης με τον ιστότοπο του δημιουργού για να κρίνετε αν είστε ευάλωτοι. Κοιτάξτε τις ανακοινώσεις ασφαλείας της διανομής σας: το Debian Security Tracker (security-tracker.debian.org) και τα Ubuntu Security Notices (ubuntu.com/security/notices) αναφέρουν για κάθε κενό ασφαλείας αν η δική σας έκδοση έχει διορθωθεί.

Μερικοί κανόνες για έναν ήσυχο server

  • Εγκαταστήστε μόνο ό,τι χρειάζεστε. Κάθε πακέτο είναι κώδικας που πρέπει να ενημερώνεται και μερικές φορές μια υπηρεσία που ακούει σε μια θύρα (μάθημα 5.1).
  • Προτιμήστε τη διανομή από έναν ιστότοπο. Ένα πρόγραμμα που κάνετε compile μόνοι σας ή κατεβάζετε ως μεμονωμένο αρχείο δεν ενημερώνεται από το apt upgrade. Τότε πρέπει να παρακολουθείτε εσείς οι ίδιοι τις ανακοινώσεις ασφαλείας.
  • Μια επιπλέον πηγή μόνο από τον ίδιο τον δημιουργό, με δικό της κλειδί και Signed-By. Μην προσθέτετε ποτέ ένα κλειδί "για όλα" και ποτέ μια πηγή από άγνωστο ιστότοπο (μάθημα 4.3).
  • Διαβάστε τι ρωτά το apt. Κατά μια αναβάθμιση το apt μπορεί να ρωτήσει αν θέλετε να αντικαταστήσετε ένα τροποποιημένο αρχείο ρυθμίσεων με τη νέα έκδοση του δημιουργού. Αν δεν γνωρίζετε τι έχετε αλλάξει σε αυτό, επιλέξτε "keep the local version" (διατήρηση της τοπικής έκδοσης, η προεπιλογή) και δείτε αργότερα τη διαφορά με diff: η νέα έκδοση βρίσκεται δίπλα ως .dpkg-dist.

Στο AlmaLinux και στο Rocky Linux

Εκεί ο διαχειριστής πακέτων ονομάζεται dnf και τα πακέτα είναι .rpm. Οι εντολές μοιάζουν με αυτές του apt: dnf check-update (η λίστα), dnf upgrade (ενημέρωση, update και upgrade σε ένα), dnf install, dnf remove, dnf info. Οι πηγές βρίσκονται στο /etc/yum.repos.d/*.repo. Πολύ επιπλέον λογισμικό (όπως το fail2ban) προέρχεται από την ξεχωριστή πηγή EPEL, την οποία ενεργοποιείτε πρώτα με dnf install epel-release. Μόνο τις ενημερώσεις ασφαλείας μπορείτε να εμφανίσετε με dnf updateinfo list --security.

Στην πράξη: η οθόνη του VPS

Στη WebOké, όπως και στους περισσότερους άλλους παρόχους, η εγκατάσταση του VPS σας ρυθμίζει ήδη σωστά τις προεπιλεγμένες πηγές της διανομής. Συνήθως δεν χρειάζεται να αλλάξετε τίποτα εκεί. Ενημερώστε τον server αμέσως μετά την πρώτη σύνδεση με apt update και apt upgrade (μάθημα 1.2) και δημιουργήστε ένα snapshot στον πίνακα ελέγχου του παρόχου σας πριν από μεγάλες αλλαγές.

Σύνοψη

  • Στο Debian και στο Ubuntu το λογισμικό προέρχεται από υπογεγραμμένες πηγές πακέτων· το apt λαμβάνει, εγκαθιστά, ενημερώνει και καθαρίζει.
  • Το apt update λαμβάνει μόνο τη λίστα· το apt upgrade ενημερώνει χωρίς να αφαιρεί· το apt full-upgrade επιτρέπεται να αφαιρεί επίσης.
  • Οι ενημερώσεις ασφαλείας προέρχονται από τη suite με -security στο όνομα· τα apt list --upgradable και apt-cache policy δείχνουν από πού προέρχεται μια έκδοση.
  • Ένας παλιός αριθμός έκδοσης με +deb13u1 ή ubuntu0.x μπορεί να έχει όλες τις διορθώσεις (backport): κοιτάξτε τις ανακοινώσεις ασφαλείας της διανομής σας.
  • Μια επιπλέον πηγή μόνο από τον ίδιο τον δημιουργό, με δικό της κλειδί στο Signed-By.

Κουίζ

1. Πληκτρολογείτε sudo apt upgrade σε έναν server στον οποίο δεν έχετε κάνει τίποτα εδώ και μια εβδομάδα και το apt αναφέρει ότι όλα είναι ενημερωμένα. Ωστόσο γνωρίζετε ότι χθες κυκλοφόρησε μια ενημέρωση του OpenSSH. Ποια είναι η πιθανότερη εξήγηση;



2. Ποια είναι η διαφορά ανάμεσα στο apt remove και στο apt purge;



3. Στο apt list --upgradable εμφανίζεται openssh-server/noble-security .... Τι δηλώνει το τμήμα noble-security;



4. Στον ιστότοπο ενός προγράμματος αναγράφεται η έκδοση 2.8, ενώ το Debian παρέχει την 2.6 με +deb13u2. Ένας συνάδελφος λέει: "Άρα το Debian είναι ευάλωτο σε όλα τα κενά ασφαλείας που διορθώθηκαν στις 2.7 και 2.8." Τι ισχύει;



5. Γιατί μια επιπλέον πηγή πακέτων πρέπει να έχει δικό της κλειδί με Signed-By;



Άσκηση

Άσκηση Z4.1: Ποιες ενημερώσεις είναι ενημερώσεις ασφαλείας; Στο αρχείο παραδείγματος apt-upgradable.txt υπάρχει η έξοδος των apt list --upgradable και apt-cache policy από έναν server με Debian 13. Απαντήστε: ποια πακέτα προέρχονται από την πηγή ασφαλείας, ποιο πακέτο προέρχεται από πηγή δημιουργού αντί για το Debian, ποια έκδοση του openssh-server είναι τώρα εγκατεστημένη και ποιο πακέτο είναι μια απλή σταθερή ενημέρωση χωρίς λόγο ασφαλείας; Το πρόγραμμα συγκρίνει με το σταθερό κλειδί απαντήσεων. Αν έχετε ήδη δικό σας server, εκτελέστε τις ίδιες εντολές και δείτε τι εμφανίζεται.

Άσκηση Z4.1: Ποιες ενημερώσεις είναι ενημερώσεις ασφαλείας;

Αρχείο για αυτή την άσκηση: apt-upgradable.txt





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

Για περαιτέρω μελέτη

Μια στιγμή…

Ρυθμίστε τα domains σας

Ρυθμίστε για κάθε domain τους nameservers, τη σύνδεση με το hosting σας και ποιος θα είναι ο κάτοχος.

Φόρτωση των domains σας…