posted by qubix on March 31, 2013

Αφού έστησα ένα pc με ένα debian unstable (siduction) και όλα πήγαν ρολόι, ανακάλυψα πως η ανάλυση του monitor είχε κολλήσει στα 1024x768 ενώ το monitor το ίδιο μπορεί να φτάσει τα 1280x1024.
Αρχικά σκέφτηκα πως το πρόβλημα μπορεί να είναι το οτι σύνδεσα το monitor στην 2η DVI έξοδο της κάρτας ή πως κάτι δεν πήγε καλά γιατί η κάρτα έχει μόνο DVI εξόδους αλλά τίποτα από αυτά δεν έφταιγε.
Απλά..απουσίαζε η ανάλυση που ήθελα. Με το xrandr προσπάθησα να δω τι συμβαίνει:


$xrandr -q
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
S-video disconnected (normal left inverted right x axis y axis)
DVI-1 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768       60.0* 
   800x600        60.3     56.2
848x480 60.0
640x480 59.9

Όντως δεν υπήρχε τέτοιο mode που ήθελα. Η λύση είναι απλή: θα το προσθέσω! Το γιατί δεν υπήρχε αυτό ήταν άλλο θέμα και απλά ήθελα να παίξει με τη σωστή ανάλυση η οθόνη. Αρχικά με το gtf (calculate VESA GTF mode lines) θα βρούμε τις παραμέτρους που χρειαζόμαστε:

$gtf 1280 1024 60
   1280x1024 @ 60.00 Hz (GTF) hsync: 63.60 kHz; pclk: 108.88 MHz
  Modeline "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060  -HSync +Vsync

Μετά θα βάλουμε ένα νέο mode στο xrandr το 1280x1024_60.00. To xrandr παίρνει GTF mode lines ακριβώς αυτό που πήραμε με το gtf δλδ! :<br/>

$xrandr --newmode "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060 -HSync +Vsync

Ξανά xrandr -q για να δούμε οτι όντως υπάρχει αυτό το νέο mode:

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
S-video disconnected (normal left inverted right x axis y axis)
DVI-1 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768       60.0* 
   800x600        60.3     56.2
848x480 60.0
640x480 59.9
1280x1024_60.00 (0x157) 108.9MHz h: width 1280 start 1360 end 1496 total 1712 skew 0 clock 63.6KHz v: height 1024 start 1025 end 1028 total 1060 clock 60.0Hz

Τώρα χρειάζεται να το προσθέσουμε στο output μας (DVI-1) ώστε να το χρησιμοποιήσει το xrandr και να αλλάξει η ανάλυση:

$xrandr --addmode DVI-1 "1280x1024_60.00"

Για τέλος αρκεί να πούμε στο xrandr να χρησιμοποιήσει το νέο mode:

$xrandr --output DVI-1 --mode "1280x1024_60.00"

Αυτό ήταν όλα φαίνονται ωραία και πάλι!

posted by qubix on March 29, 2013

Αν έχετε δει ποτέ το παραπάνω error, ΜΗΝ ψάχνετε για το χαμένο .htaccess file..το πραγματικό πρόβλημα είναι στα δικαιώματα που έχει το αρχείο το οποίο προσπαθείτε να προσπελάσετε ή ο κατάλογος στον οποίο βρίσκεται

posted by qubix on February 8, 2012

Χθες πήγα να δω μια εφαρμογή java από τον iceweasel και..δεν υπήρχε το plugin. Σα  να μην έφτανε αυτό, στα repositories του debian (και μερικών άλλων) δεν βρήκα τίποτα σχετικό πέρα από το ότι ένα plugin εγκαθίσταται μαζί με την java στο σύστημα...

οπότε ποιό είναι αυτό το plugin? με λίγο ψάξιμο βρήκα πως είναι το libnpjp2.so και τα βήματα για να το δει ο browser είναι εν ολίγοις:

1) locate libnpjp2.so *

στο σύστημά μου το βρήκε στο /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/i386/libnpjp2.so

2) cd /usr/lib/mozilla/plugins/

και φτιάχνουμε ένα symlink στο παραπάνω plugin

ln -s /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/i386/libnpjp2.so libnpjp2.so

3) restart τον browser

 

*)για να υπάρχει αυτό το plugin πρέπει να είναι εγκατεστημένη η java στο σύστημα. Συνήθως μιας που όλοι και όλες χρησιμοποιούμε το open/libre office, εγκαθίσταται με αυτό.
 Anywayz για να δούμε αν την έχουμε:

dpkg -l | grep java

θα πρέπει να μας βγάλει ότι έχουμε είτε την open είτε τη sun java implementation

Αν όχι την εγκαθιστούμε με apt-get install

posted by qubix on January 30, 2013

Λοιπόν ήρθε η ώρα να εγκαταστήσω έναν nginx. Το μηχανάκι στο οποίο θα κάνω το πείραμα έχει ήδη επάνω ένα lamp installation οπότε για αρχή θα απεγκαταστήσω τον apache


apt-get --purge remove apache2*
Ωραία τώρα που ξεφορτωθήκαμε τον apache, πάμε να βάλουμε τον nginx

apt-get install nginx php5-fpm
Reading package lists... Done
Building dependency tree
Reading state information... Done The following extra packages will be installed: nginx-common nginx-full The following NEW packages will be installed: nginx nginx-common nginx-full php5-fpm 0 upgraded, 4 newly installed, 0 to remove and 17 not upgraded. Need to get 3,209 kB of archives. After this operation, 9,382 kB of additional disk space will be used. Do you want to continue [Y/n]? y
Μετά πάμε να ρυθμίσουμε λίγο το php5-fpm. Τι είναι όμως αυτό το fpm? Κάνοντας ένα apt-cache show php5-fpm παίρνουμε το αποτέλεσμα: Description-en: server-side, HTML-embedded scripting language (FPM-CGI binary) This package provides the Fast Process Manager interpreter that runs as a daemon and receives Fast/CGI requests. Μάλιστα, τώρα που μάθαμε τι είναι αυτό που θα ρυθμίσουμε και που εγκαταστήσαμε, πάμε στο

nano /etc/php5/fpm/php-fpm.conf
Σκοπός μας είναι να αλλάξουμε μερικές μεταβλητές τις οποίες δυστυχώς δεν βρίσκουμε στο παραπάνω αρχείο και πρέπει να πάμε στο conf του pool [www] του php5-fpm. Τα pools είναι ένας τρόπος να παραμετροποιούμε διαφορετικά sites ή groups από sites στα οποία θα συμπεριφέρεται διαφορετικά ο php5-fpm daemon.

nano /etc/php5/fpm/pool.d/www.conf
Στο αρχείο αυτό βάζουμε τα παρακάτω: pm.max_children = 25 pm.start_servers = 4 pm.min_spare_servers = 2 pm.max_spare_servers = 10 pm.max_requests = 500 request_terminate_timeout = 35s και κάνουμε ένα restart τον daemon:

/etc/init.d/php5-fpm restart
Τα παραπάνω values είναι ενδεικτικά για 1g RAM και εσείς ανάλογα με το μηχάνημά σας μπορείτε να τα τροποποιήσετε αναλόγως.
Σειρά τώρα έχει ο nginx, θέλουμε απλά να του βάλουμε τα παρακάτω: client_max_body_size 20M; client_body_buffer_size 128k; Το αρχείο είναι το /etc/nginx/nginx.conf. Αν τα παραπάνω δεν τα βρίσκουμε, τα βάζουμε μέσα στο http block, στο οποίο υπάρχουν διάφορα ενδιαφέροντα όπως gzip support, που είναι τα logs κλπ κλπ.
Τώρα πάμε να δούμε λίγο το default profile στο sites-enabled:

nano /etc/nginx/sites-enabled/default
To πρώτο που έκανα είναι να αλλάξω το root path από /usr/share/nginx σε /var/www .Επίσης έκανα comment τη γραμμή listen [::]:80 default_server; που είναι για ipv6.
Τώρα πάμε να του πούμε πως θέλουμε τα php scripts να τα περνάει στο php5-fpm. To section αυτό είναι κάτω από το: # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
Και το κάνουμε κάπως έτσι:

 fastcgi_split_path_info ^(.+.php)(/.+)$;
 # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
 # With php5-cgi alone:
 # fastcgi_pass 127.0.0.1:9000;
 # With php5-fpm:
 fastcgi_pass unix:/var/run/php5-fpm.sock;
 fastcgi_index index.php;
 include fastcgi_params;
Όπως βλέπουμε το κομμάτι με το από CGI παραμένει commented, αφού εμείς έχουμε fcgi με το php5-fpm. Καλό είναι να βάλουμε τα .htaccess files να μην είναι προσβάσιμα οπότε:

 # deny access to .htaccess files, if Apache's document root
 # concurs with nginx's one
 location ~ /.ht {
    deny all;
 }
Μετά από όλα αυτά, πάμε να κάνουμε reload τον nginx:

/etc/nginx/nginx reload
Σε περίπτωση σφάλματος, κοιτάμε στο /var/log/nginx/error.log. Για παράδειγμα εγώ είχα ενεργοποιήσει το ssl, το οποίο χτυπούσε και δεν μπορούσε να ξεκινήσει ο nginx.

Τεστάρουμε τώρα την εγκατάστασή μας πηγαίνοντας στο http://localhost

posted by qubix on January 15, 2013

Λοιπόν, το καλό με το linux είναι πως μπορείς να το έχεις χρόνια χωρίς να κάνεις επανεγκαταστάσεις. Ακόμη και να αλλάξεις διανομή μπορείς (εφόσον είναι στην ίδια οικογένεια πχ από debian testing σε aptosid σε siduction)! Το κακό είναι πως έτσι μπορεί να μαζευτεί πολλή σαβούρα.

Μερικά απλά βηματάκια
1) Κοιτάμε τι πακέτα έχουμε εγκαταστήσει και όσα τα θεωρούμε πλέον αχρείαστα ή άχρηστα, τα απεγκαθιστούμε με:
apt-get --purge remove my_useless_package
το όρισμα --purge remove το βάζουμε ώστε να μην κρατηθούν τα configuration αρχεία, κάτι που εκ του default το apt/dpkg/synaptic/aptitude έχουν ως πρακτική.

2) Καθαρίζουμε τα cached αρχεία του apt
Παρόλο που σε κάποιες περιπτώσεις είναι χρήσιμο να υπάρχουν τα πακέτα που έχουμε εγκαταστήσει σε μορφή deb, πράγμα που το apt κάνει εξ'ορισμού στο /var/apt/cache, γενικώς μπορούμε να τα στείλουμε στον κουβά κάνοντας:
apt-get clean

3) Καθαρίζουμε πλέον άχρηστα πακέτα που μας λέει το apt
Αν το apt μας ειδοποιήσει πως υπάρχουν πακέτα τα οποία δεν χρειάζονται πια, καλό είναι να τα βγάλουμε με:
apt-get autoremove

4) Ψάχνουμε για τυχόν ορφανά πακέτα
Εγκαθιστώντας το deborphan μπορούμε να δούμε μια λίστα με πακέτα τα οποία κάποια στιγμή ίσως εγκαταστάθηκαν ως εξαρτήσεις και πλέον δεν χρειάζονται πουθενά:
H εντολή είναι... deborphan :P
Για να βγάλουμε τα πακέτα αυτά μπορούμε να κάνουμε:
apt-get --purge remove `deborphan`
Στο bash shell ότι βάζουμε μέσα σε "`" αντικαθίσταται με το output του.

5) Επειδή είναι πιθανό να έχουν ξεμείνει configuration αρχεία από παλιότερες εγκαταστάσεις ή από παλιότερες εκδώσεις προγραμμάτων, καλό είναι κατά διαστήματα να ψάχνουμε για τέτοια configuration αρχεία. Ένας τρόπος είναι:
dpkg --list | grep '^rc\b' | awk '{ print $2 }'
Τι κάνει αυτή η εντολή:
- dpkg --list : πετάει μια λίστα με όλα τα πακέτα που υπάρχουν στο σύστημα
- grep '^rc\b' : ψάχνει για το string 'rc' στο output του dpkg --list και επιστρέφει μόνο αυτά που βρίσκει
- awk '{ print $2 }' : από αυτά που βρήκε η grep, μας διαλέγει μόνο τη δεύτερη στήλη η οποία είναι το package name.

Αν στο τέλος περάσουμε το αποτέλεσμα πάλι στο dpkg μέσω xargs, μπορούμε να τα διώξουμε οριστικά!
dpkg --list | grep '^rc\b' | awk '{ print $2 }'| xargs dpkg -P
Το -P στο dpkg είναι το PURGE.
Την ίδια λειτουργία μπορούμε να κάνουμε και με το deborphan: deborphan --find-config

Ορφανά, άχρηστα, παλιά πακέτα είναι αυτά που είτε δεν χρησιμοποιούνται πλέον από το σύστημα, είτε δεν υπάρχουν στα repositories. Οι λόγοι είναι διάφοροι όπως:
- δεν υπάρχει πλέον maintainance του πακέτου
- το πακέτο μπορεί να έχει μείνει ορφανό χωρίς developer εδώ και καιρό και να μην είχε και πολλούς χρήστες οπότε και η debian QA ομάδα μπορεί να το έχει απομακρύνει
- η τελευταία έκδοση του εν λόγω software μπορεί να έχει πακεταριστεί με άλλο όνομα είτε επειδή έχουν γίνει πολλές αλλαγές, είτε για να μην υπάρχει confict με την παλιότερη έκδοση για λόγους συμβατότητας
- το πρόγραμμα έχει αλλάξει όνομα, ο maintainer το έχει μετονομάσει αλλά έχει κρατήσει κάποια μεταβατικά πακέτα με το παλιό και μετά αυτά έχουν απομακρυνθεί από τα repos.

Όποιος και να 'ναι ο λόγος, πλέον ξέρετε πως να ξεφορτωθείτε τα παλιά αυτά πακέτα!

posted by qubix on January 11, 2013

Σε περίπτωση που ο chromium δεν μπορεί να δει το νεοεγκατεστημένο gnash, τσεκάρουμε 2 πράγματα:
1) αν είναι εγκατεστημένο το πακέτο browser-plugin-gnash και αν οχι το βάζουμε
2) σε περίπτωση που δεν υπάρχει καθόλου στα repos, ψάχνουμε για το mozilla-plugin-gnash και το εγκαθιστούμε. Μετά κάνουμε ένα symlink από τον φάκελο plugins του mozilla στον αντίστοιχο του chromium (μπορεί να είναι πχ /usr/lib/mozilla/plugins και αντίστοιχα για chromium) και αν δεν υπάρχει καν φάκελος plugins στον chromium, τον δημιουργούμε.

Μετά θα πρέπει να βλέπουμε κανονικά βίντεο και να βαράμε youtoubιάδες με χέβυ μέταλ :P

posted by qubix on January 11, 2013

Προσπαθώντας να κάνω ένα dist-upgrade, κόλλησε η διαδικασία. Συγκεκριμένα:


Unpacking replacement wine ...
dpkg: error processing /var/cache/apt/archives/wine1.5-i386_1.5.19-0ubuntu3.1_i386.deb
trying to overwrite '/usr/share/applications/wine.desktop', which is also in package wine-bin
Η λύση είναι απλή, λέμε στο dpkg να κάνει force-overwrite για κάθε περίπτωση για την οποία αποτυγχάνει:

dpkg -i --force-overwrite /var/cache/apt/archives/wine1.5-i386_1.5.19-0ubuntu3.1_i386.deb 
Στη δική σας περίπτωση θα βάλετε το αντίστοιχο /var/cache/.../..
Επειδή τώρα είναι πιθανό να εκκρεμούν και άλλα πακέτα προς εγκατάσταση από τα οποία μπορεί να εξαρτάται και το πακέτο που είχε κολλήσει, μετά τρέχουμε την

apt-get -f install
Το "-f" από το help βλέπουμε πως σημαίνει:
"-f Attempt to correct a system with broken dependencies in place"

posted by qubix on January 9, 2013

Καταρχήν, τι έστι xmail: ένας προχώ για την εποχή του MTA που πλέον δεν αναπτύσσεται, τον έχουν παρατήσει οι devs του.
Δυστυχώς σε ένα datacenter που έπεσε στα χέρια μου, υπάρχει ο εν λόγω mail server ο οποίος το ομολογώ έχει ωραίο web interface με τις απαραίτητες δυνατότητες, και view από τα διάφορα logs που κρατάει.
Αποφάσισα λοιπόν για να κάνω καλύτερο και πιο εύκολο trace προβλημάτων, να εγκαταστήσω το utility xmail queue manager,το οποίο βγαίνει για windoze,linux, solaris κ.α. Όπως και ο server και αυτό είναι παρατημένο εντελώς...αφού το κατέβασα, πήγα να το τρέξω και το μόνο που έλαβα ως απάντηση ήταν το:


 ./xqmwin 
Traceback (most recent call last):
File "qmgrwin.py", line 8, in ?
File "/usr/local/lib/python2.3/site-packages/wxPython/init.py", line 20, in ?
File "/usr/local/lib/python2.3/site-packages/wxPython/wxc.so", line 4, in ?
ImportError: libwx_gtkd-2.4.so: cannot open shared object file: No such file or directory


Παραβλέπω τα python2.3, libwx_gtkd-2.4 που είναι αρχαιολογίες, αλλά έχω python2.6 και το libwx_gtkd-2.8.x. Το πρόβλημα είναι όμως πως αυτό ντε και καλά θέλει το libwx_gtkd-2.4. Εντάξει λοιπόν, το καλό είναι πως το εν λόγω library (shared object για να είμαστε πιο ακριβείς) το έχει ήδη ο xqm στο tgz που κατέβασα, οπότε αρκεί ένα copy στο /usr/lib ή ένα ln και κομπλέ όλα.

Αλλά ..όοοχι...τώρα πετάει άλλο σφάλμα!


./xqmwin 
Traceback (most recent call last):
File "qmgrwin.py", line 8, in ?
File "/usr/local/lib/python2.3/site-packages/wxPython/init.py", line 20, in ?
File "/usr/local/lib/python2.3/site-packages/wxPython/wxc.so", line 4, in ?
ImportError: libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory


Άηντε βρες τώρα πακέτο από την εποχή του debian etch!! Ευτυχώς υπάρχει το archives:
http://archive.debian.org/debian/pool/main/g/gcc-2.95/libstdc++2.10-glibc2.2_2.95.4-27_i386.deb
Ελπίζω να δουλεύει και στο μέλλον το λινκ..anywayz το κατέβασα, το έκανα install με το dpkg και:


ImportError: libgdk-1.2.so.0: cannot open shared object file: No such file or directory

Παρόμοιο error...IT IS HOPELESS!!!
ΤΕΛΟΣΠΑΝΤΩΝ...τι περιμένεις από αρχαιολογίες software, να τρέξουν?? Αυτό έπαιζε και σε kernel 2.4(!!!)...Για να μη τα πολυλογώ άρχισα τα symlinks στις αντίστοιχες εκδόσεις που είχα ή μπορούσα να βάλω:
ln -s /usr/lib/i386-linux-gnu/libgtk-3.so.0 /usr/lib/libgtk-1.2.so.0
ln -s /usr/lib/i386-linux-gnu/libgdk-3.so.0 /usr/lib/libgdk-1.2.so.0
ln -s /usr/lib/i386-linux-gnu/libgmodule-2.0.so.0 /usr/lib/libgmodule-1.2.so.0
ln -s /usr/lib/i386-linux-gnu/libgthread-2.0.so.0 /usr/lib/libgthread-1.2.so.0
ln -s /lib/i386-linux-gnu/libglib-2.0.so.0 /lib/libglib-1.2.so.0

Και το αποτέλεσμα:
ImportError: /usr/lib/libwx_gtkd-2.4.so: undefined symbol: gdk_root_window

AARRRGGGGGGGGHHHH!!!!!!!!
posted by qubix on January 8, 2013

Όλο χαρά έβγαλα την wintv μοντέλο 1998 και έβαλα πάλι wintv αλλά αυτή τη φορά την PVR-150, πιο σύγχρονη, mpeg II and stuff και πάει λέγοντας.
Χρειάστηκε να βάλω κάποια πακέτα καθώς το module ivtv διαμαρτυρώταν για κάποιο firmware που δεν υπήρχε:

ivtv: cannot find firmware v4l-cx2341x-enc.fw

Δεν ήξερα όμως πως τα γνωστά μου προγράμματα xawtv, tvtime ΔΕΝ παίζουν με αυτή την κάρτα καθώς δεν καταλαβαίνουν την mpegII stream που βγάζει η PVR-150. Αφού φαγα στη μάπα ένα κάρο μηνύματα του τύπου

videoinput: Card failed to allocate capture buffers: Invalid argument

Ανακάλυψα πως ευτυχώς ένας καλός άνθρωπος έφτιαξε το πρόγραμμα tv-viewer ακριβώς για να παίζουν τέτοιες κάρτες! Εύκολο installation, channel scanning και γενικά πολύ καλή λειτουργία.

Περισσότερα στο wiki:
tv-viewer wiki

posted by qubix on January 8, 2013

ΑΦού λοιπόν κατάφερα και έβαλα τη νέα μου tv κάρτα..δεν είχα ήχο! Μετά από μερικές στιγμές πανικού (άλλωστε έβαλα έναν πανάκριβο ενισχυτή και μεγάλα ηχεία..), κοίταξα το /proc/asound/cards και τα περιεχόμενα έδειξαν πως η default κάρτα είχε γίνει το output της τιβι κάρτας:
0 [IVTV0 ]: CX2341[56] - IVTV-0
CX2341[56] #0 Hauppauge WinTV PVR-150 TV/FM Radio/Line-In Capture
1 [SB ]: HDA-Intel - HDA ATI SB
HDA ATI SB at 0xfe9f4000 irq 16
2 [HDMI ]: HDA-Intel - HDA ATI HDMI HDA ATI HDMI at 0xfeaec000 irq 43


Προφανώς η "1" επιλογή ήταν η σωστή και όχι η "0". Για να αλλάξουμε τώρα την default επιλογή της κάρτας, αρκεί να φτιάξουμε ένα αρχείο, το /etc/asound.conf
στο οποίο θα βάλουμε τα εξής:
defaults.ctl.card 1
defaults.pcm.card 1
defaults.timer.card 1
και με ένα /etc/init.d/alsa-utils restart
ΕΧΩ ΚΑΙ ΠΑΛΙ ΗΧΟ!!

hyperworks