Hits : 6159

PACkage Organizer :: Mini How To 


Paco


http://paco.sourceforge.net/


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
όλων των αρχείων που γίνονται εγκατάσταση καθώς και την ακριβή διαδρομή τους.


Μερικές από τις δυνατότητες που έχει είναι οι εξής:


  • Να κρατάει κεντρικά και συγκεντρωτικά την εγκατάσταση ενός προγράμματος από πηγαίο κώδικα
  • Να γίνεται η διαγραφή όλων των αρχείων που έγιναν εγκατάσταση με μία εντολή
  • Να ΜΗΝ διαγράφει αρχεία τα οποία χρησιμοποιούνται και από άλλα προγράμματα που έχουν γίνει εγκατάσταση.

top


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.


top


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


top


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


top


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
...

top


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


top


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


top


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


top


Εγκατάσταση / Απεγκατάσταση Λογισμικού


Για να γίνει η καταγραφή και εγκατάσταση ενός προγράμματος χρειάζεται να 
ενεργοποιήσουμε την παράμετρο -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


top


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


top


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


εύκολο !


top


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

top


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


top