Πρώτο commit
Αυτό το commit περιλαμβάνεται σε:
commit
8ec8e9bee2
451 αρχεία άλλαξαν με 46736 προσθήκες και 0 διαγραφές
52
content/articles/27/01_editorial.md
Κανονικό αρχείο
52
content/articles/27/01_editorial.md
Κανονικό αρχείο
|
@ -0,0 +1,52 @@
|
|||
+++
|
||||
title = 'Editorial'
|
||||
date = '2000-10-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Παπαδογιαννάκης Βαγγέλης(mailto:papas@hellug.gr)'
|
||||
issue = ['Magaz 27']
|
||||
issue_weight = 1
|
||||
+++
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
*Καλώς ορίσατε στο **Magaz**\... Επίσιμη ονομασία τεύχους, \`\`Η επιστροφή των απολωλότων\'\'*
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Καλωσήρθατε στο **magaz** Οκτωβρίου του 2000. Λοιπόν, οι περισσότεροι θα αναρωτιέστε γιατί αυτός ο τίτλος! Επίσημα λοιπόν, αυτό πρέπει να είναι το πιο
|
||||
καθυστερημένο magaz στην ιστορία, μια και με την πάρτη μου ισχύει αυτό που λένε τα στρατευμένα νιάτα\... **ΕΧΩ ΠΗΞΕΙ!**. Μια όμως και τα προσωπικά μου, προφανώς
|
||||
και δικαιολογημένα, δε σας ενδιαφέρουν, ας προχωρήσουμε στην ύλη του μήνα αυτού.
|
||||
|
||||
Αρχίζοντας αυτόν το μήνα, ας διορθώσουμε τα \`\`κακώς κείμενα\'\' του προηγούμενου τεύχους. Στο προηγούμενο τεύχος λοιπόν, φιλοξενήθηκε ένα άρθρο από τον [Θέμη
|
||||
Παπασσιλέκα](mailto:panzer@finecon.gr) με τίτλο [Ο υπέροχος κόσμος του Linux 2.4](../26/04_kernel24.html). Για αυτό το άρθρο από δική μου παράλειψη, δεν
|
||||
αναφέρθηκε ο πραγματικός αρθρογράφος. Αυτό συνέβη διότι.. δεν τον ήξερα και απλά \`\`έβαλα\'\' το άρθρο.
|
||||
|
||||
Όπως καταλαβαίνετε, η ευθύνη βαραίνει εμένα και μόνο αποκλειστικά.
|
||||
|
||||
Μετά από την (πολύ σωστή) επισήμανση του (ουσιαστικά) μεταφραστή ( [Θέμη Παπασσιλέκα](mailto:panzer@finecon.gr)) λοιπόν, να πούμε σε αυτό το τεύχος (κάλιο αργά
|
||||
παρά ποτέ) ότι το άρ8ρο γράφτηκε από τον [Joe Pranevich](mailto:jpranevich@linuxtoday.com) για το γνωστό [LinuxToday](http://linuxtoday.com) και την τελευταία
|
||||
του έκδοση, μπορείτε να βρείτε [εδώ](http://linuxtoday.com/news_story.php3?ltsn=2000-07-17-014-04-NW-LF-KN). Την ειλικρινή μου συγνώμη για την παράλειψη.
|
||||
|
||||
Καλωσορίζουμε ξανά ένα άρθρο από τον [Παπακώστα Ευρυπίδη](mailto:evris@hellug.gr), συνέχεια του άρθρου του [περί καλής συμπεριφοράς των
|
||||
linuxάδων](../24/05_odigos.html) που δημοσιεύτηκε στο [τεύχος 24](../24/index.html). Ένας αρθρογράφος, που μετά από πολύ-πολύ καιρό απραξίας (όσον αφορά στο
|
||||
magaz) επιστρέφει πολλά υποσχόμενος και\... γεμάτος άρθρα. Τώρα θα μου πείτε\...\`\`Κοίτα ποιός μιλάει για απραξία\...\'\'. Και το κακό είναι ότι θα έχετε
|
||||
δίκιο! Τέλος πάντων, το άρθρο του μπορείτε να το βρείτε [εδώ](03_odigos.html)
|
||||
|
||||
Και για να κάνουμε το συγκεκριμένο αυτό τεύχος πιο \`\`οικογενειακό\'\', ε, φιλοξενούμε και ένα άρθρο από την [Βούλα Σανιδά](mailto:voulariba@hellug.gr). Οι
|
||||
παλιοί θα το υμνήσουν, οι νέοι θα το μισήσουν\... **μόνο στην αρχή**. Πρόκειται για ένα άρθρο για τον πιο **διαδεδομένο**, πιο **στυλάτο** editor, που
|
||||
ταυτόχρονα έχει και το πιο φανατικό κοινό! Δεν πρόκειται για άλλον από τον vi. [Δείτε το οπωσδήποτε!](02_vitips.html)
|
||||
|
||||
Όλοι, όταν πρωτοασχοληθήκαμε με το **linux**, είχαμε την απορία τι στο καλό είναι αυτό το **/proc** directory που υπάρχει στο δίσκο μας. Άσε που εκεί μέσα
|
||||
υπάρχει και το **μ-ε-γ-α-λ-ύ-τ-ε-ρ-ο** αρχείο του filesystem (What could that file be? Can I delete it?)! Αν και (μερικοί) λύσαμε τελικά αυτήν την απορία,
|
||||
υπάρχουν πολλές λεπτομέρειες που σίγουρα δεν ξέρουμε! Ε λοιπόν, αυτό το άρθρο που περιγράφει το proc filesystem από τον [Πρατικάκη
|
||||
Πολύβιο](mailto:polyvios@softlab.ntua.gr) με μια \`\`ξεχωριστή\'\' νότα περιεχομένου, θα μας κάνει να\... θέλουμε και άλλα!!! (εγώ τουλάχιστον, μόλις το
|
||||
διάβασα, έτρεξα και διάβασα το **linux kernel module programmers guide**. Το άρθρο μπορείτε να το βρείτε [εδώ](04_proc.html)
|
||||
|
||||
Συνέχεια του [άρθρου του προηγούμενου μήνα](../26/05_lfs.html) από τον [Μιχάλη Καμπριάνη](mailto:kabrianis@hellug.gr) που μας έγραψε για το πώς να στήσουμε ένα
|
||||
linux μηχανάκι **from the scrach!**. Εγώ πάντως που το δοκίμασα, τώρα έχω γεμίσει ένα δίσκο με\... images!!! Φυσικά και αστειεύομαι, και μπράβο στο
|
||||
[Μιχάλη](mailto:kabrianis@hellug.gr) για το πολύ καλό πραγματικά άρθρο. Μπορεί οι νέοι μας να μην το εκτιμήσουν και πολύ (καθόλου θα ήταν ακριβέστερο) αλλά όλοι
|
||||
οι υπόλοιποι το απολαύσαμε!
|
||||
|
||||
Αυτά τα ολίγα προς το παρόν, και σας υπόσχομαι ότι δε θα ξαναργήσω να βγάλω τεύχος! Θα φροντίσω, αν πνίγομαι τόσο πολύ, να λέω στον παλιό αρχισυντάκτη, τον
|
||||
[Μιχάλη Καμπριάνη](mailto:kabrianis@hellug.gr), τον οποίο και ευχαριστώ που πάντα με βοηθάει, να το ανεβάζει!
|
||||
|
||||
Για το **magaz** [Παπαδογιαννάκης Βαγγέλης](mailto:papas@hellug.gr).
|
272
content/articles/27/02_vitips.md
Κανονικό αρχείο
272
content/articles/27/02_vitips.md
Κανονικό αρχείο
|
@ -0,0 +1,272 @@
|
|||
+++
|
||||
title = 'vi Tips'
|
||||
date = '2000-10-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Βούλα Σανίδα(mailto:voulariba@eeea.gr)'
|
||||
issue = ['Magaz 27']
|
||||
issue_weight = 2
|
||||
+++
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
*Tips στον vi (Μα δεν χρειάζονται, είναι τόσο απλός\...)*
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Ποιός τόλμησε να πει πως το vi είναι δύσχρηστο; Μερικά απλά tips για να κάνετε την ζωή σας ευκολότερη\...
|
||||
|
||||
**1. Practical leaflet**
|
||||
-------------------------------------------------
|
||||
|
||||
**2. crash course theory leaflet**
|
||||
-----------------------------------------------------------
|
||||
|
||||
- [2.1 θεωρία 1](#ss2.1)
|
||||
- [2.2 θεωρία 2](#ss2.2)
|
||||
- [2.3 θεωρία 3](#ss2.3)
|
||||
|
||||
|
||||
### [1. Practical leaflet]{#s1}
|
||||
|
||||
**tip 1**: Για να βλέπετε στο κάτω μέρος της οθόνης την τρέχουσα γραμμή και στήλη:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:set ruler
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(αν θέλετε τέτοιες ρυθμισεις να ισχύουν πάντα δημιουργείστε στο \$HOME σας ένα αρχείο .vimrc και γράψτε εκεί την παραπάνω εντολή).
|
||||
|
||||
**tip 2**: Διαλέξτε κομμάτια κειμένου με τα πλήκτρα (σαν να χρηιμοποιείτε ποντίκι):\
|
||||
Πατήστε v για VISUAL MODE. Με τα πλήκτρα διαλέξτε τις γραμμές του κείμενο που θέλετε. Λειτουργεί το page-up, page-down για να διαλέξετε ολόκληρες οθόνη.
|
||||
Μπορείτε να χρησιμοποιείσετε regular expressions (π.χ. /test) για να επιλέξω το κείμενο μέχρι την πρώτη εμφάνιση της λέξης test.\
|
||||
Εναλλακτικά,. πατήστε Ctrl-v για VISUAL BLOCK και διαλέξτε το κείμενο που θέλετε κατά στήλες (κατακόρυφα).
|
||||
|
||||
- Αντιγράφετε το κείμενο.
|
||||
- Με p κάνετε επικόλληση (paste).
|
||||
- Με d διαγράφετε το μαρκαρισμένο κείμενο.
|
||||
|
||||
**tip 3**: Πως αφαιρούμε ΟΛΑ τα html tags από μια html σελίδα και μένει μόνο plain text κείμενο:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:g/<[^>]*>/s///g
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**tip 4**: Πώς σβήνουμε το mail header από ένα email, ώστε να μείνει μόνο το body του:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:1,/^$/d
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(ουσιαστικά σβήνουμε από την 1η γραμμή μέχρι να βρούμε την πρώτη κενή γραμμή)
|
||||
|
||||
**tip 5**: Πως αντικαθιστούμε τη λέξη καλό με τη λέξη πολύ καλό σε όλο το κείμενο και σε όλες τις εμφανίσεις σε κάθε γραμμή, με χρήση του τελεστή &:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:%s/καλό/πολύ &/g
|
||||
(εναλλακτικά :%s/καλό/πολύ καλό/g, αν και δεν είναι και τόσο δυναμικό)
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**tip 6**: Πως κλείνουμε σε /\* \... \*/ την τρέχουσα γραμμή:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:s/.*/\/* & *\//
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**tip 7**: Πως βάζουμε τις 5 πρώτες γραμμές σε σχόλια τύπου shell (\#):
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:1,5s/.*/# &/
|
||||
(ή ισοδύναμα :1,5s/^/# /)
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**tip 8**: Πως διαγράφουμε όλες τις κενές γραμμές του κειμένου:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:g/^$/d
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**tip 9**: Πως σβήνουμε τα κενά πριν από κάθε γραμμή
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:g/^ *\(.*\)/s//\1/g
|
||||
(ή ισοδύναμα :g/^ */s///g)
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**tip 10**: Πως διπλασιάζουμε τον αριθμό των κενών μεταξύ των λέξεων
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:%s/ */&&/g
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**tip 11**: Ανταλλαγή μέρας-μήνα. Η ημερομηνία από τη μορφή 21-03-1999 θα γίνει 03-21-1999
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:%s/\([0-9]\{1,2\}\)-\([0-9]\{1,2\}\)-\([0-9]\{4\}\)/\2-\1-\3/g
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**tip 12**: Πώς αντιστρέφουμε 2 στήλες που διαχωρίζονται μεταξύ τους με άνω κάτω τελεία :
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:%s/\(.*\):\(.*\)/\2:\1/g
|
||||
(ναι, με awk είναι πιο εύκολο, όντως!)
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**tip 13**: Πως διαγράφουμε τους 4 πρώτους χαρακτήρες σε κάθε γραμμή του κειμένου
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:%s/^....//g
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**tip 14**: Σε περίπτωση που γράφουμε ένα βιβλίο με references της μορφής \"Δείτε το κεφάλαιο ΧΧ.ΥΥ\", όπου Χ και Y αριθμοί, και θέλουμε να βάλουμε τέτοιες
|
||||
εμφανίσεις σε παρενθέσεις:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:%s/Δείτε το Κεφάλαιο [1-9][0-9]*\.[1-9][0-9]*/(&)/g
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**tip 16**: Βαρεθήκατε να χρησιμοποιείτε το \\ σαν unescape χαρακτήρα για τον χαρακτήρα /; Αλλάξτε το διαχωριστή (delimiter) / της εντολής s (π.χ. με τον
|
||||
χαρακτήρα θαυμαστικό !).\
|
||||
**Παράδειγμα:** Θέλω να αντικαταστήσω το /usr/doc/HOWTO /usr1/doc2/HOWTO3:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:%s/\/usr\/doc\/HOWTO/\/usr1\/doc2\/HOWTO3 (ο παλιός δύσκολος τρόπος)
|
||||
:%s!/usr/doc/HOWTO!/usr1/doc2/HOWTO3! (ο νέος και εύκολος)
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
tip16: Α\....εννοείτε πως για να ψάξουμε για μια έκφραση (π.χ. lalakis) η εντολή είναι:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
/lalakis
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
### [2. crash course theory leaflet]{#s2}
|
||||
|
||||
### [2.1 θεωρία 1]{#ss2.1}
|
||||
|
||||
Aντικαταστάσεις:
|
||||
|
||||
H εντολή αντικατάστασης έχει την μορφή: \[address\]s/oldregexp/newregexpr\[/flags\] όπου :
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
[..] = προεραιτικό μέρος της εντολής, μπορείτε να το παραλείψετε
|
||||
oldregexp = τι να αντικαταστήσουμε
|
||||
newregexp = με τι
|
||||
address = σε ποιο διάστημα (range) κειμένου θα γίνει η αντικατάσταση
|
||||
flags = αν θα ρωτάει για κάθε αντικατάσταση, αν θα το κάνει σε όλο
|
||||
το κείμενο, αν θα τα δείχνει κλπ...
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Ετσι, το address μπορεί να είναι:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
% = θα εφαρμοστεί σε όλο το κείμενο
|
||||
1,5 = θα εφαρμοστεί από τη γραμμή 1 μέχρι την 5
|
||||
1,$ = θα εφαρμοστεί από τη γραμμή 1 ως και την τελευταία (σε όλο
|
||||
δηλαδή το κείμενο)
|
||||
= (τίποτα), θα εφαρμοστεί στην τρέχουσα γραμμή
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Μερικά flags μπορούν να είναι
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
g = θα εκτελεστεί η εντολή σε όλα τις εμφανίσεις τρέχουσας γραμμής
|
||||
(Μια καλή ερώτηση που θα περιμένα να έχετε: Αν έχω για address το % ,
|
||||
δεν είναι ισοδύναμο; Μια καλή απάντηση είναι ΟΧΙ. Αν παραλείψετε το g
|
||||
στα flags τότε το vi θα ψάξει για την oldregexp σε όλο το κείμενο αλλά
|
||||
αντικατάσταση θα γίνει ΜΟΝΟ για την πρώτη εμφάνιση της oldregexp ΣΕ ΚΑΘΕ
|
||||
ΓΡΑΜΜΗ. Αρα αν μια γραμμή περιέχει δύο φορές την oldregexp χρειάζεστε
|
||||
το flag g.)
|
||||
gc = θα ρωτά για κάθε αντικατάσταση πριν την κάνει
|
||||
p = εμφάνιση στο κάτω μέρος του vi όλων των υποψήφιων αλλαγών
|
||||
(tips: 3, 5, 6, 7, 9, 10, 11, 12, 13, 14)
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
### [2.2 θεωρία 2]{#ss2.2}
|
||||
|
||||
Μερικοί χαρακτήρες (με χαρακτήρα):
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
& = Αν εμφανιστεί οπουδήποτε στα δεξιά μιας εντολής
|
||||
αντικατάστασης s, αντικαθίσταται από οτιδήποτε συνέπεσε στην αριστερή
|
||||
πλευρά (tips: 5, 6, 7, 10, 14)
|
||||
. = Οποιοσδήποτε χαρακτήρας (tips: 6, 7, 9, 12, 13)
|
||||
* = Οσοι (και όποιοι) χαρακτήρες (tips: 6, 7, 9, 12, 14)
|
||||
% = Ολό το αρχείο (tips: 5, 10, 11, 12, 13, 14)
|
||||
^ = Αρχή γραμμής (tips: 3, 4, 7, 8, 9, 13)
|
||||
$ = Τέλος γραμμής (tips: 4, 8)
|
||||
[...] = Οποιοσδήποτε χαρακτήρας από αυτούς που είναι εντός αγκύλης.
|
||||
Με Α-Χ εντός αγκύλης ορίζουμε όλους τους χαρακτήρες από τον Α εως τον X
|
||||
κατά ASCII σειρά (tips: 3, 11, 14)
|
||||
[^...] = Οποιοσδήποτε χαρακτήρας εκτός από αυτούς που είναι εντός αγκύλης
|
||||
\ = Escape character. Εξουδετερώνει τις "ειδικές" ιδιότητες του
|
||||
χαρακτήρα που ακολουθεί. Το vi αντιμετωπίζει δηλαδή τον επόμενο χαρακτήρα,
|
||||
ως κοινό. (tips: 6, 14)
|
||||
\{n,m\} = Δηλώνει πως οι εμφανίσεις του χαρακτήρα που προηγείται αυτής της
|
||||
έκφρασης θα κυμαίνονται από n το λιγότερο μέχρι m το περισσότερο (tips: 11)
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
### [2.3 θεωρία 3]{#ss2.3}
|
||||
|
||||
Regular Expressions
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
\(regexp\) = Ομαδοποιεί με βάση το regular expression εντός παρένθεσης.
|
||||
Οτι λοιπόν είναι μέσα στην παρένθεση θεωρείται ως ένα ενιαίο block. Μπορούμε
|
||||
πλέον να αναφερθούμε σε αυτό με βάση τον αριθμό του block αυτού. Αν είναι το
|
||||
πρώτο block που ομαδοποιήσαμε με αυτόν τον τρόπο, αναφερόμαστε σε αυτό με \1
|
||||
(tips: 9, 11, 12)
|
||||
// = κενό regular expression ισοδυναμεί με το αμέσως προηγούμενο
|
||||
regular expression (tips: 9)
|
||||
/./ = μη κενή γραμμή, τουλάχιστον 1 χαρακτήρας
|
||||
/^$/ = κενή γραμμή, μόνο χαρακτήρας αλλαγής γραμμής
|
||||
/κάτι/ = το κάτι οπουδήποτε στη γραμμή
|
||||
/^κάτι/ = το κάτι στην αρχή της γραμμής
|
||||
/κάτι$/ = το κάτι στο τέλος της γραμμής
|
||||
/κάτι.$/ = το κάτι και ένας ακόμη οποιοσδήποτε χαρακτήρας στο τέλος της
|
||||
γραμμής
|
||||
/κάτι\.$/ = το κάτι. στο τέλος της γραμμής
|
||||
/κάτι[0-9]/ = το κάτι ακολουθούμενο από ψηφίο
|
||||
/κάτι[^0-9]/ = το κάτι ακολουθούμενο από μη ψηφίο
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
329
content/articles/27/03_odigos.md
Κανονικό αρχείο
329
content/articles/27/03_odigos.md
Κανονικό αρχείο
|
@ -0,0 +1,329 @@
|
|||
+++
|
||||
title = 'Οδηγός καλής συμπεριφοράς προς Linuxάδες'
|
||||
date = '2000-04-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Ευριπίδης Παπακώστας `evris@hellug.gr`'
|
||||
issue = ['Magaz 27']
|
||||
issue_weight = 3
|
||||
+++
|
||||
|
||||
**1. Ένα Παραμύθι με Νόημα**
|
||||
-----------------------------------------------------
|
||||
|
||||
**2. Η Πραγματικότητα**
|
||||
------------------------------------------------
|
||||
|
||||
- [2.1 Linux Κοινότητα](#ss2.1)
|
||||
- [2.2 Υπάρχει τελικά πρόβλημα;](#ss2.2)
|
||||
|
||||
**3. Τυφλοσούρτι**
|
||||
-------------------------------------------
|
||||
|
||||
**4. Προτεινόμενο Διάβασμα**
|
||||
-----------------------------------------------------
|
||||
|
||||
- [4.1 LGU Netiquette](#ss4.1)
|
||||
- [4.2 MAGAZ](#ss4.2)
|
||||
- [4.3 HOWTOs](#ss4.3)
|
||||
- [4.4 HELLUG](#ss4.4)
|
||||
- [4.5 ΕΕΕΑ](#ss4.5)
|
||||
|
||||
|
||||
### [1. Ένα Παραμύθι με Νόημα]{#s1}
|
||||
|
||||
*\"Μια φορά κι έναν καιρό, σε ένα απόμακρο χωριό, ζούσαν δέκα ψαράδες. Την εποχή εκείνη, κανείς άλλος δεν ήξερε να ψαρεύει και ούτε ενδιαφερόταν για το ψάρεμα.
|
||||
Αν μάλιστα οι ψαράδες έκαναν το αστείο να διδάξουν ψάρεμα στους ανθρώπους της πόλης, ή να τους δώσουν δωρεάν ψάρια εκείνοι τους κορόιδευαν και τους χλεύαζαν.*
|
||||
|
||||
*Οι κάτοικοι της πόλης, βλέπετε, τρώγανε μόνο έτοιμες προτηγανισμένες τηγανητές πατάτες που τους προμήθευε ο αφέντης μεγαλέμπορας.*
|
||||
|
||||
*Οι ψαράδες όμως επέμειναν. Σιγά σιγά, καλλιέργησαν και τη γη, κάναν μια μικρή φάρμα εκτροφής ζώων, άρμεγαν το γάλα και επειδή ήταν όλοι φίλοι μεταξύ τους και
|
||||
ήταν λίγοι σε πληθυσμό, ο καθένας έκανε ότι του άρεσε και το πρόσφερε δωρεάν και χαμογελαστά στους υπόλοιπους. Όποιος δεν μπορούσε να φέρει σε πέρας κάποια
|
||||
δουλειά, μπορούσε να ρωτήσει τους παλιότερους κατοίκους του χωριού και εκείνοι με χαρά τον βοηθούσαν.* *Σιγά σιγά, οι ταλαιπωρημένοι και στα πρόθυρα της ασιτίας
|
||||
κάτοικοι της πόλης ενδιαφέρθηκαν να μάθουν και αυτοί τον τρόπο ζωής του μικρού αυτού χωριού και άρχισαν να μαζεύονται στα περίχωρα του χωριού.* *Ο πληθυσμός του
|
||||
χωριού αυξήθηκε. Οι νέοι κάτοικοι απαιτούσαν σαν κακομαθημένα παιδιά τα δωρεάν ψάρια τους (λες και κάποιος τους τα χρώσταγε) και κακοαναθρεμένοι όπως ήταν,
|
||||
άρχισαν να ζητάνε τσιπούρες, φιλέτο, λαχανάκια Βρυξελλών, πράγματα που οι παλιοί χωρικοί δε μπορούσαν (χωρίς τη συνεργασία των νέων) να φτιάξουν.*
|
||||
|
||||
*Αλλά αυτό που πραγματικά έφερνε σε απόγνωση τους γέροντες του χωριού, ήταν η συμπεριφορά των νέων στο σχολείο. Δεν έκαναν τις εργασίες τους, δε διάβαζαν τα
|
||||
βιβλία τους, δεν παίδευαν το μυαλό τους και δεν παρατηρούσαν τους γεροντότερους ώστε να προοδεύσουν. Αντί αυτού, συνεχώς έβριζαν τη δασκάλα τους όταν τους
|
||||
εξηγούσε πως αν είχαν διαβάσει το βιβλίο δε θα χρειαζόταν να διακόπτουν συνέχεια το μάθημα και να ρωτούν τα ίδια και τα ίδια.*
|
||||
|
||||
*Η κατάσταση αυτή συνεχίστηκε για πολύ καιρό, μέχρι που πέθαναν οι γεροντότεροι, χάθηκε η γνώση που είχαν και τελείωσαν από τις αποθήκες οι έτοιμες τροφές που
|
||||
με τόσο κόπο συσσώρευαν.*
|
||||
|
||||
*Πεινασμένοι και απογοητευμένοι οι κάτοικοι της πόλης, ξαναγύρισαν στον παλιό αφέντη τους. Με σκυμμένο το κεφάλι, παραδέχτηκαν πως ήταν λάθος τους να φύγουν από
|
||||
κοντά του και του ζήτησαν να τους πάρει στη δούλεψή του.*
|
||||
|
||||
*Αυτός άλλο που δεν ήθελε. Τώρα πια όλοι δουλεύουν γι\' αυτόν, για μια μερίδα προτηγανισμένες σάπιες πατάτες και κανένας δεν έχει μείνει για να επαναστατήσει
|
||||
εναντίον του.\"*
|
||||
|
||||
|
||||
### [2. Η Πραγματικότητα]{#s2}
|
||||
|
||||
Ο παραπάνω μύθος, μέχρι ένα σημείο του ανταποκρίνεται πλήρως στο μοντέλο ανάπτυξης και λειτουργίας του Linux. Είναι γνωστό πως δεν ανήκει σε κανέναν, πως
|
||||
προσφέρεται δωρεάν, πως ο καθένας εθελοντικά προσφέρει εκεί που θέλει και μπορεί και πως υπάρχουν ισχυροί δεσμοί ανάμεσα στα μέλη της κοινότητας αυτής.\
|
||||
Είναι γνωστό, επίσης, πως για να μην τρως μόνο ότι σε ταΐζουν οι άλλοι, θα πρέπει μόνος σου να διαφοροποιήσεις το μενού σου πράγμα που απαιτεί προσωπική
|
||||
ενασχόληση.
|
||||
|
||||
### [2.1 Linux Κοινότητα]{#ss2.1}
|
||||
|
||||
Η κοινότητα του Linux, λοιπόν, έχει τα σχολεία της. Διατηρεί κάποιους μηχανισμούς για την ισχυροποίηση των δεσμών των μελών της, για την επίλυση των προβλημάτων
|
||||
τους και για την, τόσο ζωτικής σημασίας, επικοινωνία μεταξύ τους. Αυτοί οι μηχανισμοί δεν είναι τίποτε άλλο από τις γνωστές μας λίστες ανταλλαγής ηλεκτρονικών
|
||||
μυνημάτων (newsgroups).
|
||||
|
||||
Στον ελληνικό χώρο, ο αφιλοκερδής σύλλογος Ελλήνων Χρηστών και Φίλων Λίνουξ Ελλάδος -HELLUG συμβάλλει σε αυτή την προσπάθεια. Με τον προσωπικό χρόνο, χρήμα και
|
||||
όρεξη μελών του και μη, συντηρείται το www.hellug.gr (web server του συλλόγου), magaz.hellug.gr (ηλεκτρονικό περιοδικό για Linux), HOWTOs (μεταφρασμένα ή
|
||||
πρωτότυπα εγχειρίδια τεκμηρίωσης), projects (στέγαση και ενημέρωση για ελληνικές προγραμματιστικές προσπάθειες), happenings, εκθέσεις, κλπ.
|
||||
|
||||
Σημαντικότερη, ίσως, όλων των παραπάνω δραστηριοτήτων είναι η συντήρηση των αντίστοιχων λιστών:
|
||||
|
||||

|
||||
|
||||
linux-greek-users\@hellug.gr (για θέματα που άπτονται του Linux γενικώς π.χ. προβλήματα, συζητήσεις, επικαιρότητα κλπ.),\
|
||||
linux-howto\@hellug.gr (για μεταφραστικές προσπάθειες, εξελληνισμούς),\
|
||||
hellug\@hellug.gr (για διοικητικά θέματα, συμμετοχή μόνο από μέλη του HELLUG)\
|
||||
|
||||
### [2.2 Υπάρχει τελικά πρόβλημα;]{#ss2.2}
|
||||
|
||||
Τώρα πια, όμως, που μέρος των στόχων του συλλόγου δείχνει να εκπληρώνεται (αύξηση των Ελλήνων χρηστών Linux καθώς και των εταιρειών που ασχολούνται ή το
|
||||
χρησιμοποιούν), αρχίζει να διαφαίνεται ένας μακροπρόθεσμος κίνδυνος. Αυτός της κατάρρευσης της κοινότητας κάτω από το ίδιο της το βάρος. Και εξηγούμαι\...
|
||||
|
||||
#### Παλιοί και νέοι Χρήστες
|
||||
|
||||
Όπως και στο μύθο με τους χωρικούς, οι νέοι χρήστες που δίνουν στο Linux μια ευκαιρία, κατά πλειοψηφία δε διαθέτουν την αντίστοιχη παιδεία και μεράκι όπως οι
|
||||
παλιοί.\
|
||||
Για να μην παρεξηγηθούμε, δεν γίνεται εδώ θέμα τεχνικών γνώσεων, παλαιότητας, μαγκιάς ή σεβασμού προς τους γκουρού. Απλά, όσο περισσότεροι άνθρωποι
|
||||
στριμώχνονται στον ίδιο χώρο τόσο πιο προσεκτικοί και ευγενικοί πρέπει να είναι στις επαφές τους με τους γύρω τους.\
|
||||
Η αρχική μαγιά χρηστών Linux, καθότι λιγοστοί στον αριθμό, δεν αντιμετώπισε ποτέ αυτό το πρόβλημα. Άλλωστε, μην ξεχνάμε πως οι πρώτοι εκείνοι χρήστες ήταν κατά
|
||||
βάση επαγγελματίες, χομπίστες - σπασίκλες των computers. Το κύριό τους μέλημα δεν ήταν να κάνουν τη δουλειά τους με το Linux, αλλά αντίθετα η δουλειά τους (έστω
|
||||
και σε επίπεδο δονκιχοτισμού ή χόμπι) ήταν να κάνουν το Linux.
|
||||
|
||||
#### Οι ορμές του νέου
|
||||
|
||||
Οι σημερινοί χρήστες, συνήθως, είναι πιο προσγειωμένοι και απαιτητικοί. Θεωρούν πως το Linux οφείλει να τους ανταμείψει για το τόλμημα που έκαναν να το
|
||||
δοκιμάσουν και να τους καλύψει κάθε τους ανάγκη, καλύτερα και πιο γρήγορα από κάθε εναλλακτική λύση με την οποία το συγκρίνουν.
|
||||
|
||||
Μερικές φορές, παρεξηγούν επίσης, το ρόλο των ανθρώπων που έκαναν τα πράγματα να είναι όπως σήμερα, χωρίς να το χρωστούν σε κανέναν και απαιτούν την επιτυχή
|
||||
βοήθειά τους εδώ και τώρα. Σε περιπτώσεις άγνοιας, αδιαφορίας, λανθασμένης απάντησης (κανείς δεν είναι τέλειος μην ξεχνάμε) δείχνουν αρνητική στάση και αρχίζουν
|
||||
να ακούγονται παράπονα όπως \"κρατάτε την γνώση για τον εαυτό σας\", \"δεν μας διδάσκετε όπως σας δίδαξαν\", \"είσαστε ένα κλειστό κύκλωμα και δεν μας δέχεστε
|
||||
και εμάς\" \...
|
||||
|
||||
Πολλές φορές, μάλιστα, επειδή το Linux έχει ξεφύγει πια από εργαλείο του σπασίκλα, οι νέοι χρήστες αυτοί δε διαθέτουν βασικές γνώσεις Η/Υ αλλά και ούτε την
|
||||
στοιχειώδη παιδεία συμπεριφοράς στα ηλεκτρονικά μέσα (email, λίστες).
|
||||
|
||||
Έτσι, ακόμα και αν η απορία τους έχει απαντηθεί και η πληροφορία είναι ήδη προσιτή, δεν μπαίνουν καν στον κόπο να την αναζητήσουν και επιμένουν να ρωτούν τα
|
||||
ίδια και τα ίδια, δημιουργώντας τριβές και εκνευρισμούς.
|
||||
|
||||
#### Ο καημός του παλιού
|
||||
|
||||
Για να απαντήσει κάποιος \"γκουρού\" σε μια οποιαδήποτε ερώτηση, θα πρέπει να βρει τον χρόνο να την διαβάσει, να την επεξεργαστεί (ώστε να μην συμβουλέψει
|
||||
λάθος), να το δοκιμάσει ο ίδιος, πιθανώς να ψάξει για σχετικά links και documentation ή και να αναζητήσει παλαιότερες απαντήσεις στην ίδια ερώτηση. Αν η
|
||||
ανταμοιβή του είναι μόνο γκρίνια, ίσως να αποτραβηχτεί από την εθελοντική αυτή συνεισφορά του. Αν επίσης οι ερωτήσεις πληθαίνουν σε σημείο που δεν μπορεί κανείς
|
||||
να τις παρακολουθήσει, χάνουν την πραγματική τους αξία, εξισώνονται όλες μεταξύ τους (δύσκολες, ενδιαφέρουσες, τετριμμένες, ήδη απαντημένες, λανθασμένες,
|
||||
άσχετες με Linux) και γίνονται απλά ένας θόρυβος.
|
||||
|
||||
Στην περίπτωση δε που η απάντηση έχει δοθεί τρια μηνύματα πριν, είναι λογικό να απογοητεύεται οποιοσδήποτε από τον τρόπο που υποβιβάζουν τον χρόνο και την
|
||||
προσφορά του οι ερωτούντες πριν διαβάσουν έστω και στο ελάχιστο το \"μάθημα της ημέρας\".
|
||||
|
||||
#### Μια μέση λύση
|
||||
|
||||
Φυσικά η σωστή συμπεριφορά απαιτεί βήματα και κατανόηση και από τις δύο πλευρές.\
|
||||
Ο νέος φίλος δεν καλείται να τα ξέρει όλα, αλλά ούτε και να απαιτεί σαν κακομαθημένο παλιόπαιδο ιδιαίτερα μαθήματα, όποτε χρειαστεί, από όποιον επιλέξει, επί
|
||||
παντός επιστητού.
|
||||
|
||||
Ο παλιός από την άλλη, υπό κανονικές συνθήκες δεν θα έπρεπε να σνομπάρει κάθε ερώτηση που του φαίνεται απλή και προφανής. Θα πρέπει να είναι επεξηγηματικός στις
|
||||
απαντήσεις του. Σε περίπτωση που νοιώθει την ακατάσχετη τάση να χλευάσει, να ειρωνευτεί και γενικώς να μην συνεισφέρει θετικά σε κάποιο πρόβλημα, όποιος και αν
|
||||
είναι ο λόγος αυτής του της διάθεσης, υπάρχει μια και μόνη συμβουλή: **Μην απαντήσει!**.
|
||||
|
||||
Η λίστα είναι εργαλείο και δεν πρέπει να εκφυλίζεται σε προσωπικές μικροτριβές που δεν προάγουν το Linux.
|
||||
|
||||
Όπως και στο μύθο, το μυστικό της επιτυχίας του χωριού, ήταν πρώτα πρώτα η προσωπική ενασχόληση με κάτι που άρεσε στους χωρικούς. Η εξήγηση της αποτυχίας είναι,
|
||||
επίσης, απλή. Μηδενική προσωπική συνεισφορά και απαίτηση από τους άλλους να δουλέψουν για σένα. Στο Linux, ισχύει το ρητό \"Αν σε τρώει η πλάτη σου, προσπάθησε
|
||||
να την ξύσεις μόνος σου. Αν τα καταφέρεις, πες και στους άλλους πώς το έκανες. Αν όχι, βρες φίλους σου να ξύνει ο ένας την πλάτη του άλλου.\"
|
||||
|
||||
Προς θεού, απέχουμε πολύ από την κατάληξη του μύθου και δεν νομίζω πως εύκολα θα καταλήξουμε εκεί, αλλά μπορούμε όλοι μαζί να κάνουμε την Linux-ική ζωή μας πιο
|
||||
εύκολη και ευχάριστη, αν έχουμε στο μυαλό μας την παραπάνω ιστοριούλα, κάθε φορά που αποφασίζουμε να απευθυνθούμε στις Linux λίστες.
|
||||
|
||||
|
||||
### [3. Τυφλοσούρτι]{#s3}
|
||||
|
||||
Παρακάτω επιχειρούμε να δώσουμε έναν τυφλοσούρτη καλής συμπεριφοράς για τέτοιες περιπτώσεις. Οι ενέργειες καταγράφονται ΑΚΡΙΒΩΣ με την σειρά που θα έπρεπε να
|
||||
γίνουν, ώστε να μεγιστοποιήσουμε τον παράγοντα σήμα/θόρυβο μιας ηλεκτρονικής λίστας.
|
||||
|
||||
- Βήμα 1: Επιχειρώ να λύσω μόνος μου το πρόβλημά μου (διαβάζοντας τα manuals, πειραματιζόμενος, ψάχνοντας στο internet στα σχετικά sites).
|
||||
|
||||
- Βήμα 2: Συμβουλεύομαι φίλους και γνωστούς από τον κύκλο μου. Αν φοβάμαι πως γίνομαι ενοχλητικός σε αυτούς, να είμαι σίγουρος πως το ίδιο νοιώθουν και οι
|
||||
άγνωστοι στις λίστες.
|
||||
|
||||
- Βήμα 3: Διαβάζω με προσοχή παρεμφερείς ερωταπαντήσεις στις λίστες, κοιτώντας μήπως η απάντηση έχει ήδη δοθεί και είναι μπροστά στα μάτια μου.
|
||||
|
||||
- Βήμα 4: Δημοσιοποιώ το πρόβλημά μου στην σωστή λίστα, με ευγενικό τρόπο, παρέχοντας όσες πληροφορίες νομίζω πως θα βοηθήσουν τους άλλους να κατανοήσουν
|
||||
ακριβώς το πρόβλημα μου και συνεχίζω να τους δίνω τις επιπλέον πληροφορίες που (ίσως) να ζητήσουν.
|
||||
|
||||
- - Βήμα 5α: Αν το πρόβλημα λυθεί δεν είναι άσχημη ιδέα να ευχαριστήσω τα παιδιά που έδωσαν χρόνο και δαπάνησαν σκέψη για να με βοηθήσουν. Στέλνω την
|
||||
ολοκληρωμένη ερώτηση και απάντηση στην λίστα γιατί πιθανώς ενδιαφέρει και άλλους.
|
||||
- Βήμα 5b: Αν η ερώτηση δεν απαντηθεί για κάποιο καιρό, ή οι απαντήσεις δεν λύσουν το πρόβλημα, δεν επιμένω, δεν βρίζω, δεν προσβάλω. Όποιος και όπως
|
||||
μπόρεσε να ασχοληθεί το έκανε ήδη. Δεν υπάρχει τρόπος να καταναγκάσουμε και άλλους να εμπλακούν. Τι να γίνει; Ήμασταν άτυχοι. Δεν είναι λύση επίσης, η
|
||||
αποστολή του ίδιου mail - ερώτηση σε πολλαπλούς παραλήπτες προσωπικά. Να είσαστε σίγουροι πως όλοι διαβάζουν τις ίδιες λίστες και πως μόνο ενόχληση
|
||||
μπορεί να δημιουργήσει κάτι τέτοιο.
|
||||
|
||||
- Βήμα Μόνιμο (και σημαντικότερο): ΠΑΝΤΑ, ΜΑ ΠΑΝΤΑ, έχω στο μυαλό μου πως η λίστα δεν είναι μόνο για να παίρνω απαντήσεις αλλά κατά βάση για να δίνω.
|
||||
Παρακολουθώ λοιπόν και τα υπόλοιπα threads, προσπαθώντας με την σειρά μου να ανακουφίσω και εγώ άλλους ομοιοπαθείς.
|
||||
|
||||
|
||||
### [4. Προτεινόμενο Διάβασμα]{#s4}
|
||||
|
||||
Το θέμα αυτό έχει συζητηθεί πολλές φορές και από τα ίδια τα παιδιά που συμμετέχουν στις λίστες αυτές και έχουν ήδη ξεκινήσει κάποιες προσπάθειες ενημέρωσης των
|
||||
\"νεοφώτιστων\" φίλων. Το κάθε ένα από αυτά τα ενημερωτικά κείμενα, αναφέρεται στο θέμα με τον δικό του τρόπο, κάνοντας όμως λίγο πολύ παρεμφερείς συστάσεις.
|
||||
|
||||
Σας παραπέμπουμε λοιπόν στην σχετική \*βιβλιογραφία\* :
|
||||
|
||||
### [4.1 LGU Netiquette]{#ss4.1}
|
||||
|
||||
Το LGU Netiquette μπορείτε να διαβάσετε ηλεκτρονικά στο <http://lists.hellug.gr/lgu-netiquette.txt>. Αποστέλλεται πάντως αυτόματα και σε μηνιαία βάση στην
|
||||
linux-greek-users, ώστε να το λαμβάνουν όλοι οι νέοι συμμετέχοντες σε αυτήν. Μεταξύ άλλων στο κείμενο αναφέρονται και τα εξής:
|
||||
|
||||
> ``
|
||||
>
|
||||
> * Βάλτε ένα σχετικό subject στο e-mail σας. Subjects του στυλ "βοήθεια,
|
||||
> αρχάριος" ή "πρόβλημα με το linux" δε βοηθάνε ούτε τους αναγνώστες,
|
||||
> ούτε όσους ψάχνουν για παρόμοιο πρόβλημα στα archives αλλά ούτε κι εμάς
|
||||
> που γράφουμε το faq.
|
||||
>
|
||||
> * Αλλάζετε το subject όταν αλλάζετε το θέμα.
|
||||
>
|
||||
> * Μπορείτε όταν σας απαντήσουν και λυθεί το πρόβλημά σας, να γράψετε
|
||||
> ένα e-mail με την προσθήκη του "FIXED:" ή κάτι παρόμοιο στο θέμα, και
|
||||
> να περιγράψετε με λίγα λόγια πως τελικά λύσατε το πρόβλημά σας. Με
|
||||
> αυτό τον τρόπο δημιουργείται μια περίληψη του όλου thread και βοηθάτε
|
||||
> κάποιον με παρόμοιο πρόβλημα να βρει τη λύση πολύ γρηγορότερα.
|
||||
>
|
||||
> * Γενικά, αν είστε νέος στη λίστα και γενικά σε λίστες ταχυδρομείου,
|
||||
> διαβάστε τα μηνύματα που στέλνονται για μια εβδομάδα περίπου για να
|
||||
> καταλάβετε τον τρόπο συμπεριφοράς σε τέτοιους χώρους.
|
||||
>
|
||||
> * Quotes: Όταν κάνετε reply σε κάποιο e-mail κόψτε όσο ποιο πολλά
|
||||
> μπορείτε από το αρχικό μύνημα. Kόψτε το footer που προσθέτει ο
|
||||
> mail-server στο τέλος κάθε μηνύματος. Αφήστε μόνο τα σχετικά με την
|
||||
> απάντησή σας για να καταλάβουν οι υπόλοιποι σε τί απαντάτε.
|
||||
> Οτιδήποτε άλλο χαραμίζει bandwidth και χρόνο.
|
||||
>
|
||||
> * Signatures: Γενικά είναι καλό να περιορίσετε το signature στα e-mail
|
||||
> σας σε 4-5 σειρές το πολύ.
|
||||
>
|
||||
> * Attachments: Γενικά είναι καλό να μην στέλνετε αρχεία στη λίστα. Αν
|
||||
> χρειάζεται να στείλετε κάποιο αρχείο που έχει σχέση με το πρόβλημά σας
|
||||
> προσπαθήστε να βρείτε το πιθανό σημείο του προβλήματος και να στείλετε
|
||||
> μόνο αυτό. Το να στέλνετε όλο το syslog δεν είναι καλή τακτική!
|
||||
|
||||
### [4.2 MAGAZ]{#ss4.2}
|
||||
|
||||
Άρθρα με παρεμφερή προβληματισμό, μπορείτε να βρείτε και στο [ηλεκτρονικό περιοδικό magaz](http://magaz.hellug.gr).
|
||||
|
||||
Ένα άρθρο γενικού ενδιαφέροντος που εκφράζει κάποιες γενικότερες σκέψεις για την κοινότητα και τις δραστηριότητές της είναι το: [Σκέψεις για την ελληνική
|
||||
κοινότητα του Linux](http://magaz.hellug.gr/21/03_community_thought.html).
|
||||
|
||||
Μια άλλη πληροφορία που μπορεί να σας φανεί χρήσιμη είναι πως τα τεύχη του magaz, έως και το 16ο, περιλαμβάνουν και αλληλογραφία με το κοινό. Σε αυτήν υπάρχουν
|
||||
αρκετές ερωταπαντήσεις κυρίως αρχαρίων χρηστών.
|
||||
|
||||
### [4.3 HOWTOs]{#ss4.3}
|
||||
|
||||
Ένα από τα γνωστότερα και παλαιότερα Ελληνικά HOWTOs, το [Hellenic HOWTO](http://www.hellug.gr/gr/howto/howto/pub/html/Hellenic-HOWTO.html) αναφέρει και αυτό με
|
||||
την σειρά του μερικούς χρήσιμους κανόνες καλής συμπεριφοράς. Αναφέρουμε αποσπασματικά\...
|
||||
|
||||
> ``
|
||||
>
|
||||
> Χρήσιμες συμβουλές
|
||||
>
|
||||
> - Το magaz έχει πλήθος από ερωτήσεις που έχουν γίνει στο παρελθόν,
|
||||
> και λίγο πολύ οι ερωτήσεις επαναλαμβάνονται.
|
||||
>
|
||||
> - Αφιερώστε αρκετό χρόνο διαβάζοντας για να ενημερωθείτε γύρω από το
|
||||
> πρόβλημα που ψάχνετε,
|
||||
>
|
||||
> - ΜΗΝ παραλείψετε να διαβάσετε τα HOWTO και FAQ (/usr/doc/faq) του
|
||||
> LDP Project (http://metalab.unc.edu/LDP/).
|
||||
>
|
||||
> - Ψάξτε σχετικά θέματα από την σελίδα: http://lists.hellug.gr/archives.
|
||||
>
|
||||
> - Τα διεθνή newsgroups comp.os.linux* είναι επίσης χρήσιμα,
|
||||
> πχ news://comp.os.linux.misc
|
||||
>
|
||||
> - Μην στέλνετε προσωπικό email σε κάποιον, γιατί σπάνια υπάρχει
|
||||
> ο χρόνος για απάντηση. Αντίθετα προτιμήστε την λίστα ή το newsgroup,
|
||||
> όπου η πιθανότητα να πάρετε απάντηση είναι πολύ μεγαλύτερη.
|
||||
> ΠΧ, στο δικό μου mailbox, συχνά φτάνουν γράμματα αυτού του τύπου:
|
||||
> me lene Xxxxx spoudazo yyyyyyy kai arxisa na asxoloumai me to linux.
|
||||
> Tha ithela na mou peis pou mporo na bro to programma.
|
||||
> oti theleis na mou to steileis sto zzz@zzzzzzzzzz.zz"
|
||||
> Δεν απαντώ τέτοια email, ειδικά όταν το HOWTO και το FAQ έχουν τις απαντήσεις,
|
||||
> αντίστοιχα πράττουν και άλλοι.
|
||||
|
||||
Εκτός των παραπάνω, το HOWTO αυτό έχει μια λίστα συχνά τιθέμενων ερωτήσεων (FAQ) για προβλήματα Ελλήνων Linuxάδων, που μπορεί να σας φανεί ιδιαίτερα χρήσιμη.
|
||||
|
||||
### [4.4 HELLUG]{#ss4.4}
|
||||
|
||||
Οδηγίες για το τι σκοπούς εξυπηρετεί η κάθε λίστα, ποιες είναι οι συχνότερα τιθέμενες ερωτήσεις και απαντήσεις τους (FAQ), συμβουλές για να βοηθήσετε και να
|
||||
βοηθηθείτε καθώς και για το πώς να εγγραφείτε στις λίστες, θα βρείτε στην διεύθυνση <http://lists.hellug.gr> και στο [LGU FAQ (Linux Greek Users Frequently
|
||||
Asked Questions)](http://http://homepages.pathfinder.gr/lgu_faq/)
|
||||
|
||||

|
||||
|
||||
Διαβάζουμε:
|
||||
|
||||
> ``
|
||||
>
|
||||
> Πρέπει να περιοριστεί λίγο το traffic στη λίστα. Τον τελευταίο καιρό με
|
||||
> αύξουσα πορεία σε συνάρτηση με το χρόνο, τίθενται ερωτήσεις που έχουν απαντηθεί
|
||||
> στο παρελθόν. Παράλληλα, καλό θα ήταν να ανέβει λίγο το επίπεδό της, εννοώντας
|
||||
> ότι παλιές απορίες λύνονται, και εμφανίζονται νέες, πιο προχωρημένες.
|
||||
>
|
||||
> * Οι απαντήσεις που γράφονται είναι εγγυημένα σωστές;
|
||||
> Φυσικά και όχι! Οι απαντήσεις δίνονται από τον καθένα σε εθελοντική βάση
|
||||
> σύμφωνα με τις γνώσεις και εμπειρίες που είχε μέχρι στιγμής.
|
||||
>
|
||||
> * Πέρασαν 24 ώρες κι ακόμα απάντηση δεν πήρα. Γιατί;
|
||||
> Πολύ απλά μπορεί να μην ξέρει κανείς την απάντηση! Οι απαντήσεις γράφονται
|
||||
> από άλλους χρήστες, που μπορεί να μην έχουν αντιμετωπίσει το πρόβλημά σας.
|
||||
>
|
||||
> * Κάποιος μου απάντησε υβριστικά/με έθιξε/κλπ. Να του απαντήσω;
|
||||
> Όχι μέσω της λίστας. Για τέτοιου είδους θέματα να στέλνετε προσωπικά e-mail.
|
||||
> Δεν ενδιαφέρει κανέναν στη λίστα οι προσωπικές σας διαφορές με κάποιον.
|
||||
>
|
||||
> * Μην ξεχνάτε ότι το linux απαιτεί κόπο και από τον ίδιο το χρήστη.
|
||||
>
|
||||
> * Το να στείλετε μια ερώτηση που έχει απαντηθεί δεκάδες φορές στο παρελθόν
|
||||
> δείχνει ότι θεωρείτε το χρόνο σας πιο πολύτιμο από τον χρόνο αυτών που θα σας
|
||||
> απαντήσουν...
|
||||
>
|
||||
> * Προσέξτε τη γλώσσα που χρησιμοποιείτε. Η λίστα είναι διαθέσιμη σε πολύ κόσμο
|
||||
> και δε μιλάτε στους φίλους σας μόνο. Η λίστα αυτή αποτελεί και έναν τρόπο να
|
||||
> δείχνουμε την εικόνα του Linux στον υπόλοιπο κόσμο.
|
||||
>
|
||||
> * Spam: Σε καμία περίπτωση δε θα πρέπει να στείλετε spam mail στη λίστα. Άσχετα
|
||||
> διαφημιστικά, μηνύματα-αλυσίδες, κλπ. Μη σχολιάζετε spam-mail που καταλήγει
|
||||
> στη λίστα. Απλά επιβαρύνετε κι άλλο τη λίστα.
|
||||
|
||||
### [4.5 ΕΕΕΑ]{#ss4.5}
|
||||
|
||||
Τέλος, για μια ακόμα πιο επιθετική και ωμή στάση στο ζήτημα μπορείτε να διαβάσετε το [Linux Savoir Vivre HOWTO στην
|
||||
EEEA](http://www.eeea.gr/repository/grlinux/Linux-Savoir-Vivre-HOWTO/Linux-Savoir-Vivre-HOWTO.html) που φημίζεται για την αμεσότητά της παρά για την πολιτικά
|
||||
ορθή στάση της. Για μια πρόγευση:
|
||||
|
||||
> ``
|
||||
>
|
||||
> - Ελπίζεις να είναι όλοι καλύτεροι από σένα. Δέξου το, αν όντως αληθεύει.
|
||||
> Για να σου λύσουν το πρόβλημα, οι άλλοι, η κοινότητα, βασίζεσαι σε μια κρυφή
|
||||
> ελπίδα. Να ξέρουν αυτό για το οποίο χρειάζεσαι βοήθεια. Δηλαδή να είναι
|
||||
> καλύτεροί σου. Να μάθεις να ακούς λοιπόν και να κάνεις τουμπέκα γιατί αυτή
|
||||
> τη στιγμή ένας καλύτερός σου, εθελοντικά δαπανά χρόνο. Μην του τον χαραμίζεις.
|
||||
>
|
||||
> - Του άλλου ο χρόνος είναι πάντα πιο σημαντικός από σένα τον ασήμαντο.
|
||||
> Απόδειξη: Εσύ του τον ζητάς και αυτός άμα γουστάρει τον δίνει.
|
||||
> Σεβάσου τον λοιπόν.
|
||||
>
|
||||
> - Χέρι με χέρι ή δώσε πρώτος.
|
||||
> Μην θεωρείς δεδομένο πως σου χρωστάει κανείς μόνο και μόνο γιατί αποφάσισες
|
||||
> να βάλεις Linux. Ίσα - ίσα. Εσύ χρωστάς να συνεχίσεις και να βελτιώσεις αυτό
|
||||
> που τόσο απλόχερα σου προσφέρθηκε.
|
||||
>
|
||||
|
159
content/articles/27/04_proc.md
Κανονικό αρχείο
159
content/articles/27/04_proc.md
Κανονικό αρχείο
|
@ -0,0 +1,159 @@
|
|||
+++
|
||||
title = 'Περιγραφή του proc filesystem'
|
||||
date = '2000-10-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Πρατικάκης Πολύβιος(mailto:polyvios@softlab.ntua.gr)'
|
||||
issue = ['Magaz 27']
|
||||
issue_weight = 4
|
||||
+++
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**1. Εισαγωγή**
|
||||
--------------------------------------
|
||||
|
||||
**2. Οι δομές του proc**
|
||||
-----------------------------------------------
|
||||
|
||||
**3. Std disclaimer**
|
||||
--------------------------------------------
|
||||
|
||||
|
||||
### [1. Εισαγωγή]{#s1}
|
||||
|
||||
Στο linux υπάρχει ένα σύστημα αρχείων, το proc, το οποίο προσαρτάται συνήθως στο **/proc** στο δένδρο καταλόγων, και το οποίο είναι εικονικό. Αυτό που δηλαδή
|
||||
φαίνεται ως αρχεία, στην πραγματικότητα δεν υπάρχει πουθενά στο δίσκο ή στην μνήμη του υπολογιστή. Στην πραγματικότητα, τα φαινομενικά αρχεία είναι απλές
|
||||
\"εγγραφές\" στο δένδρο καταλόγων που αντιστοιχούν το διάβασμα, γράψιμο κ.λ.π των \"αρχείων\" αυτών σε κλήσεις διαφόρων συναρτήσεων. Έτσι, όταν διαβάζει κάποιος
|
||||
το αρχείο π.χ. /proc/interrupts δεν διαβάζει τα περιεχόμενα ενός υπαρκτού αρχείου, αλλά απλώς την έξοδο μιας συνάρτησης που καλείται κάθε φορά που το αρχείο
|
||||
αυτό διαβάζεται.
|
||||
|
||||
Το εικονικό σύστημα αρχείων proc, χρησιμοποιείται κυρίως για την αναφορά πληροφοριών (δυναμικά) του συστήματος. Μπορεί δε να αλλάξει δυναμικά, δηλαδή να
|
||||
προστεθούν και να αφαιρεθούν αρχεία και κατάλογοι, ανάλογα με την τρέχουσα κατάσταση του συστήματος.\
|
||||
Ο προγραμματισμός του συστήματος αρχείων proc στον πυρήνα, προσφέρει ένα υπάρχον σύνολο συναρτήσεων (ελληνιστί API), που καθιστούν την επέμβαση στο proc και την
|
||||
προσθαφαίρεση αρχείων σχετικά εύκολη. Για να προσθέσουμε ένα αρχείο στο proc, χρησιμοποιούμε τη συνάρτηση proc\_register(), η οποία παίρνει ως όρισμα μια δομή
|
||||
που περιγράφει το αρχείο (όνομα, μέγεθος, ιδιότητες, κ.λ.π.), καθώς και τις συνδεδεμένες με το αρχείο συναρτήσεις. Επιπλέον, δίνεται η - πολύ χρήσιμη -
|
||||
δυνατότητα να περάσουμε ένα δείκτη, ο οποίος θα περαστεί ως παράμετρος στην συνάρτηση που κάθε φορά καλείται. Με αυτό τον τρόπο, μπορούμε να γράψουμε μια φορά
|
||||
τις συναρτήσεις που καλύπτουν πολλά \"ίδια\" αρχεία του proc.
|
||||
|
||||
Για παράδειγμα, προφανώς δεν χρειάζεται να γραφούν ξεχωριστές συναρτήσεις για το αρχείο /proc/parport/0/irq και /proc/parport/1/irq, αλλά οι ίδιες συναρτήσεις
|
||||
καλούνται με διαφορετικό όρισμα. Ο τρόπος για να γίνει αυτό, είναι ένας δείκτης void \*, ο οποίος \"συνδέεται\" με κάθε αρχείο, και \"κουβαλάει\" ό,τι αυτό
|
||||
χρειάζεται.
|
||||
|
||||
|
||||
### [2. Οι δομές του proc]{#s2}
|
||||
|
||||
Επειδή το καλό με το Open Source είναι το\... open source, παρατηρώντας το αρχείο linux/include/linux/proc\_fs.h, βλέπουμε τα εξής:
|
||||
|
||||
- 3-4 enum τα οποία καθορίζουν σταθερές. Οι σταθερές αυτές χρησιμοποιούνται από κάποια \"αρχεία\" του proc, το ποιά είναι φανερό από την ονομασία τους. Π.χ.,
|
||||
οι σταθερές PROC\_\* (το πρώτο enum), είναι τα \"είδη\" των αρχείων ή καταλόγων που βλέπει κανείς ακριβώς \"κάτω\" από το σημείο που προσαρτάται το proc,
|
||||
συνήθως δηλαδή στο /proc/\*. Οι σταθερές PROC\_NET\_\* βρίσκονται στο /proc/net κ.ο.κ.
|
||||
- Στη συνέχεια, βλέπουμε το σημαντικό μέρος του αρχείου, την δομή `proc_dir_entry`. Κάθε αρχείο του proc είναι ουσιαστικά μια τέτοια δομή. Αναλυτικά, τα πεδία
|
||||
της δομής είναι:
|
||||
|
||||
**`low_ino`**
|
||||
|
||||
: Στη μεταβλητή αυτή τίθεται το είδος του αρχείου, που συνήθως είναι μια από τις σταθερές που ορίζονται παραπάνω.
|
||||
|
||||
**`namelen`**
|
||||
|
||||
: Όπως ίσως φαίνεται, στη μεταβλητή αυτή αποθηκεύεται το μήκος του ονόματος του αρχείου.
|
||||
|
||||
**`name`**
|
||||
|
||||
: Πρόκειται για δείκτη σε null terminated αλφαριθμητικό, με το όνομα του αρχείου.
|
||||
|
||||
**`mode`**
|
||||
|
||||
: Στη μεταβλητή αυτή, καθορίζεται ο τύπος και τα permissions του αρχείου, δηλαδή το αν πρόκειται για αρχείο ή κατάλογο, αν και για ποιόν επιτρέπεται η
|
||||
εγγραφή, η ανάγνωση κ.λ.π.
|
||||
|
||||
**`nlink`**
|
||||
|
||||
: Στη μεταβλητή αυτή αποθηκεύεται ο αριθμός των συνδεδεμένων αρχείων με αυτό το αρχείο, δηλαδή 1 αν πρόκειται για απλό αρχείο που συνδέεται μόνο με τον
|
||||
κατάλογο που το περιέχει, ή 2 αν πρόκειται για κατάλογο. Στην περίπτωση αυτή, το nlink καταλόγου αυξάνει όταν προσθέτουμε αρχεία σε κατάλογο.
|
||||
|
||||
**`uid`**
|
||||
|
||||
: Το owner ID του αρχείου.
|
||||
|
||||
**`gid`**
|
||||
|
||||
: Το group ID του αρχείου.
|
||||
|
||||
**`size`**
|
||||
|
||||
: Το φαινομενικό μέγεθος του αρχείου, όπως αυτό φαίνεται π.χ. με την εντολή ls -l.
|
||||
|
||||
**`ops`**
|
||||
|
||||
: Μια δομή inode\_operations στην οποία περιέχονται δείκτες στις συναρτήσεις που χειρίζονται το inode (βλέπε κείμενα για συστήματα αρχείων) που
|
||||
δημιουργείται. Στο άρθρο αυτό, δεν θα υπάρξει εκτενής περιγραφή για τη δομή αυτή και τις πιθανές χρήσεις της. Για όποιον ενδιαφέρεται, ας κοιτάξει το
|
||||
linux kernel module programming guide, στο <http://www.linuxdoc.org> όπου γίνεται μια περιγραφή του proc, και χρησιμοποιείται η συγκεκριμένη δομή για
|
||||
είσοδο.
|
||||
|
||||
**`get_info`**
|
||||
|
||||
: Συνάρτηση που καλείται κατά την ανάγνωση από το αρχείο και επιστρέφει το μήκος.
|
||||
|
||||
**`fill_inode`**
|
||||
|
||||
: Η συνάρτηση αυτή καλείται για να συμπληρώσει τη δομή inode που αντιστοιχεί στο αρχείο, και χρησιμοποιείται μόνο όταν αυτά τα δεδομένα δεν μπορούν να
|
||||
καθοριστούν στατικά κατά την δημιουργία του αρχείου.
|
||||
|
||||
**`next,parent,subdir`**
|
||||
|
||||
: Πρόκειται για δείκτες σε δομές proc\_dir\_entry. Με το δείκτη next, δημιουργείται μια συνδεδεμένη λίστα από όλες τις εγγραφές (entries) στο proc, ενώ
|
||||
χρησιμοποιώντας τους δείκτες parent και subdir, διατηρείται στη μνήμη ένα \"δένδρο\" καταλόγων για το proc.
|
||||
|
||||
**`data`**
|
||||
|
||||
: Όπως αναφέρθηκε και στην εισαγωγή, κατά τη δημιουργία του αρχείου θέτουμε το δείκτη αυτό ώστε να δείχνει στα δεδομένα που αντικατοπτρίζει το αρχείο, και
|
||||
στη συνέχεια όταν καλλούνται οι διάφορες συναρτήσεις του αρχείου περνιέται ως παράμετρος. Έτσι, οι συναρτήσεις του αρχείου \"ξέρουν\" σε ποιά δεδομένα
|
||||
αναφέρεται το αρχείο αυτό.
|
||||
|
||||
**`read_proc`**
|
||||
|
||||
: Συνάρτηση που καλείται όταν το αρχείο διαβάζεται. Η συνάρτηση αυτή χρησιμοποιείται για έξοδο από τον πυρήνα, και επιστρέφει (γράφει σε ένα buffer)
|
||||
δεδομένα κάθε φορά που καλείται. Μια από τις παραμέτρους της συνάρτησης αυτής είναι ο δείκτης data που προαναφέρθηκε.
|
||||
|
||||
**`write_proc`**
|
||||
|
||||
: Συνάρτηση που καλείται κατά το γράψιμο στο αρχείο. Με τη συνάρτηση αυτή επιτυγχάνεται η είσοδος παραμέτρων προς τον πυρήνα μέσα από το σύστημα αρχείων
|
||||
proc. Αυτό βέβαια γίνεται και μέσω των συναρτήσεων του inode του αρχείου, αλλά ο τρόπος αυτός είναι προτιμότερος, γιατί υπάρχει και εδώ ο μηχανισμός με
|
||||
το δείκτη data, που επιτρέπει να υπάρχουν \"παρόμοια\" αρχεία.
|
||||
|
||||
**`readlink_proc`**
|
||||
|
||||
: Η συνάρτηση αυτή (από ότι έχω καταλάβει πάντα) καλείται όταν το αρχείο \"συνδέεται\" (link), όπως π.χ. με την εντολή ln.
|
||||
|
||||
**`count`**
|
||||
|
||||
: Μετρητής για την απαρίθμηση της χρήσης του αρχείου. Αυξάνει κάθε φορά που το αρχείο ανοίγεται, και μειώνεται όταν κλείνεται.
|
||||
|
||||
**`deleted`**
|
||||
|
||||
: Σημαία για το αν το αρχείο έχει σβηστεί.
|
||||
- Μετά τον ορισμό της δομής proc\_dir\_entry, ακολουθούν ορισμοί τύπων για τους δείκτες συναρτήσεων που χρησιμοποιούνται, και δηλώνονται ορισμένες μεταβλητές
|
||||
που αντιστοιχούν στα \"σίγουρα\" αρχεία του proc, όπως π.χ. η ρίζα του, οι υποκατάλογοι net, scsi, sys, pid, κ.λ.π.
|
||||
- Οι επόμενες ενδιαφέρουσες δηλώσεις στο αρχείο, είναι αυτές των συναρτήσεων proc\_register και proc\_unregister. Χρησιμοποιώντας τις συναρτήσεις αυτές,
|
||||
\"βάζουμε\" και \"βγάζουμε\" proc\_dir\_entries, δηλαδή αρχεία, στο και από το proc filesystem.
|
||||
|
||||
Η συνέχεια του αρχείου είναι λίγο εως πολύ συγκεκριμένες δηλώσεις που χρησιμοποιούνται για τα υπάρχοντα αρχεία του proc, ή απλώς δεν τα έχω ψάξει αρκετα ;-).
|
||||
|
||||
Η μέχρι τώρα επεξήγηση πρέπει να είναι αρκετή για να \"φτιάξετε\" ένα αρχείο στο proc που θα μπορεί από το να \"περιέχει\" ένα απλό \"hello world!\", μέχρι να
|
||||
κάνει dump τα στατιστικά μιας tbf queueing discipline (Αυτό είναι σίγουρα ένα άλλο θέμα!). Για το πού θα πρέπει να προσθέσετε την proc\_register() γραμμή σας,
|
||||
ένα πιθανό μέρος είναι η do\_basic\_setup() συνάρτηση στο αρχείο linux/init/main.c, ή η init\_module() συνάρτηση του αρχείου που θα κάνετε insmod (Αλλά κι αυτό
|
||||
είναι ένα άλλο θέμα\...)
|
||||
|
||||
Αν αυτή η περιγραφή σας άνοιξε την όρεξη, μπορείτε να διαβάσετε περισσότερα στον linux kernel module programmers guide, αν και οι αναφορές δεν είναι με τίποτα
|
||||
εκτενείς. Στο συγκεκριμένο guide υπάρχει γενικότερη αναφορά στα modules, σε IO - device drivers κ.λ.π. Μην ξεχνάτε όμως πως ο καλύτερος οδηγός είναι ο κώδικας.
|
||||
Άλλωστε γιατί ειναι τόσο σημαντικό το Open Source;
|
||||
|
||||
|
||||
### [3. Std disclaimer]{#s3}
|
||||
|
||||
Στο παρόν άρθρο, καταβλήθηκε προσπάθεια να περιγραφεί το σύστημα αρχείων proc, όπως το έχω καταλάβει προσωπικά από τα sources του πυρήνα, και διάφορα guides.
|
||||
Δεν είμαι σίγουρος ότι οι πληροφορίες που δίνονται ανταποκρίνονται στην πραγματικότητα, και μη βασιστείτε σε αυτο :-).
|
||||
|
118
content/articles/27/05_lfs.md
Κανονικό αρχείο
118
content/articles/27/05_lfs.md
Κανονικό αρχείο
|
@ -0,0 +1,118 @@
|
|||
+++
|
||||
title = 'To \...δικό μας Linux. Γιατί και πως μέρος 2ο'
|
||||
date = '2000-10-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Μιχάλης Καμπριάνης(mailto:kabrianis@hellug.gr)'
|
||||
issue = ['Magaz 27']
|
||||
issue_weight = 5
|
||||
+++
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
*Συνεχίζουμε την προσπάθεια για τη δημιουργία του δικού μας Linux, μπαίνοντας στα extra προγράμματα και τις ρυθμίσεις.*
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Την περασμένη φορά (προηγούμενο τεύχος) είχαμε φτάσει να έχουμε ένα minimum σύστημα το οποίο κάνει boot και έχει δίκτυο, telnet, ftp, compiler (και όλα τα
|
||||
απαιτούμενα tools για compile) και τα sources του πυρήνα. Αυτό το σύστημα το έχουμε και σε backup (ας το ονομάσουμε «στάδιο 2»). Τώρα πρέπει να κάνουμε το
|
||||
fork\...
|
||||
|
||||
**1. Forking**
|
||||
------------------------------------
|
||||
|
||||
**2. Κοινός server**
|
||||
------------------------------------------
|
||||
|
||||
**3. Development μηχάνημα**
|
||||
-------------------------------------------------
|
||||
|
||||
**4. Μεταφορά**
|
||||
-------------------------------------
|
||||
|
||||
|
||||
### [1. Forking]{#s1}
|
||||
|
||||
Από εδώ και πέρα, αποφασίζουμε τι ακριβώς ανάγκες θα εξυπηρετεί το μηχάνημά μας.\
|
||||
Αν το μηχάνημα το «χτίζουμε» για (π.χ.) **stand-alone workstations** φοιτητών σε Πανεπιστήμιο που θα μπαίνουν Internet, θα θέλουν mail, browser, editor και
|
||||
λοιπά παρόμοια προγράμματα, δεν χρειάζεται να του βάλουμε καθόλου servers και απλά θα εγκαταστήσουμε (αν τίθεται τέτοια απαίτηση για την χρήση του workstation)
|
||||
τα X-windows. Μπορούμε να μην σηκώνουμε καν το inetd για παράδειγμα, και ούτε κουβέντα για Apache, sendmail, postgres/mysql, squid και λοιπά καλούδια που μας
|
||||
βάζουν συνήθως οι distributions.\
|
||||
Αν το μηχάνημα το «χτίζουμε» για να εξυπηρετεί **συγκεκριμένο service** (π.χ. θα γίνει mail server) τότε απλά του εγκαθιστούμε το αντίστοιχο service και ένα
|
||||
πρόγραμμα για remote access. Σε όλες τις περιπτώσεις, για remote access προτιμώ το ssh έναντι των παραδοσιακών telnet/ftp. Δεν συζητάμε καθόλου βέβαια για
|
||||
r-tools εκτός αν πρόκειται το μηχάνημα να είναι backup-server (το rmt χρειάζεται rshd). Δημιουργούμε τα αντίστοιχα scripts για να σηκώνονται και να σταματάνε τα
|
||||
σχετικά services, κατά τα παραδείγματα του Gerard.\
|
||||
Αν μιλάμε για περίπτωση **«τυπικού» server** που θα εξυπηρετεί web, mail, dns, μία (τουλάχιστον) βάση, ίσως news, ότι σκεφτούμε δηλαδή (κλασικά παραδείγματα
|
||||
τέτοιων μηχανημάτων είναι ο tux.hellug.gr και το igloo.linux.gr, τα μηχανήματα του συλλόγου), τότε ξεκινάμε και εγκαθιστούμε όλα τα services, πολλά extra-libs,
|
||||
φτιάχνουμε όλα τα scripts για startup-shutdown, ίσως ακόμα και να πρέπει να φτιάξουμε (επιτέλους;) και κάποιο inetd.conf για να ξεκινάμε τον inetd (ανάλογα με
|
||||
τις απαιτήσεις πάλι), σίγουρα κάποιο cron, θα αυτοματοποιήσουμε κάποιες εργασίες\... Πολλή δουλειά.\
|
||||
Τέλος, μπορεί να θέλουμε να φτιάξουμε ένα **πλήρες development μηχάνημα**, το οποίο όπως το εννοώ εγώ είναι ένας συνδυασμός της πρώτης και τελευταίας από τις
|
||||
προαναφερθείσες περιπτώσεις. Δηλαδή πολλούς servers (που θα «σηκώνουμε» κατ\' επιλογή όποιον/όποιους χρειαζόμαστε για να κάνουμε τους ελέγχους μας) και τα
|
||||
X-windows με τα αντίστοιχα προγράμματα για ppp, internet, writing-tools κλπ, ότι δίνει δηλαδή ένα distribution. (τόση δουλειά για να ξαναφτάσουμε εκεί που
|
||||
ξεκινήσαμε!!! :-)
|
||||
|
||||
Εγώ εδώ θα ασχοληθώ με τις δύο τελευταίες περιπτώσεις, μια και είναι αυτές ακριβώς με τις οποίες ασχολήθηκα.
|
||||
|
||||
|
||||
### [2. Κοινός server]{#s2}
|
||||
|
||||
Εφόσον δεν χρησιμοποιούμε κάποιο standard package management software (π.χ. rpm) πρέπει να έχουμε κάποιο τρόπο, να «κρατάμε» κάπου ένα κατάλογο με το αρχεία
|
||||
βάλαμε και σε ποιο σημείο. Εγώ χρησιμοποίησα το installwatch για αυτό το λόγο (και τώρα ετοιμάζομαι μα γράψω ένα απλό uninstall script που να παίρνει σαν input
|
||||
τα logs του installwatch) και θα πρότεινα, για να μην βρεθείτε πιο χαμένοι από ότι ξεκινήσατε, να χρησιμοποιήσετε κι εσείς κάποιο τέτοιο πακέτο.\
|
||||
Οι servers που εγκατέστησα (όχι ότι έχει και σημασία αφού όπως είπαμε ο καθένας βάζει ότι τον εξυπηρετεί) είναι οι apache, mysql, qmail, bind, sshd, ενώ και
|
||||
ένας nfs server μου φάνηκε χρήσιμος κάποια στιγμή (για να κάνω «βαριά» compiles στο άλλο, γρήγορο μηχάνημα που έχω\... το πως και γιατί στο περίπου, μπορείτε να
|
||||
το βρείτε στο πρώτο-πρώτο τεύχος του magaz που ο Φώτης Γεωργάτος χρησιμοποίησε το ίδιο τρικ για να κάνει compile τον πυρήνα σε ένα μηχάνημα). Φυσικά εγκατέστησα
|
||||
και ένα cron, και μια που το παραδοσιακό cron είναι αρκετά παλιό, εγκατέστησα το fcron. Προτίμησα το qmail αντί για το sendmail για λόγους ασφαλείας και επειδή
|
||||
το qmail μου καλύπτει τις ανάγκες μου.\
|
||||
Τα σημαντικά (για μένα) κομμάτια είναι τα εξής:
|
||||
|
||||
- Έβαλα ολόκληρα τα πακέτα σε δικά τους ξεχωριστά directory (π.χ. o apache μπήκε στο /usr/local/apache). Αυτό ήταν εύκολο για ορισμένα πακέτα (apache, inn)
|
||||
και πιο δύσκολο για άλλα (mysql) ενώ για κάποια ακόμα (π.χ. ssh) δεν είχε νόημα.
|
||||
- Έφτιαξα (η άλλαξα όσα υπήρχαν έτοιμα) τα startup - shutdown scripts τα οποία μπήκαν στο /etc/init.d και φτιάχτηκαν τα αντίστοιχα links στο /etc/rc.d.
|
||||
|
||||
\
|
||||
Αν έχουμε ένα παράλληλο μηχάνημα με τις ίδιες ρυθμίσεις μπορούμε να κάνουμε αυτό που προτείνουν πολλοί security experts, να μην αφήσουμε δηλαδή compiler(s) στο
|
||||
μηχάνημα και να αφαιρέσουμε όλα τα sources. Ένα tripwire ή ένα md5sum που το βάζουμε να \"τρέχει\" κάθε βράδυ και να μας στέλνει με mail τα αποτελέσματα για να
|
||||
τα συγκρίνουμε με τα αρχικά, μας βοηθάει και μας δημιουργεί λίγο την ψευδαίσθηση ότι το μηχανάκι μας είναι ασφαλές. Εμείς πάντως κάναμε ότι έπρεπε, από αυτή τη
|
||||
μεριά (γιατί υπάρχει πάντα και το θέμα του administration της βάσης, τα τυχόν cgi scripts που τρέχουν κλπ).
|
||||
|
||||
|
||||
### [3. Development μηχάνημα]{#s3}
|
||||
|
||||
Αυτό το οποίο χρειάζομαι πραγματικά να έχω είναι ένα development μηχάνημα, το οποίο θα χρησιμοποιώ ως εξής:
|
||||
|
||||
- Στήνω όλα τα services όπως στον server. Ένα ακριβές αντίγραφο του server. Ελλείψη τρίτου μηχανήματος, το κάνω αυτό στο βασικό μου μηχάνημα.
|
||||
- Περνάω επάνω ότι extra προγράμματα χρειάζομαι, όπως X-Windows, mail-client, browser, editors κλπ για να μπορώ να το δουλέψω χωρίς κανένα πρόβλημα. Τα βασικά
|
||||
στα βασικά τους σημεία (π.x. τα X-Windows στο /usr/X11R6) και τα μη βασικά εκεί που θέλω (π.χ. όλα τα γραφικά προγράμματα στο /opt και όλα τα προγράμματα
|
||||
κονσόλας στο /opt/local).
|
||||
- Θυμάστε που είπα προηγουμένως ότι όλα τα services τα έβαλα σε δικά τους directory; Ε, όλα τα directories ήταν και στο ίδιο filesystem (/usr/local). Ένα
|
||||
level 0 backup του filesystem σήμερα, και ένα differential όταν τελειώσω το development (της τυχόν εφαρμογής, ή τον έλεγχο της τυχόν νέας έκδοσης), με
|
||||
καλύπτει κατά 99% για πλήρη μεταφορά στον server. Το 1% που αφήνω είναι για τυχόν περιπτώσεις που δεν μου έρχονται τώρα στο μυαλό.
|
||||
- Μεταφέροντας το differential backup στον server, ξαναπαίρνω ένα level 0 backup και βρίσκομαι πάλι σε αυτό που μπορούμε να ονομάσουμε checkpoint.
|
||||
|
||||
Το εν λόγω μηχάνημα λοιπόν έχει περασμένα (εκτός από τα προγράμματα του server) και τα XFree86-4.01, gtk και glib (καθώς και gnome-libs και gnome-includes της
|
||||
έκδοσης 1.2), και τα υπόλοιπα desktop tools (Staroffice, Netscape, Acrobat κλπ).
|
||||
|
||||
|
||||
### [4. Μεταφορά]{#s4}
|
||||
|
||||
Ωραία τα φτιάξαμε αυτά και δουλέυουν. Τι κερδίσαμε; Το όλο νόημα ήταν στην αρχή να μπορούμε να το μεταφέρουμε από δω κι από κει, όποιο \"παρακλάδι\" από αυτά
|
||||
που είπαμε στο τμήμα Forking θέλουμε, χωρίς πρόβλημα. E, αυτό είναι εύκολο\...
|
||||
|
||||
1. Κατ\' αρχάς υπάρχει η παραδοσιακή (και πολλές φορές καλύτερη) μέθοδος με το tar. Προσοχή λίγο στις παραμέτρους (συγκεκριμένα για τα permissions) και έχετε
|
||||
ένα tar image του συστήματός σας. Αν στο νέο σύστημα boot-άρετε από μία ειδική δισκέτα (π.χ. tom\'s boot disk), κάνετε mount ένα CD που έχετε το εν λόγω
|
||||
image, και κάνετε untar το image στον δίσκο, το μόνο που χρειάζεται να κάνετε μετά είναι ένα chroot στον νέο δίσκο, διόρθωμα αν χρειάζεται του /etc/fstab
|
||||
και /etc/lilo.conf, τρέχουμε ένα lilo και reboot. Θεωρητικά όλα είναι έτοιμα. Για να πω την αλήθεια, όχι μόνο θεωρητικά. Αυτή τη μέθοδο χρησιμοποίησα για να
|
||||
αντιγράψω το βασικό \"server\" μηχάνημα στο development.
|
||||
2. Υπάρχει η λύση του cluclo (cluster cloning) αν το νέο μηχάνημα έχει δίκτυο. Διαβάστε το documentation καλά κάντε τα 3-4 βήματα που λέει, και είστε έτοιμοι.
|
||||
3. Κάποιος μου είπε για κάποιο πρόγραμμα με όνομα ghost που κάνει κάτι τέτοιο, αλλά είναι λέει για Windows οπότε δεν μπόρεσα να το δοκιμάσω.
|
||||
4. Υπάρχει και το αντίστοιχο (ίδιο;) πρόγραμμα open source για Linux. Λέγεται Partition Image και θα το βρείτε και αυτό στο Freshmeat. Από μία σύντομη ματιά
|
||||
που έριξα στο documentation, κρίνω ότι μάλλον είναι ιδιαίτερα εύχρηστο και ευέλικτο.
|
||||
5. Πάντα παίζει και η λύση του dd. Βάζουμε δηλαδή τον δίσκο του νέου μηχανήματος στο παλιό μηχάνημα, και αν ο δίσκος είναι ίδιος του κάνουμε ένα dd και
|
||||
τελειώνει η υπόθεση, ενώ αν οι δίσκοι διαφέρουν, παίζουμε λίγο με τα partitions και κάνουμε dd το partition.
|
||||
|
||||
Όλες οι μέθοδοι που αναπτύξαμε πιο πάνω, είναι σαφώς πιο γρήγορες από μία εγκατάσταση από CD. Βέβαια έτσι κάνεις μόνο τυποποιημένες εγκαταστάσεις, αλλά μπορείς
|
||||
να τις τροποποιήσεις πολύ εύκολα (μια που ξέρεις ακριβώς τι υπάρχει μέσα) και, βέβαια, πόσες φορές χρειάζεσαι μία διαφορετική εγκατάσταση απ\' ότι έκανες την
|
||||
περασμένη φορά;
|
||||
|
||||
Αν δεν σας φτάνουν αυτοί οι τρόποι, βρείτε κάποιον μόνοι σας. Εξάλλου, αυτή είναι η ομορφιά του Linux.
|
||||
|
Φόρτωση…
Προσθήκη πίνακα
Προσθήκη υπερσυνδέσμου
Παράθεση σε νέο ζήτημα