PACkage Organizer :: Mini How To
Contents
Paco
http://paco.sourceforge.net/doc/README
Paco is a source code package organizer for Unix/Linux systems.
latest version: 2.0.7 (30/08/2009)
Ο καλύτερος τρόπος για να εγκαταστήσεις ένα πρόγραμμα και κυρίως μία υπηρεσία είναι όταν
μεταγλωττίζεις τον πηγαίο κώδικα της εφαρμογής σύμφωνα με τις ανάγκες που πρέπει να καλύψεις.
Δυστυχώς όμως όταν πραγματοποιείς την εγκατάσταση ενός προγράμματος από τον πηγαίο κώδικά του,
δεν γνωρίζεις ποια είναι τα ακριβή αρχεία που εγκαταστήθηκαν στο μηχάνημά σου και που ακριβώς πέρασαν.
Το λογισμικό paco (PACkage Organizer) καταγράφει (wraps) το αποτέλεσμα (τις αλλαγές στο σύστημα αρχείων)
που προκύπτει από την εγκατάσταση ενός προγράμματος από τον πηγαίο του κώδικα. Τα περισσότερα
προγράμματα που γίνονται εγκατάσταση από πηγαίο κώδικα πραγματοποιούν την εγκατάσταση στο σύστημα
αρχείων με την εντολή make install. Το λογισμικό paco έχει την δυνατότητα καταγραφής σε μορφή logs
όλων των αρχείων που γίνονται εγκατάσταση καθώς και την ακριβή διαδρομή τους.
Μερικές από τις δυνατότητες που έχει είναι οι εξής:
- Να κρατάει κεντρικά και συγκεντρωτικά την εγκατάσταση ενός προγράμματος από πηγαίο κώδικα
- Να γίνεται η διαγραφή όλων των αρχείων που έγιναν εγκατάσταση με μία εντολή
- Να ΜΗΝ διαγράφει αρχεία τα οποία χρησιμοποιούνται και από άλλα προγράμματα που έχουν γίνει εγκατάσταση.
Installation
$ wget -c http://heanet.dl.sourceforge.net/sourceforge/paco/paco-2.0.7.tar.bz2 $ tar jxvf paco-2.0.7.tar.bz2 $ ./configure --disable-gpaco --enable-scripts $ make
Κι εδώ γινόμαστε διαχειριστές:
# make install
Και για να καταγράψουμε και την εγκατάσταση του paco:
# make logme
Με τις παραπάνω εντολές έχουμε εγκαταστήσει το paco στον υπολογιστή μας.
ΥΠΟΣΗΜΕΙΩΣΗ:
Η επιλογή disable-gpaco ΔΕΝ μας κάνει εγκατάσταση του gui εργαλείου του paco.
Ο λόγος που ΔΕΝ το χρησιμοποιώ είναι γιατί θέλει πλήθος από gtk libraries.
Simple Usage
Default Path of paco logs: /var/log/paco/
Για να δούμε εάν δουλεύει μπορούμε (και καλό είναι) να το χρησιμοποιήσουμε
στην μόλις εγκατεστημένη εφαρμογή μας, δλδ το ίδιο το paco.
Ως διαχειριστές πληκτρολογούμε:
$ paco -lD make install
Για να ελέγξουμε ότι η εγκατάσταση πραγματοποιήθηκε και πλέον έχει γίνει καταγραφή
όλων των αρχείων του προγράμματος πληκτρολογούμε τις παρακάτω εντολές:
$ paco -a paco-2.0.7 $ paco -f paco paco-2.0.7: /usr/local/share/paco/README /usr/local/lib/libpaco-log.a /usr/local/lib/libpaco-log.la /usr/local/lib/libpaco-log.so /usr/local/lib/libpaco-log.so.0 /usr/local/lib/libpaco-log.so.0.0.0 /usr/local/bin/paco /usr/local/etc/pacorc /usr/local/lib/pkgconfig/paco.pc /usr/local/man/man5/pacorc.5 /usr/local/man/man8/paco.8 /usr/local/man/man8/pacoball.8 /usr/local/man/man8/rpm2paco.8 /usr/local/man/man8/superpaco.8 /usr/local/share/paco/faq.txt /usr/local/share/paco/pacorc /usr/local/bin/ocap /usr/local/bin/pacoball /usr/local/bin/rpm2paco /usr/local/bin/superpaco
Basic Options
Synchronize Database
Το πρόγραμμα paco διατηρεί μία βάση την οποία πρέπει να ενημερώνουμε συχνά (τουλάχιστον ανά 7 ημέρες).
Με αυτό τον τρόπο πραγματοποιείται ο συγχρονισμός του αρχείου καταγραφής με το σύστημα αρχείων για
το πρόγραμμα που έχουμε ήδη καταγράψει. Εάν για παράδειγμα ένα αρχείο έχει συμπιεστεί (bzip / gzip) θα το
εντοπίσει επίσης. Η εντολή για να πραγματοποιήσουμε update για όλα τα logs (δλδ για όλα τα προγράμματα
που έχουμε καταγράψει) είναι η εξής:
# paco -ua
Επίσης είναι αρκετά χρήσιμο να μπει ένα cronjob ώστε να γίνεται αυτόματα:
# crontab -l 30 0 * * 0 /usr/local/bin/paco -ua
ή εναλλακτικά:
@weekly /usr/local/bin/paco -ua
Listing Software
Φυσικά ο λόγος που έχουμε εγκαταστήσει το paco είναι για να καταγράφουμε τις εγκαταστάσεις μας
και να είμαστε σε θέση να βλέπουμε και να ενημερώνουμε ανά πάσα στιγμή τυχόν αλλαγές. Για να μπορέσουμε
να δούμε όλα τα προγράμματα που έχουμε καταγράψει πληκτρολογούμε:
$ paco -a
Με αυτό τον τρόπο θα δούμε το σύνολο των προγραμμάτων σε λίστα. Εάν επιθυμούμε να δούμε σε μία μονο στήλη
τα αποτελέσματα της παραπάνω εντολής τότε χρειάζεται να πληκτρολογήσουμε το εξής:
$ paco -a1
Από τα πιο χρήσιμα και λειτουργικά options που έχει το paco είναι ότι μπορούμε να ταξινομήσουμε την λίστα με το λογισμικό που έχουμε εγκαταστήσει
με βάση την ημερομηνία (και εάν θέλουμε και την ώρα). Έτσι εάν χρησιμοποιούμε προγράμματα από κάποιο version control ή δεν έχουμε καταγράψει
το πρόγραμμα με βάση την έκδοσή του, μπορούμε εύκολα να δούμε με μια ματιά πότε πραγματοποιήσαμε την εγκατάσταση του προγράμματος.
Για να το κάνουμε αυτό, πολύ απλά γράφουμε:
$ paco -add --sort=date
Το αποτέλεσμα είναι κάτι σαν το παρακάτω:
... 28-Aug-2009 08:01 xarchiver.git 28-Aug-2009 15:38 mirage.svn 04-Sep-2009 10:51 mousepad-nick_0_3 07-Sep-2009 08:52 ristretto.git 07-Sep-2009 09:07 glib-2.21.6 07-Sep-2009 09:09 xfce4-clipman-plugin.git 07-Sep-2009 09:21 libsoup.git 07-Sep-2009 09:26 midori.git 07-Sep-2009 10:35 pidgin-2.6.2 08-Sep-2009 09:23 paco-2.0.7 ...
Listing Files
Μέχρι στιγμής έχουμε δει πως μπορούμε να συγχρονίσουμε την βάση των εγκατεστημένων προγραμμάτων
και πως να δούμε όλα τα προγράμματα που έχουμε εγκαταστήσει. Φυσικά το πιο σημαντικό από όλα είναι
να εντοπίσουμε όλα τα αρχεία τα οποία εγκαταστήθηκαν για ένα συγκεκριμένο πρόγραμμα. Για να γίνει αυτό
χρειάζεται να πληκτρολογήσουμε την παρακάτω εντολή:
$ paco -f openldap
Η παραπάνω εντολή θα μας εμφανίσει όλα τα αρχεία που έχουμε καταγράψει κατά την εγκατάσταση. Δηλώνει όμως ότι
έχουμε εγκατεστημένο μόνο μία έκδοση του παραπάνω προγράμματος. Πιο σωστά πρέπει να γράψουμε το εξής:
$ paco -f openldap-2.3.39
Εάν θέλουμε να δούμε πόσα αρχεία έχουμε εγκαταστήσει για ένα πρόγραμμα:
$ paco -F paco 20 paco-2.0.7
Εάν θέλουμε να δούμε ποια είναι η έκδοση του προγράμματος που έχουμε εγκαταστήσει ή εάν έχουμε εγκαταστήσει και
καταγράψει παραπάνω από 2 εκδόσεις χρειάζεται να κάνουμε expand το όνομα από την βάση. Αυτό γίνεται εύκολα ως εξής:
$ paco -x php php-4.4.7 php-5.2.5 $ paco -f php-5.2.5
Shared Files
Εάν θέλουμε να δούμε μήπως υπάρχει κάποιο αρχείο το οποίο "μοιραζόμαστε" με ένα άλλο πρόγραμμα:
$ paco -fc php php-5.2.4: /usr/local/apache2/conf/httpd.conf $ paco -fc httpd-2.0.61 httpd-2.0.61: /usr/local/apache2/conf/httpd.conf
και γενικά εάν θέλουμε να δούμε για ένα πρόγραμμα το αρχείο το οποίο "μοιραζόμαστε"
με άλλο πρόγραμμα:
$ paco -fcw php-5.2.4 php-5.2.4: (httpd-2.0.61) /usr/local/apache2/conf/httpd.conf
Και τελικά εάν θέλουμε να δούμε και το μέγεθος του αρχείου που "μοιραζόμαστε":
$ paco -fcws php php-5.2.4: (httpd-2.0.61) 36k /usr/local/apache2/conf/httpd.conf
Usefull Options
Παρακάτω θα περιγράψω μερικά από τα πιο σημαντικά option του paco.
Ημερομηνία εγκατάστασης:
$ paco -d php-5.2.5 29-Nov-2007 php-5.2.5
Ημερομηνία και ώρα:
$ paco -dd paco 01-Sep-2008 18:46 paco-2.0.5
Μέγεθος που έχουν καταλάβει τα εγκαταστημένα αρχεία:
$ paco -s php-5.2.5 44M php-5.2.5
Μέγεθος κάθε αρχείου:
$ paco -fs php-5.2.5 36k /usr/local/apache2/conf/httpd.conf 36k /usr/local/apache2/conf/httpd.conf.bak 20M /usr/local/apache2/modules/libphp5.so ... 4k /usr/local/share/man/man1/php-config.1 12k /usr/local/share/man/man1/php.1 4k /usr/local/share/man/man1/phpize.1
Πληροφορίες εγκατεστημένου προγράμματος:
$ paco -i glib-2.21.6 ------------- glib-2.21.6 ------------- Name: GLib Version: 2.21.6 Summary: C Utility Library
ή εάν υπάρχουν παραπάνω από μία εκδόσεις:
$ paco -i php ----------- php-5.2.4 ----------- Name: php Version: 5.2.4 ----------- php-4.4.8 ----------- Name: php Version: 4.4.8
Πληροφορίες ρύθμισης (είναι το configuration από τον πηγαίο κώδικα):
paco -o pidgin --disable-screensaver --disable-vv --disable-meanwhile --disable-nm --disable-tcl
Μετά από κάθε update της database του paco, μπορεί να εντοπιστεί κάποιο αρχείο να λείπει (πιθανά κάποιο λανθασμένο rm):
Με την παρακάτω εντολή βλέπουμε τον αριθμό που λείπουν:
$ paco -M elinks [1] elinks-0.11.4
βλέπουμε λείπει ένα αρχείο, για να δούμε ποιο:
paco -m elinks elinks-0.11.4: /usr/local/bin/elinks
Εγκατάσταση / Απεγκατάσταση Λογισμικού
Για να γίνει η καταγραφή και εγκατάσταση ενός προγράμματος χρειάζεται να
ενεργοποιήσουμε την παράμετρο -l (log) στο paco. Εάν θέλουμε να δώσουμε
εμείς το όνομα της καταγραφής στην βάση του paco τότε χρησιμοποιούμε την παράμετρο
-p (package) και στην συνέχεια το όνομα που θέλουμε. Εάν θέλουμε να πάρει το όνομα
του καταλόγου τότε χρειάζεται να χρησιμοποιήσουμε την παράμετρο -D (dirname).
Για να γίνουνε όλα αυτά κατανοητά δείτε τα παρακάτω παραδείγματα:
# pwd /usr/local/source/openldap-2.3.39 # paco -lp "open-ldap v2.3.39" make install
όπου θα κάνει την καταγραφή με όνομα αρχείου open-ldap v2.3.39
ή εναλλακτικά:
# pwd /usr/local/source/openldap-2.3.39 # paco -lD make install
όπου θα γίνει η καταγραφή με όνομα: openldap-2.3.39
Για να απεγκαταστήσουμε ένα πρόγραμμα και ταυτόχρονα να διαγραφούν όλα τα αρχεία
τα οποία καταγράφτηκαν κατά την εγκατάσταση πληκτρολογούμε:
# paco -r openldap-2.3.39
ΠΡΟΣΟΧΗ:
Εάν υπάρχουν αρχεία τα οποία χρησιμοποιούνται από άλλο πρόγραμμα και έχουν καταγραφεί μέσω του paco ΔΕΝ
θα διαγραφούν και αυτά. Οπότε το έταιρο πρόγραμμά μας να συνεχίσει να λειτουργεί. Υπάρχει βέβαια παράμετρος
που διαγράφει και τα share files αλλά καλύτερα να την ψάξει κανείς μόνος του.
Εάν για οποιοδήποτε λόγο θέλει κάποιος να διαγράψει το αρχείο καταγραφής μίας εγκατάστασης από την βάση που
χρησιμοποιεί το πρόγραμμα paco τότε υπάρχει η παράμετρος -U (unlog) και παράδειγμα χρήσης είναι το εξής:
# paco -U openldap-2.3.39
Add a program to paco
Όταν έχουμε εγκαταστήσει ένα πρόγραμμα χωρίς την χρήση του paco
και θέλουμε να περάσουμε ένα νέο πρόγραμμα στην βάση του paco τότε
απλά τρέχουμε την εντολή find. Παράδειγμα:
$ find /opt/Adobe/ | paco -lp Adobe-8.1.2
οπότε στην συνέχεια:
$ paco -i Adobe-8.1.2 ------------- Adobe-8.1.2 ------------- Name: Adobe Version: 8.1.2 $ paco -F Adobe-8.1.2 440 Adobe-8.1.2
Upgrade paco
Πως μπορεί κανείς να κάνει αναβάθμιση του λογισμικού paco με το πρόγραμμα paco !
Κατεβάζουμε την νέα έκδοση του paco, έστω λοιπόν ότι έχουμε την έκδοση paco-2.0.3
και θέλουμε να αναβαθμίσουμε στην έκδοση 2.0.7:
$ wget -c http://heanet.dl.sourceforge.net/sourceforge/paco/paco-2.0.7.tar.bz2 $ tar jxvf paco-2.0.7.tar.bz2 $ cd paco-2.0.7 $ ./configure --disable-gpaco --enable-scripts $ make $ su -m - # paco -rB paco-2.0.3 # make install # make logme
εύκολο !
pacoball
Έαν έχετε κάνει την εγκατάσταση του paco με την επιλογή στο configuration enable-scripts τότε
έχετε εγκαταστήσει το pacoball. Το pacoball μας δίνει την δυνατότητα να πάρουμε ένα αντίγραφο της
εγκατάστασής από ένα πρόγραμμα που καταγράψαμε και εγκαταστήσαμε μέσω του paco. Αυτό μας δίνει
την ευκολία και του backup αλλά και την άμεση δημιουργία ενός πακέτου που μπορεί να χρησιμοποιηθεί
σε παρόμοια εγκατεστημένη διανομή (ειδικά σε συστήματα mirroring ή production που δεν έχουν compiler
και τα πάντα γίνονται στο development μηχάνημα !!!). Παράδειγμα χρήσης είναι το εξής:
$ paco -x rsnapshot rsnapshot-1.3.0 $ paco -f rsnapshot rsnapshot-1.3.0: /opt/dnl/rsnapshot-1.3.0/rsnapshot.1 /usr/local/bin/rsnapshot /usr/local/bin/rsnapshot-diff /usr/local/etc/rsnapshot.conf.default /usr/local/share/man/man1/rsnapshot.1 $ pacoball -b rsnapshot-1.3.0 $ ls -l rsnapshot-1.3.0.paco.tar.bz2 -rw-r--r-- 1 ebal ebal 53988 2007-12-11 23:19 rsnapshot-1.3.0.paco.tar.bz2 $ tar jtvf rsnapshot-1.3.0.paco.tar.bz2 -rw-r--r-- ebal/ebal 37328 2007-07-14 23:39 opt/dnl/rsnapshot-1.3.0/rsnapshot.1 -rwxr-xr-x root/root 200992 2007-07-14 23:39 usr/local/bin/rsnapshot -rwxr-xr-x root/root 7456 2007-07-14 23:39 usr/local/bin/rsnapshot-diff -rw-r--r-- root/root 7051 2007-07-14 23:39 usr/local/etc/rsnapshot.conf.default -rw-r--r-- root/root 37328 2007-07-14 23:39 usr/local/share/man/man1/rsnapshot.1 -rw-r--r-- root/root 626 2007-12-09 01:02 var/log/paco/rsnapshot-1.3.0
superpaco
Με την εντολή superapaco μπορείς να καταγράψεις την εγκατάσταση ενός
- deb ( debian package)
- rpm ( redhat package )
- tar.gz ( slackware package )
ώστε τα αρχεία τους να προστεθούν στην βάση δεδομένων του paco. Είναι μία καλή λύση
ώστε να μπορούμε να εντοπίσουμε ένα αρχείο το οποίο μπορεί να είναι share από διαφορετικά προγράμματα.
Απλή η χρήση του :
$ sudo superpaco openvpn_2.0.9-8_i386.deb
και βλέπουμε ότι ενημερώθηκε η βάση ως:
$ paco -f openvpn | head openvpn-2.0.9-8: /etc/default/openvpn /etc/init.d/openvpn /etc/network/if-down.d/openvpn /etc/network/if-up.d/openvpn /etc/openvpn/update-resolv-conf /usr/include/openvpn/openvpn-plugin.h /usr/lib/openvpn/openvpn-auth-pam.so /usr/lib/openvpn/openvpn-down-root.so /usr/sbin/openvpn