Απλό script για τη διαχείριση των πακέτων του Arch
#1
[IMG]archlinux-bomb.jpg[/IMG]

Επειδή βλέπω ότι δεν είστε καλά παιδάκια και βαριέστε να διαχειριστείτε σωστά το σύστημά σας, ορίστε ένα (σχετικά μεγάλο αλλά πολύ απλό) script για να κάνει τη ζωή σας πιο εύκολη και να μην πελαγώνετε.

Τι θα κάνετε εσείς; Αρχικά θα αποθηκεύσετε τα περιεχόμενα παρακάτω σε ένα αρχείο και θα το κάνετε εκτελέσιμο. Όποτε θέλετε να ενημερώσετε το σύστημά σας, θα το τρέχετε στο τερματικό. Προσοχή: όχι με διπλό κλικ, γιατί σας ρωτάει σε κάθε βήμα και δεν κάνει τίποτα αυτόματα. Το βάζω εδώ ολόκληρο για λόγους «διαφάνειας»:
Κώδικας:
#!/usr/bin/env bash

# Προβολή CVEs
echo -n -e '\E[1;31m'"@  Θέλετε να δείτε τα CVEs ; ([Y]/n) \E[0m"
read key -n1 -e -r 2> /dev/null
if [ "$key" == "n" ]; then
    echo
else
    echo -n -e '\E[31m'"* Μισό λεπτάκι...\E[0m\n"
    arch-audit -uq
fi

# Ενημέρωση mirrors
echo -n -e '\E[1;32m'"@  Να ενημερώσω τους mirrors ; ([Y]/n) \E[0m"
read key -n1 -e -r 2> /dev/null
if [ "$key" == "n" ]; then
    echo
else
    echo -n -e '\E[32m'"* Ενημέρωση...\E[0m\n"
    sudo reflector --verbose -l 10 -p https --sort rate --save /etc/pacman.d/mirrorlist
fi

# Προβολή νέων
echo -n -e '\E[1;33m'"@  Θέλετε να διαβάσετε τα νέα ; ([Y]/n) \E[0m"
read key -n1 -e -r 2> /dev/null
if [ "$key" == "n" ]; then
    echo
else
    echo -n -e '\E[33m'"* Πρόσφατα νέα...\E[0m\n"
    curl --silent "https://www.archlinux.org/feeds/news/" | \
    tr -d '\n\r' | \
    sed 's/<\/item>/<\/item>\n/g' | \
    sed -r 's/.*<title>(.*)<\/title>.*tag:www\.archlinux.org,([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]).*/\2 \1/' | \
    head -3
fi

# Αναβάθμιση
echo -n -e '\E[1;34m'"@  Πάμε για αναβάθμιση ; ([Y]/n) \E[0m"
read key -n1 -e -r 2> /dev/null
if [ "$key" == "n" ]; then
    echo
else
    echo -n -e '\E[34m'"* Όπου να 'ναι...\E[0m\n"
    sudo pacman -Syu
fi

# Αναβάθμιση πακέτων AUR
echo -n -e '\E[1;35m'"@  Να ενημερώσουμε και το AUR ; ([Y]/n) \E[0m"
read key -n1 -e -r 2> /dev/null
if [ "$key" == "n" ]; then
    echo
else
    echo -n -e '\E[35m'"* Ενημέρωση AUR... \E[0m\n"
    START=`date`
    pacaur -Syua
    STOP=`date`
    echo "Start : "$START
    echo "End  : "$STOP
fi

# Καθάρισμα orphans
echo -n -e '\E[1;36m'"@  Να ρίξουμε καθάρισμα ; ([Y]/n) \E[0m"
read key -n1 -e -r 2> /dev/null
if [ "$key" == "n" ]; then
    echo
else
    echo -n -e '\E[36m'"* Είμαστε τακτικά παιδάκια...\E[0m\n"

oprh=$(pacman -Qdtq)
if [ -z $orph ]
then
    printf "\n* Δε βρέθηκαν άχρηστες εξαρτήσεις\n\n"
else
    printf "\n* Αφαίρεση άχρηστων εξαρτήσεων\n"
    sudo pacman -Rs $orph
    fi
fi

ALL=`pacman -Q | wc | cut -c 1-8`
EXPL=`pacman -Qe | wc | cut -c 1-8`
AUR=`pacman -Qm | wc | cut -c 1-8`

echo -e "\e[01;31m $ALL\e[0;0m" Total;
echo -e "\e[01;33m $EXPL\e[0;0m" Explicit;
echo -e "\e[01;32m $AUR\e[0;0m" Aur;
echo "  "
echo "Αποθήκευση λιστών ..."

DIRECTORY=" "

pacman -Q | cut -f 1 -d " " | sort -nk2 | column -t > $DIRECTORY/repos
pacman -Qe | cut -f 1 -d " " | sort -nk2 | column -t > $DIRECTORY/explicit
pacman -Qm | cut -f 1 -d " " | sort -nk2 | column -t > $DIRECTORY/aur

echo "  "
echo "Έτοιμο !"
echo "  "

# Καθάρισμα cache
echo -n -e '\E[1;31m'"@  Να κάνουμε χώρο ; ([Y]/n) \E[0m"
read key -n1 -e -r 2> /dev/null
if [ "$key" == "n" ]; then
    echo
else
    echo -n -e '\E[31m'"* Συγύρισμα...\E[0m\n"
    sudo paccache -ruk1
    sudo paccache -rk1
    sudo paccache -c /διαδρομή/cache/aur -ruk0
    FILE=""
    DIR="/διαδρομή/cache/aur"
    # Κι αν είναι άδειο;
    if [ "$(ls --ignore='.*' $DIR)" ]; then
    sudo mv /διαδρομή/cache/aur/* /διαδρομή/αποθήκευσης/
    else
    echo -n -e '\E[31m'"* Το $DIR είναι άδειο \E[0m\n"
    fi
fi

# Βελτιστοποίηση
echo -n -e '\E[1;32m'"@  Να βελτιστοποιήσουμε τον pacman ; ([Y]/n) \E[0m"
read key -n1 -e -r 2> /dev/null
if [ "$key" == "n" ]; then
    exit 0
else
    echo -n -e '\E[32m'"* Νιώθω ωραία...\E[0m\n"
    sudo pacman-db-upgrade && sudo pacman-optimize && sync
fi

echo
echo "* Ολοκληρώσαμε με επιτυχία !"
exit 0
Τι κάνει τώρα όλο αυτό (με τη σειρά):
  1. Σας δείχνει τυχόν εγκατεστημένα πακέτα που αναφέρονται σε CVEs (αυτό συνήθως θα είναι άδειο, γιατί το Arch δεν έχει δική του λίστα επειδή τα πακέτα του είναι ως επί το πλείστον απείραχτα από το upstream. Προστέθηκε όμως πρόσφατα ως λειτουργία για έξτρα ασφάλεια, διότι οι χρήστες βαριούνται να ασχοληθούν σοβαρά).
  2. Ταξινομεί τους mirrors σύμφωνα με το χρόνο ενημέρωσης και την ταχύτητά τους.
  3. Σας δείχνει τους τρεις πιο πρόσφατους τίτλους από τα νέα του Arch (μπορεί και περισσότερους αλλά δε χρειάζεται).
  4. Κάνει αναβάθμιση των πακέτων.
  5. Κάνει αναβάθμιση των πακέτων του AUR.
  6. Καθαρίζει το σύστημα από τυχόν άχρηστα πακέτα (orphans). Εδώ χρειάζεται ελάχιστη προσοχή, γιατί μία στο τρισεκατομμύριο μπορεί να πιάσει και κάτι που σας χρειάζεται.
  7. Αποθηκεύει τρεις λίστες που περιέχουν α) όλα τα πακέτα που έχετε εγκατεστημένα, β) όλα τα πακέτα που έχετε εγκαταστήσει με δική σας πρόθεση (μόνο τα κύρια δηλαδή, χωρίς τις εξαρτήσεις τους) και γ) όλα τα εγκατεστημένα πακέτα από το AUR.
  8. Καθαρίζει την cache των πακέτων του pacman και του AUR.
  9. Κάνει μικρή βελτιστοποίηση του pacman.
Τι θα χρειαστείτε (αν δε θέλετε κάποια λειτουργία, απλά την αφαιρείτε από το script):
  • Το arch-audit για να βλέπετε τα CVEs.
  • Το reflector για την ταξινόμηση των mirrors. Στο script είναι ρυθμισμένο να βρίσκει τους 10 πιο πρόσφατα ενημερωμένους, πιο γρήγορους και με https (σημείωση εδώ: σε αντίθεση με αυτό που θεωρείται «αληθές» από πολλούς χρήστες, οι mirrors που προέρχονται από τη χώρα του χρήστη δεν είναι πάντα ενημερωμένοι, ούτε και οι πιο γρήγοροι).
Τι θα χρειαστεί να προσαρμόσετε ή να προσέξετε:
  • Στη γραμμή 55, αντικαταστήστε την εντολή με την αντίστοιχη που χρησιμοποιείτε για το AUR.
  • Στη γραμμή 89, προσθέστε στο " " τη διαδρομή όπου θέλετε να αποθηκεύονται οι λίστες.
  • Στις γραμμές 106 ως 115, βρίσκονται οι εντολές για καθαρισμό της cache. Όπως είναι τώρα, κρατάει μία έκδοση για κάθε πακέτο από τα επίσημα αποθετήρια και μεταφέρει όλα όσα είναι από το AUR σε άλλο φάκελο, τον οποίο θα χρειαστεί να ορίσετε, όπως και τη διαδρομή της cache του AUR. Η default διαδρομή της cache του AUR διαφέρει ανάλογα με το αν χρησιμοποιείτε κάποιον helper και με το αν έχετε ορίσει κάποια στο makepkg.conf. Ενδεικτικά, για το pacaur είναι $HOME/.cache/pacaur. Αν θέλετε να γίνεται καθαρισμός μόνο της cache του pacman, αφαιρέστε τις γραμμές που αναφέρονται στο AUR.
Disclaimer: το script είναι δοκιμασμένο, δεν κάνει κάτι «μυστήριο» και εγγυώμαι για τη λειτουργία του (στο βαθμό που μπορώ). Επειδή όμως εγώ δεν είμαι εσείς, με ό,τι συνεπάγεται αυτό, δοκιμάστε το μόνο αν καταλαβαίνετε τι κάνει και εφαρμόζοντας λίγη κοινή λογική. Για τυχόν απορίες, ερωτήσεις ή βρίσιμο αν μου ξέφυγε κάτι, ρίξτε ένα σφύριγμα. Κι όπως πάντα, απολαύστε υπεύθυνα.
Το άπλυτο κορμί το πλένεις. Καθαρίζει. Η βρόμικη ψυχή πώς πλένεται;
  Απάντηση
#2
Πολύ ωραίο!
  Απάντηση
#3
soulrain βγαλτο σε αρθρο και ανεβασε το και στο github, να μπορουν και να το παρουν και να το δουν, πολυ περισσοτεροι, απ'oτι μονο εδω σαν ποστ.
ονομαζομαι DarkGoth, και ειμαι «καλα»( ; )... το OsArena με θεραπευσε... (goth=!ok {equals} EMO)...  Emo
  Απάντηση
#4
@ Θέλετε να δείτε τα CVEs ; ([Y]/n)
* Μισό λεπτάκι...
./clean: γραμμή 10: arch-audit: εντολή δεν βρέθηκε
@ Να ενημερώσω τους mirrors ; ([Y]/n)
* Ενημέρωση...

sudo: reflector: δεν βρέθηκε η εντολή

______________________________________________________________________________________________________________

@ Να ενημερώσουμε και το AUR ; ([Y]/n)
* Ενημέρωση AUR...
./clean: γραμμή 55: pacaur: εντολή δεν βρέθηκε
Start : Δευ 21 Νοέ 2016 11:33:15 μμ EET
End : Δευ 21 Νοέ 2016 11:33:15 μμ EET

____________________________________________________________________________________________________________


@ Να ρίξουμε καθάρισμα ; ([Y]/n)
* Είμαστε τακτικά παιδάκια...

* Δε βρέθηκαν άχρηστες εξαρτήσεις

809 Total
138 Explicit
0 Aur

Αποθήκευση λιστών ...
./clean: γραμμή 91: /repos: Άρνηση πρόσβασης
./clean: γραμμή 92: /explicit: Άρνηση πρόσβασης
./clean: γραμμή 93: /aur: Άρνηση πρόσβασης

Έτοιμο !

@ Να κάνουμε χώρο ; ([Y]/n)
* Συγύρισμα...

==> no candidate packages found for pruning

==> finished: 447 packages removed (disk space saved: 979.8 MiB)
==> ERROR: cachedir '/διαδρομή/cache/aur' does not exist or is not a directory
ls: cannot access '/διαδρομή/cache/aur': Δεν υπάρχει τέτοιο αρχείο ή κατάλογος
* Το /διαδρομή/cache/aur είναι άδειο



:mad:

Ποια πακέτα μου λείπουν για τα δύο πρώτα πλαίσια που χώρισα; Επειδή δεν βρίσκει τις εντολές θεωρώ ότι λείπουν κάποια πακέτα που θα έπρεπε να έχω.

Γιατί άρνηση πρόσβασης μετά; Γενικά τι έχω γιατρέ; Θα ζω όταν δεν θα έχουμε μνημόνια;

Τέλος ως μέλος της παγκόσμιας κοινότητας εκφράζω τις ευχαριστίες μας για την προσφορά σας αγαπητέ!

:gen
  Απάντηση
#5
DarkGoth, post: 25816, member: 1051 είπε κι ελάλησε:soulrain βγαλτο σε αρθρο και ανεβασε το και στο github, να μπορουν και να το παρουν και να το δουν, πολυ περισσοτεροι, απ'oτι μονο εδω σαν ποστ.
Dark, μπορεί να προσαρμοστεί για να «διαφημιστεί» κι από εδώ, αν χρειαστεί. Ο λόγος που το έβαλα εδώ είναι γιατί, αν και οξύμωρο για το Arch, προορίζεται κυρίως για αρχάριους και δε θέλω να μπαίνουν στη λογική «κατεβάζω script απ' το internet». Οι περισσότεροι δεν ασχολούνται να κοιτάξουν, αν πρέπει να κάνουν έξτρα «κόπο». Άσε που δε θα ξέρουν και τι να ελέγξουν, παρ' όλο που είναι απλά if/else statements. Επίσης, το forum είναι πιο βολικό για ερωτήσεις και απορίες.
Το άπλυτο κορμί το πλένεις. Καθαρίζει. Η βρόμικη ψυχή πώς πλένεται;
  Απάντηση
#6
πραος, για το πρωτο το λεει καπου στη μεση, θα χρειαστεις το arch-audit και το reflector. η αρνηση προσβασης, μηπως θελει sudo;
ονομαζομαι DarkGoth, και ειμαι «καλα»( ; )... το OsArena με θεραπευσε... (goth=!ok {equals} EMO)...  Emo
  Απάντηση
#7
Soulrain Falls, post: 25818, member: 1313 είπε κι ελάλησε:Dark, μπορεί να προσαρμοστεί για να «διαφημιστεί» κι από εδώ, αν χρειαστεί. Ο λόγος που το έβαλα εδώ είναι γιατί, αν και οξύμωρο για το Arch, προορίζεται κυρίως για αρχάριους και δε θέλω να μπαίνουν στη λογική «κατεβάζω script απ' το internet». Οι περισσότεροι δεν ασχολούνται να κοιτάξουν, αν πρέπει να κάνουν έξτρα «κόπο». Άσε που δε θα ξέρουν και τι να ελέγξουν, παρ' όλο που είναι απλά if/else statements. Επίσης, το forum είναι πιο βολικό για ερωτήσεις και απορίες.

ενταξει, το github ναι, ειναι οντως ακαταλληλο για αποριες, κλπ. μπορεις ομως να το βαλεις σαν αρθρο στην κεντρικη σελιδα, για να το δουν ακομα πιο πολλοι. και στην κεντρικη σελιδα ειναι το ιδιο με εδω αλλωστε. εχεις τα σχολια αποκατω, οποτε οποιος θελει, ρωταει οτι θελει, με σχολιο αποκατω.
ονομαζομαι DarkGoth, και ειμαι «καλα»( ; )... το OsArena με θεραπευσε... (goth=!ok {equals} EMO)...  Emo
  Απάντηση
#8
Μουσιέ Πράε, αφού τα γράφω τα δύο πακέτα που χρειάζονται, γιατί δε διαβάζεις; Σου βάζω τγία.

Με τη σειρά όπως τα γράφεις, χρειάζεται το arch-audit (απ' το AUR) και το reflector (από τα κανονικά αποθετήρια). Το «Άρνηση πρόσβασης» είναι γιατί πρέπει να ορίσεις διαδρομή για τις λίστες (κι αυτό το γράφω) και για το «cannot access '/διαδρομή/cache/aur': Δεν υπάρχει τέτοιο αρχείο ή κατάλογος» χρειάζεται η διαδρομή της cache του AUR. Εσύ βλέπω δεν έχεις πακέτα απ' το AUR, οπότε αν θέλεις μπορείς να αφαιρέσεις τα σχετικά βήματα (γραμμές 47-59 και 108-117). Εναλλακτικά, μπορείς να βάλεις ένα # στην αρχή όλων αυτών των γραμμών, για να θεωρούνται «σχόλια» και να μην εκτελούνται και αν τις χρειαστείς ποτέ, αφαιρείς το #.

Επίσης, μην το τρέχεις με sudo. Θα ζητήσει κωδικό όταν χρειαστεί και η διάρκεια του sudo φτάνει για να καλύψει και τα υπόλοιπα.

EDIT: Για το «./clean: γραμμή 55: pacaur: εντολή δεν βρέθηκε», χρειάζεται αντικατάσταση της σχετικής εντολής, ανάλογα με τον AUR helper (κι αυτό το γράφω, τι άλλο να κάνω πχια; ). Εσύ μάλλον δε χρησιμοποιείς κάποιον, οπότε μπορείς να το αφαιρέσεις κι αυτό.
Το άπλυτο κορμί το πλένεις. Καθαρίζει. Η βρόμικη ψυχή πώς πλένεται;
  Απάντηση
#9
DarkGoth, post: 25820, member: 1051 είπε κι ελάλησε:ενταξει, το github ναι, ειναι οντως ακαταλληλο για αποριες, κλπ. μπορεις ομως να το βαλεις σαν αρθρο στην κεντρικη σελιδα, για να το δουν ακομα πιο πολλοι. και στην κεντρικη σελιδα ειναι το ιδιο με εδω αλλωστε. εχεις τα σχολια αποκατω, οποτε οποιος θελει, ρωταει οτι θελει, με σχολιο αποκατω.
Μπορεί ρε 'συ να μπει κι από 'δω στα «socials», όπου θα το δει μπόλικος κόσμος. Το ίδιο πράγμα είναι. Απλά, δεν ασχολούμαι εγώ με αυτά και θα χρειαστεί να το βάλει κάποιο άλλο παιδάκι.

Το blog έχει σχόλια αλλά είναι περισσότερο για τα άρθρα, όχι για βοήθεια. Γι' αυτό μερικές φορές λέμε στον κόσμο να ανοίγει ένα νήμα εδώ με απορίες. Άλλωστε, αυτός είναι από τους βασικούς λόγους που υπάρχουν τα fora γενικά.
Το άπλυτο κορμί το πλένεις. Καθαρίζει. Η βρόμικη ψυχή πώς πλένεται;
  Απάντηση
#10
Κάπως έτσι πιστεύω ότι πρέπει να λειτουργούν οι κοινότητες υποστήριξης. Δηλαδή να ακολουθείται η διαδικασία:
Ερώτηση --> Απαντήσεις --> Επιβεβαίωση ότι λύθηκε με κάποια απάντηση --> Αποδελτίωση εντολών/Σύνταξη script για τους επόμενους. Ετσι το script θα έχει ερμηνευτεί ήδη από τη διαδικασία. Βέβαια σηκώνει την ανάλογη συζήτηση και επικαιροποίηση-βελτίωση με τον καιρό, πράγμα που λύνεται τεχνικά, και αφήνει παρακαταθήκες για το μέλλον -αυτό είναι το σημαντικότερο.
СМЕРТЬ НАСИПЬИКАМ ТРУДЯШИХСЯ
  Απάντηση


Ίσως Σχετικά Νήματα...
Νήμα Άτομο Απαντήσεις Βλεφαριάσματα Τελευταία Ανάρτηση
  script run as root απο απλο χρηστη georgezaf 2 727 04.01.2014 00:00
Τελευταία Ανάρτηση: LoneShadow
  εγκατασταση πακετων aur (packer) [Λύθηκε] blackm76 6 1.003 21.04.2013 12:37
Τελευταία Ανάρτηση: blackm76

Πάμε στο Forum:


Πλάσματα σουλατσάρουν στο νήμα: 1 Επισκέπτης(ες)