28 July, 2009

Cu sau fără diacritice - mediul

Foarte multe aplicații de consolă (si emulatoarele de terminal) se bazează pe variabilele de mediu (environment variables) atunci când trebuie să afișeze caractere speciale. Pentru a avea suport corect de limba română este necesar să aveți variabila $LANG configurată pe UTF-8. În Debian acest lucru se obține cel mai ușor cu
dpkg-reconfigure locales
Astfel veți putea alege ce locale doriți să fie generate pe sistemul dumneavoastră (în cazul în care aveți nevoie de mai multe) și să stabiliți care este cea implicită. Pentru suport complet de limba română vă rugăm să alegeți ro_RO.UTF-8. Astfel sistemul va încerca să afișeze tot în limba română. Veți avea ocazia să vedeți ce programe au interfața tradusă și eventual să raportați greșeli (sau termeni inadecvați). Dacă nu doriți să faceți această configurație la nivel de sistem va fi suficient să modificați variabila $LANG pentru utilizatorul în cauză. Pentru interpretorul de comenzi (shell) bash puneți
export LANG=ro_RO.UTF-8
undeva în fișierul .bashrc Unii dintre dumneavoastră nu vor dori ca programele să afișeze traducerile în română, dar totuși să păstreze toate celelalte setări (și corectorul ortografic ține cont de $LANG dacă programul folosit nu are configurații explicite în acest sens). În acest caz puteți să setați variabila $LANGUAGE (ex. export LANGUAGE=english) Pentru configurații mai specifice încercați să modificați unele din variabilele afișate de comanda „locale”.

Cu sau fără diacritice - consola

Pentru cei care folosesc sisteme GNU/Linux fără X (sau preferă consola) va fi necesar să facă câteva configurări pentru a suporta caracterele speciale românești. În Debian cel mai simplu se face cu
dpkg-reconfigure console-setup
Notă: în 5.0 (Lenny) acest pachet nu este instalat implicit. Comanda de mai sus vă permite să alegeți tastatura, aranjamentul de tastatură, codificarea folosită în consolă, ce set de caractere să suporte fontul ales și ce font să folosiți. Pentru aranjamentul de tastatură recomand cel denumit „ro” (în variante mai vechi ar putea apărea ca varianta „comma”, cunoscut și ca aranjamentul „Programmers”. La prima vedere acest aranjament este identic cu cel „us”, dar se poate folosi tasta AltGr (sau Alt-dreapta) pentru a genera diverse caractere speciale. ă, î, ș și ț se generează cu AltGr+litera de bază iar â cu AltGr+q (deasupra de A pe o tastatură QWERTY). În afară de acestea se mai pot genera și alte caractere cum ar fi € (AltGr+e), © (AltGr+c), ghilimelele românești „” (AltGr+[ respectiv ]) și o mulțime de caractere cu accente utile pentru texte în limba maghiară sau cu umlaut pentru limba germană (Scharfes S ß este AltGr+w) dacă folosiți tastele moarte (dead keys). Limba română mai are și alte aranjamente, cum ar fi cel standard (aranjamentul implicit pentru limba română din Windows Vista). Acesta este util în cazul în care posedați una din rarele tastaturi românești. În cazul în care nu găsiți anumite caractere de pe tastatura „us” încercați AltGr :-) Aranjamentele cu sedilă vă rog să le evitați pentru a nu înmulți textele cu ș și ț greșite. Dacă aveți nevoie de aranjamentul creat de Microsoft (cel care este implicit în Windows XP sau versiunile mai vechi de Windows) acesta se numește „winkeys”. Dacă vi se pare că denumirile de aranjamente și variante sunt aceleași cu cele din X, să știți că așa este :-) console-setup folosește aceleași definiții. În ce privește celelalte setări, codificarea trebuie să fie UTF-8 (cele tip ISO-8859 sunt de evitat) iar fontul trebuie să suporte minim setul de caractere Latin2 (central Europe and Romanian). Mai departe veți putea alege între fontul implicit (VGA) și cel Terminus (un font recomandat dacă stați foarte mult în fața ecranului). Puteți alege și dimensiunea fontului (în pixeli). E posibil ca aceste instrucțiuni să funcționeze și pe distribuțiile derivate din Debian (ex. Ubuntu).

27 July, 2009

Cu sau fără diacritice - aplicații în mod text

În prima parte am testat ce emulatoare de terminal au suport corect pentru UTF-8 (consola linux nu are probleme dacă totul e configurat corect). Totuși nu e suficient, și aplicațiile au nevoie de suport. Aplicații testate de mine:
  • clienți e-mail:
    • mutt (1.5.20): da
  • clienți IRC:
    • irssi (0.8.13): da
  • browsere:
    • lynx (2.8.7rel.1): nu (nu afișează ș și ț, celelate caractere speciale sunt afișate fără diacritice)
    • links (2.2): nu (afișează * în loc de ș și ț, celelate caractere speciale sunt afișate fără diacritice)
    • links2 (2.2): da, doar în modul grafic (-g) alfel e la fel cu links
    • w3m (0.5.2): da
  • manageri de fișiere:
    • mc (4.6.2): da
  • editoare de text:
    • vim (7.2.148): da
    • mcedit (mc 4.6.2): da
    • nano (2.0.9): da
  • pagere:
    • less (429): da
    • more (util-linux 2.15.1~rc1): da
    • most (5.0.0a): da
Dacă mai știți și alte aplicații în mod text (cu sau fără suport corect) vă rog să scrieți un comentariu.

Cu sau fără diacritice - terminale

În urma unei „flame” pe lista RLUG am primit o sugestie de la Petru Rațiu, și anume să documentez cum trebuie configurat un sistem Linux pentru a avea suport corect pentru limba română. În consecință am instalat din nou toate terminalele din Debian și le-am testat pe rând cu mutt (1.5.20) și mc (4.6.2). Am folosit mc nu atât pentru suportul de diacritice ci pentru că am observat fenomene „ciudate” când variabila LANG este setată pe ceva UTF-8. Testele au fost făcute cu configurația implicită, cu excepția lui pterm care la primul test a fost foarte aproape de suportul fără probleme. Știu că versiunile programelor sunt relativ noi (doar folosesc Debian unstable), dar nu mă aștept la surprize mari nici cu variante mai vechi. În general avem două categorii mari:
  1. Fără probleme:
    • evilvte (0.4.4.1)
    • gnome-terminal (2.22.3)
    • konsole (4.2.4)
    • lxterminal (0.1.6)
    • mlterm (2.9.4)
    • roxterm (1.15.2)
    • urxvt/rxvt-unicode (9.06)
    • xfce4-terminal (0.4.0)
    • xterm (243)
  2. Fără suport (în mc și mutt apăreau caractere ciudate în locul caracterelor cu diacritice dar și în locul caracterelor de linii):
    • aterm (1.0.1)
    • eterm (0.9.5)
    • mrxvt (0.5.4)
    • multi-aterm (0.2.1)
    • rxvt (2.6.4)
    • wterm (6.2.9)
    • xvt (6.2.9)
Excepții: kterm (6.2.0): - mc: nu are linii și pe alocuri afișează caractere asiatice - mutt: unele caractere nu apar de loc, altele (exemplu „î”) sunt înlocuite cu caractere asiatice powershell (0.9): la prima vedere pară să „înghită” anumite diacritice (nu le afișează de loc, în special „ș”) și afișează niște linii orizontale ciudate. Prima impresie e că suportul UTF-8 e cam prost (inexistent?). Probabil că nu e de mirare ținând cont că folosește gtk 1.2 ... pterm (0.60): - mc: ok - mutt: ok, dar diacriticele erau înlocuite cu un punct până când l-am pornit cu „-fn Terminus-20” Concluzie: din păcate aproape toată gama de terminale „ușoare” au probleme dacă locala este UTF-8. Deocamdată nu am găsit decât patru emulatoare de terminal clasice care să suporte UTF-8: xterm, urxvt/rxvt-unicode, mlterm și pterm. pterm e posibil să aibă un mic defect (bug) deoarece n-a detectat că fontul implicit suportă UTF-8 (și automat n-a comutat modul UTF-8). După cum era de așteptat toate terminalele pe bază de GTK/GNOME și QT/KDE au suport corect. Singurul cu probleme, powershell, ar trebui evitat oricum deoarece încă mai folosește vechea bibliotecă gtk 1.2 Dacă mai știți și alte emulatoare de terminal (cu sau fără suport UTF-8) vă rog să scrieți un comentariu.

27 June, 2009

Unde dai și unde crapă

Pornind de la o simplă discuție pe mesageria instant despre instalat pachete am început să descriu sistemul de gestionare a pachetelor din Debian. Cum interlocutorul meu nu avea răbdare și/sau chef să mă asculte am început să compun un e-mail, care a devenit destul de lung, după care m-am gândit să-l trimit la mai multe persoane interesate de subiect și până la urmă am ajuns să-l postez pe blog. Deci, pentru cine e interesat, o scurtă introducere în sistemul de gestionare a pachetelor din Debian.

Despre managementul de pachete din Debian

În general totul e construit pe filozofia UNIX "fă un singur lucru, dar fă-l bine". Adică mai multe programe specializate pe domeniul lor, care comunică între ele, în locul unui mega-program care să facă tot. dpkg program pentru manipularea pachetelor .deb este programul care se ocupă de instalarea efectivă a pachetelor (fișierele .deb) și este folosit de toate celelalte programe care „instalează/șterg” pachete[1]. Poate fi folosit pentru a instala fișiere .deb și pentru a afla informații despre pachetele instalate (respectiv fișierele lor). Necesită root pentru instalări/ștergeri dar poate fi folosit de orice utilizator pentru a obține informații. Nu este recomandat pentru instalare/ștergere decât în cazuri speciale. Exemple[2]:
# dpkg -i un_fișier.deb
instalează fișierul .deb. Va eșua dacă nu sunt îndeplinite toate dependențele
# dpkg -i pachet.deb dep1.deb dep2.deb
instalează pachetele. dep1 și dep2 sunt dependențe pentru pachet (ordinea nu contează dacă sunt specificate toate odată, sau se instalează pe rând: mai întâi dependențele după care pachetul respectiv)
$ dpkg -l
afișează TOATE pachetele instalate sau care au fost vreodată instalate. Util pentru a vedea starea unui pachet: ii - totul ok.
$ dpkg -l nume_pachet $ dpkg -l nume_parțial* $ dpkg -l *nume_parțial $ dpkg -l *nume_parțial*
afișează starea pachetelor instalat/șters/necunoscut/...
$ dpkg -S nume_fișier
afișează pachetul instalat care conține fișierul.
$ man dpkg
manualul de utilizare apt (scris și APT) - Advanced Package Tool Este sistemul de gestionare a pachetelor. Pachetele pot proveni din diverse surse (CD, DVD, ftp, ...) enumerate în /etc/apt/sources.list sau în fișierele din /etc/apt/sources.list.d/ Pachetele sunt instalate conform următoarelor priorități:
  • prioritatea sursei
  • versiunea cea mai nouă a pachetului
  • ordinea listării sursei în sources.list
Prioritățile pot fi ajustate în /etc/apt/preferences (nu există implicit) sau prin opțiunea Default-Release din /etc/apt/apt.conf (nu există implicit). Poate fi folosit prin intermediul programelor apt-get și apt-cache sau apelat ca „bibliotecă” de către alte programe.
$ man apt $ man apt.conf $ man sources.list $ man apt_preferences
manualul pentru apt și fișierele de configurare apt-get program din pachetul apt (interfață pentru apt) Poate fi folosit pentru instalare/ștergere de pachete. Considerat de nivel destul de jos, dar poate fi folosit pentru managementul sistemului. Necesită root pentru instalări/ștergeri, dar poate fi folosit de orice utilizator pentru descărcări de pachete, pachete-sursă. Exemple:
# apt-get update
actualizeaza listele cu pachete (această comandă ar trebui să fie rulată întotdeauna înainte de a instala sau actualiza pachete)
# apt-get upgrade
actualizeaza toate pachetele care pot fi actualizate
# apt-get install pidgin
descarcă (dacă este necesar) pachetul pidgin, împreună cu toate dependențele și folosește dpkg pentru a le instala
# apt-get purge pidgin
șterge pachetul pidgin (inclusiv toate fișierele de configurare la nivel de sistem)
# apt-get autoremove
șterge toate pachetele care au fost instalate doar ca dependențe pentru alte pachete
$ man apt-get
manualul de utilizare apt-cache program din pachetul apt (interfață pentru apt) Poate fi folosit pentru a obține informații despre pachete (instalate sau nu). Este mai rapid la căutări decât aptitude dar nu știe să caute decât în numele pachetelor sau descrieri. Exemple:
$ apt-cache search total commander
toate pachetele care conțin total și commander în nume sau în descriere
$ apt-cache search -n pidgin
toate pachetele care conțin pidgin în denumire
$ apt-cache policy
afișează prioritățile surselor de pachete
$ apt-cache policy pidgin
afișează versiunile pachetului din toate sursele respectiv prioritatea și „versiunea candidată”, adică cea care va fi instalată implicit cu apt-get/aptitude/synaptic
$ man apt-cache
manualul de utilizare aptitude program pentru management de pachete și interfață pentru apt aptitude folosește anumite funcții din apt, dar are implementat propriul rezolvator de dependențe (mai complex și mai puternic) și propria funcție de căutare. Pentru funcțiile de bază se poate spune că aptitude = apt-get + apt-cache dar fiecare implementează funcții pe care celelalte nu le au. Este recomandat față de apt-get de mai mulți ani, deși unii mai conservatori susțin că apt-get este mai bun. aptitude are două moduri principale de lucru: linie de comandă și interactiv. Comenzile de bază sunt similare cu apt-get/apt-cache. În modul interactiv (text) folosește combinații de taste și meniuri. Există și o interfață grafică (gtk[1]), dar este încă în stadiu experimental. Comenzile de bază sunt documentate în pagina man dar mult mai multă informație se găsește în fișierul /usr/share/doc/aptitude și în pachetul aptitude-doc-en. synaptic interfață grafică pentru apt (gtk) Folosește direct apt (nu apt-get) pe post de „bibliotecă”. Este interfața grafică recomandată pentru apt, cel puțin până când aptitude-gtk va fi utilizabil. adept interfață grafică pentru apt (KDE) A fost creat special pentru apt, dar n-a mai fost actualizat. De curând s-a fost demarat un proiect (Google Summer of Code) pentru a-l actualiza (adept 3.0). Există deja și o versiune beta, vrea cineva să testeze? :) kpackage interfață generică pentru management de pachete Se pare că folosește comenzi apt-get în fundal (în loc să folosească direct apt) și nu implementează anumite funcții importante. NU este recomandat. [1] în ghilimele pentru că toate acele programe apelează de fapt la dpkg [2] # înseamnă că acea comanda necesită root, $ înseamnă că poate fi executată de orice utilizator [3] gtk este toolkitul folosit de Gnome. Programele pot fi folosite fără probleme în KDE dar arată cam „deplasate” (grafică diferită). KDE folosește toolkitul qt. Apare destul de des și terminologia „biblioteci gtk” față de „biblioteci gnome”. Distincția este subtilă, dar destul de importantă. Un program care folosește biblioteci gnome, respectiv kde probabil că folosește părți importante din mediul respectiv și e posibil să „tragă” multe dependențe (sau toată suita). Programele care folosesc doar bibliotecile gtk respectiv qt vor fi (mult) mai „ușoare”.

14 June, 2009

Bere cu ocazia lansării Fedora 11

Ieri seară am participat la lansarea Fedora 11 în Sibiu și cu această ocazie am cunoscut și eu SbLUG SbLUG ! Sper să fie începutul unei colaborări interesante și cu multă bere :)