Distro Way: Diferență între versiuni

De la Wiki.lug.ro
Salt la: navigare, căutare
Linia 1: Linia 1:
GNU/Linux este un sistem de operare deosebit de versatil. E un lucru foarte bun, desigur, dar ca orice lucru foarte bun, are şi părţile lui neplăcute. În cazul nostru este vorba de apariţia unei adevarate "babilonii" de [[distribuţii]], care fac aceleaşi lucruri (de exemplu setarea înterfeţei de reţea) în fel şi chip, făcând viaţa adminstratorilor de sisteme un infern. O să încercăm aici să echivalăm (pe cât este posibil) comenzile necesare pentru configurarea diverselor sisteme bazate pe Linux.
+
GNU/Linux este un sistem de operare deosebit de versatil. E un lucru foarte bun, desigur, dar ca orice lucru foarte bun, are şi părţile lui neplăcute. În cazul nostru este vorba de apariţia unei adevarate "babilonii" de [[distribuţii]], care fac aceleaşi lucruri (de exemplu setarea interfeţei de reţea) în fel şi chip, făcând viaţa administratorilor de sisteme un infern. O să încercăm aici să echivalăm (pe cât este posibil) comenzile necesare pentru configurarea diverselor sisteme bazate pe Linux.
  
 
==[[gestionar de pachete|Manager-ul de pachete]]==
 
==[[gestionar de pachete|Manager-ul de pachete]]==
 
=== Sistemul de management ===
 
=== Sistemul de management ===
 
==== Gentoo ====
 
==== Gentoo ====
Sistemul de management al pachetelor se numeşte ''portage''. Este inspirat din ''ports'', întâlnită la sismele de operare BSD-like. Deosebirea majoră faţă de alte managere este că aplicaţiile sunt instalate în general din surse şi nu din binare. Acest lucru permite un control riguros al capabilităţilor dorite de la aplicaţiilor instalate, prin folosirea variabilei ''USE''.
+
Sistemul de management al pachetelor se numeşte ''portage''. Este inspirat din ''ports'', întâlnit la sistemele de operare BSD-like. Deosebirea majoră faţă de alte managere este că aplicaţiile sunt instalate în general din surse şi nu din binare. Acest lucru permite un control riguros al capabilităţilor dorite de la aplicaţiile instalate, prin folosirea variabilei ''USE''.
Un exemplu destul de comun este eliminarea dependenţelor nedorite faţă de pachete care nu ne sunt necesare. Să luăm cazul postfix (un server SMTP). Acest server are posibilitatea să folosească MySQL pentru tabelele de lookup. Să presupunem că nu ne interesează această capabilitate (sau dimpotrivă, ne interesează). În primul caz vom executa "USE=-mysql emerge postfix", în cel de-al doilea "USE=mysql emerge postfix". Managerul de pachete se va adapta şi ne va genera un postfix care NU are ca dependenţă biblioteca ''libmysqlclient'' (în primul caz), fie se va asigura că în sistem există ŞI ''libmysqlclient''.  
+
Un exemplu destul de comun este eliminarea dependenţelor nedorite faţă de pachete care nu ne sunt necesare. Să luăm cazul postfix (un server SMTP). Acest server are posibilitatea să folosească MySQL pentru tabelele de lookup. Să presupunem că nu ne interesează această capabilitate (sau dimpotrivă, ne interesează). În primul caz vom executa "USE=-mysql emerge postfix", în cel de-al doilea "USE=mysql emerge postfix". Managerul de pachete se va adapta şi ne va genera un postfix care '''nu''' are ca dependenţă biblioteca ''libmysqlclient'' (în primul caz), fie se va asigura că în sistem există '''şi''' ''libmysqlclient''.  
 
Cum rezolvă un astfel de caz un manager de pachete care foloseşte pachete gata compilate? Ar fi vreo patru cazuri:
 
Cum rezolvă un astfel de caz un manager de pachete care foloseşte pachete gata compilate? Ar fi vreo patru cazuri:
* 1) nu ne ofera deloc opţiunea de MySQL (şi atunci trebuie compilat manual)
+
* 1) nu ne oferă deloc opţiunea de MySQL (şi atunci trebuie compilat manual)
 
* 2) ne obligă să avem suport pentru MySQL, chiar dacă nu avem nevoie de el
 
* 2) ne obligă să avem suport pentru MySQL, chiar dacă nu avem nevoie de el
 
* 3) sunt furnizate pachete care să acopere toate cazurile posibile (foarte greu de aplicat în cazul în care există multe opţiuni posibile)
 
* 3) sunt furnizate pachete care să acopere toate cazurile posibile (foarte greu de aplicat în cazul în care există multe opţiuni posibile)
 
* 4) poate avem norocul ca aplicaţia noastră să fie ''plug-abilă'' şi atunci managerul de pachete ne va furniza pachete separate cu fiecare plugin în parte (cum este de exemplu PHP)
 
* 4) poate avem norocul ca aplicaţia noastră să fie ''plug-abilă'' şi atunci managerul de pachete ne va furniza pachete separate cu fiecare plugin în parte (cum este de exemplu PHP)
  
Criticii spun ca acest sistem de management al pachetelor este foarte lent (ceea ce e şi normal, având în vedere că se compilează fiecare pachet în parte.
+
Criticii spun acest sistem de management al pachetelor este foarte lent (ceea ce e şi normal, având în vedere că se compilează fiecare pachet în parte).
 
==== RedHat ====
 
==== RedHat ====
Managementul pachetelor la RedHat / CentOS / Fedora se face cu ''yum''. Denumirea vine de la Yellow Dog Updater. Pentru mai multe informatii, o pagina buna de plecare e aici[http://en.wikipedia.org/wiki/Yellow_dog_Updater%2C_Modified]. Sistemul de pachete este ''rpm-based'', iar managementul dependentelor este destul de eficient.
+
Managementul pachetelor la RedHat / CentOS / Fedora se face cu ''yum''. Denumirea vine de la Yellow Dog Updater. Pentru mai multe informaţii, o pagină bună de plecare e aici[http://en.wikipedia.org/wiki/Yellow_dog_Updater%2C_Modified]. Sistemul de pachete este ''rpm-based'', iar managementul dependenţelor este destul de eficient.
 
==== Slackware / Bluewhite64 ====
 
==== Slackware / Bluewhite64 ====
Pachetele Slackware / Bluewhite64 cuprind aplicatii binare arhivate tar si compresate gzip. Ele au extensia .tgz si se manipuleaza cu:
+
Pachetele Slackware / Bluewhite64 cuprind aplicaţii binare arhivate tar şi compresate gzip. Ele au extensia .tgz şi se manipulează cu:
* 1) ''pkgtool'' - este un program bazat pe meniuri dialog cu o interfata intuitiva care permite instalarea, dezinstalarea sau listarea fisierelor unui pachet, precum si vizualizarea unei scurte descrieri a acestuia
+
* 1) ''pkgtool'' - este un program bazat pe meniuri dialog cu o interfaţă intuitivă care permite instalarea, dezinstalarea sau listarea fişierelor unui pachet, precum şi vizualizarea unei scurte descrieri a acestuia
* 2) ''installpkg'' - utilitar in linie de comanda care permite instalarea pachetelor noi. Apelat fara nici o optiune, un pachet instalat anterior va fi '''suprascris fara atentionare'''. Optiunea ''-warn'' vine in ajutor listand fisierele care urmeaza a fi suprascrise, corespunzator cu pachetul respectiv.  
+
* 2) ''installpkg'' - utilitar în linie de comandă care permite instalarea pachetelor noi. Apelat fără nici o opţiune, un pachet instalat anterior va fi '''suprascris fără atenţionare'''. Opţiunea ''-warn'' vine în ajutor listând fişierele care urmează a fi suprascrise, corespunzator cu pachetul respectiv.  
* 3) ''upgradepkg'' - asemanator lui ''installpkg'' cu diferenta ca dezinstaleaza mai intai pachetul vechi dupa care il instaleaza pe cel nou
+
* 3) ''upgradepkg'' - asemănător lui ''installpkg'' cu diferenţa că dezinstalează mai întâi pachetul vechi după care îl instalează pe cel nou
* 4) ''explodepkg'' - extrage continutul unui pachet in directorul curent. Este echivalent cu tar -zxf ''nume_pachet'' si este util pentru examinarea fisierelor inainte de instalare
+
* 4) ''explodepkg'' - extrage conţinutul unui pachet în directorul curent. Este echivalent cu tar -zxf ''nume_pachet'' şi este util pentru examinarea fişierelor înainte de instalare
* 5) ''makepkg'' - impacheteaza continutul directorului curent in format .tgz
+
* 5) ''makepkg'' - împachetează conţinutul directorului curent în format .tgz
* 6) ''rpm2tgz'' si ''rpm2targz'' - utile pentru transformarea pachetelor RPM in pachete native .tgz. Aceste comenzi, daca sunt combinate cu ''explode'', aduc informatii despre fisierele continute in pachetul RPM
+
* 6) ''rpm2tgz'' şi ''rpm2targz'' - utile pentru transformarea pachetelor RPM în pachete native .tgz. Aceste comenzi, dacă sunt combinate cu ''explode'', aduc informaţii despre fişierele conţinute în pachetul RPM
  
Utilitarele folosesc o baza de date cu inregistrari text pe calea /var/log/packages (pentru pachete instalate) sau /var/log/removed_packages (pentru cele dezinstalate).
+
Utilitarele folosesc o bază de date cu înregistrări text pe calea /var/log/packages (pentru pachete instalate) sau /var/log/removed_packages (pentru cele dezinstalate).
  
Ce e bine sa stiti:
+
Ce e bine să ştiţi:
  
* 1) Instalarea pachetelor '''se face orb''', fara a se tine seama de dependinte si versiuni de biblioteci. Folositi doar pachetele corespunzatoare distributiei! Versiunea o puteti afla cu:
+
* 1) Instalarea pachetelor '''se face orb''', fără a se ţine seama de dependenţe şi versiuni de biblioteci. Folosiţi doar pachetele corespunzatoare distributiei! Versiunea o puteţi afla cu:
 
  cat /etc/slackware-version
 
  cat /etc/slackware-version
 
  cat /etc/bluewhite64-version
 
  cat /etc/bluewhite64-version
* 2) Actualizarea pachetelor presupune reinstalarea acestora, '''nu si a bibliotecilor dependente'''.
+
* 2) Actualizarea pachetelor presupune reinstalarea acestora, '''nu şi a bibliotecilor de care depind'''.
* 3) Folositi ''-warn'' inainte de instalare sau ''--dry-run'' inainte de actualizare. Faceti backup mai ales pachetelor venite pe distributii vechi, care se gasesc mai greu azi.
+
* 3) Folosiţi ''-warn'' înainte de instalare sau ''--dry-run'' înainte de actualizare. Faceţi backup mai ales pachetelor venite pe distribuţii vechi, care se găsesc mai greu azi.
  
Mai multe informatii gasiti la [http://www.slackware.com.ro/carte/package-management-package-utilities.html http://www.slackware.com.ro/carte/package-management-package-utilities.html].
+
Mai multe informaţii găsiţi la [http://www.slackware.com.ro/carte/package-management-package-utilities.html http://www.slackware.com.ro/carte/package-management-package-utilities.html].
  
 
=== Repository ===
 
=== Repository ===
Linia 42: Linia 42:
 
==== Gentoo ====
 
==== Gentoo ====
 
La sistemele Gentoo-based există două tipuri de ''repository-uri'':
 
La sistemele Gentoo-based există două tipuri de ''repository-uri'':
* 1) tree-ul ''portage'', care conţine înformaţii generale (metadata) legate de pachete (cum ar fi [[dependenţe]], patch-uri, locul de unde poate fi descărcat codul sursă, etc)
+
* 1) tree-ul ''portage'', care conţine informaţii generale (metadata) legate de pachete (cum ar fi [[dependenţe]], patch-uri, locul de unde poate fi descărcat codul sursă, etc)
 
* 2) ''distfiles'' (care sunt sursele propriu-zise)
 
* 2) ''distfiles'' (care sunt sursele propriu-zise)
 
Ambele ''repository-uri'' se configurează modificând corespunzător fişierul /etc/make.conf:
 
Ambele ''repository-uri'' se configurează modificând corespunzător fişierul /etc/make.conf:
Linia 60: Linia 60:
  
 
=== Sincronizare ===
 
=== Sincronizare ===
Unele distribuţii au nevoie de o actulizare periodică a arborelui cu metadate, pentru reîmprospătarea informaţiilor la aplicaţiile nou întroduse în ''repository'', update-uri, etc.
+
Unele distribuţii au nevoie de o actualizare periodică a arborelui cu metadate, pentru reîmprospătarea informaţiilor la aplicaţiile nou introduse în ''repository'', update-uri, etc.
  
 
==== Gentoo ====
 
==== Gentoo ====
Linia 103: Linia 103:
 
Sintaxa generală este:
 
Sintaxa generală este:
 
  emerge NUME_PROGRAM
 
  emerge NUME_PROGRAM
În cazul în care apare vreo dependinţă nerezolvată, ''emerge'' va instala toate pachetele de care are nevoie sau le va actualiza pe cele care sunt prea vechi pentru a putea fi folosite.
+
În cazul în care apare vreo dependenţă nerezolvată, ''emerge'' va instala toate pachetele de care are nevoie sau le va actualiza pe cele care sunt prea vechi pentru a putea fi folosite.
  
 
=== Actualizare ===
 
=== Actualizare ===
Linia 109: Linia 109:
 
Actualizarea unui pachet în Gentoo se rezumă la reinstalarea acestuia. ''emerge'' va instala noul pachet PESTE cel vechi, după care va şterge fişierele din vechiul pachet a căror timestamp corespunde cu ce informaţii despre vechiul pachet are portage în metadate. De exemplu:
 
Actualizarea unui pachet în Gentoo se rezumă la reinstalarea acestuia. ''emerge'' va instala noul pachet PESTE cel vechi, după care va şterge fişierele din vechiul pachet a căror timestamp corespunde cu ce informaţii despre vechiul pachet are portage în metadate. De exemplu:
 
  emerge postfix
 
  emerge postfix
va suprascrie "/usr/sbin/postfix", care din acest moment are un timestamp mai nou decat ce stie vechea versiune despre acesta (şi din acest motiv va considera că nu-i aparţine, prin urmare nu-l va şterge la uninstall).
+
va suprascrie "/usr/sbin/postfix", care din acest moment are un timestamp mai nou decat ce ştie vechea versiune despre acesta (şi din acest motiv va considera că nu-i aparţine, prin urmare nu-l va şterge la uninstall).
  
 
=== Dezinstalare ===
 
=== Dezinstalare ===
Linia 120: Linia 120:
 
Întrebare grea, mai ales dacă trebuie să afli această informaţie de la un sistem pe care nu-l cunoşti.
 
Întrebare grea, mai ales dacă trebuie să afli această informaţie de la un sistem pe care nu-l cunoşti.
 
==== Gentoo ====
 
==== Gentoo ====
E nevoie de un pachet special, numit ''gentoolkit''. După ce în instalaţi, rulaţi comanda de mai jos:
+
E nevoie de un pachet special, numit ''gentoolkit''. După ce îl instalaţi, rulaţi comanda de mai jos:
 
  equery b /usr/sbin/postfix
 
  equery b /usr/sbin/postfix
 
==== RedHat ====
 
==== RedHat ====
Linia 126: Linia 126:
  
 
=== Repararea sistemului ===
 
=== Repararea sistemului ===
În cazul în care ai şters anumite pachete/fisiere sistemul poate deveni instabil. Cele mai multe distribuţii pun la dispozitie diverse utilitare de reparare a sistemului.
+
În cazul în care ai actualizat/şters anumite pachete/fişiere sistemul poate deveni instabil. Cele mai multe distribuţii pun la dispoziţie diverse utilitare de reparare a sistemului.
 
==== Gentoo ====
 
==== Gentoo ====
 
  revdep-rebuild [-p]
 
  revdep-rebuild [-p]
Va căuta dacă există fiecare bibliotecă de care are nevoie fiecare binar în parte şi dacă este versiunea de care are nevoie. În caz contrar, face o listă cu toate pachetele care trebuiesc recompilate pentru a restabili integritatea sistemului. Fără parametrul -p le şi recompilează, nu doar afişează lista. Din cauza faptului că verifică fiecare binar în parte, poate dura destul de mult o astfel de inspectare a sistemului.
+
Va căuta dacă există fiecare bibliotecă de care are nevoie fiecare binar în parte şi dacă este versiunea de care are nevoie. În caz contrar, face o listă cu toate pachetele care trebuiesc recompilate pentru a restabili integritatea sistemului. Fără parametrul -p le şi recompilează, nu se rezumă doar la afişearea listei. Deoarece verifică fiecare binar în parte, poate dura destul de mult o astfel de inspectare a sistemului.
  
 +
Alte utilitare pentru restabilirea integrităţii sistemului, în cazul actualizării pachetului ''python'', respectiv ''perl'':
 
  python-updater
 
  python-updater
 
  perl-cleaner
 
  perl-cleaner
Linia 148: Linia 149:
 
* - 80.23.32.1 este serverul de nume
 
* - 80.23.32.1 este serverul de nume
  
O metoda mai noua este folosirea comenzii ''ip'' din pachetul ''iproute2''. Cu aceasta comanda se pot gestiona mai bine adresele IP, deoarece permite adaugarea/stergerea de adrese IP pe o interfata fara a mai folosi alias-uri (eth0:alias).
+
O metodă mai nouă este folosirea comenzii ''ip'' din pachetul ''iproute2''. Cu această comandă se pot gestiona mai bine adresele IP, deoarece permite adaugarea/ştergerea de adrese IP pe/de pe o interfaţă fără a mai folosi alias-uri (eth0:alias).
  
 
De exemplu:
 
De exemplu:
Linia 155: Linia 156:
 
  ip route add default via 192.168.15.254
 
  ip route add default via 192.168.15.254
  
In plus, ''ip'' mai permite managementul tabelei ARP ('ip neighbor'), managementul tunelelor IP-IP sau GRE ('ip tunnel'), managementul de "rules" pentru folosirea de tabele de routing multiple ('ip rule'), etc.
+
În plus, ''ip'' mai permite managementul tabelei ARP ('ip neighbor'), managementul tunelelor IP-IP sau GRE ('ip tunnel'), managementul de "rules" pentru folosirea de tabele de routing multiple ('ip rule'), etc.
Mai multe informatii despre ''ip'' aici: [http://www.policyrouting.org/iproute2-toc.html], sau Google dupa "iproute2".
+
Mai multe informaţii despre ''ip'' [http://www.policyrouting.org/iproute2-toc.html aici]:, sau [http://www.google.ro/search?q=iproute2 Google].
  
 
Atenţie, exemplele sunt arbitrare.
 
Atenţie, exemplele sunt arbitrare.
Linia 162: Linia 163:
 
=== Configurarea persistentă ===
 
=== Configurarea persistentă ===
 
==== Gentoo ====
 
==== Gentoo ====
Fisierul de configurare pentru reţea este /etc/conf.d/net
+
Fişierul de configurare pentru reţea este /etc/conf.d/net
 
Sintaxa este următoarea:
 
Sintaxa este următoarea:
  
Linia 168: Linia 169:
 
  routes_eth0=( "default via 192.168.0.254" )
 
  routes_eth0=( "default via 192.168.0.254" )
  
Nameserver-ele se introduc in /etc/resolv.conf
+
Nameserver-ele se introduc în /etc/resolv.conf
  
In cazul in care in sistem există o placă de reţea şi nu doriţi să o folosiţi, introduceţi
+
Dacă în sistem există o placă de reţea şi nu doriţi să o folosiţi, introduceţi
 
  config_eth1=( "null" )
 
  config_eth1=( "null" )
 
În caz contrar există riscul să i se aloce un IP prin DHCP.
 
În caz contrar există riscul să i se aloce un IP prin DHCP.
Linia 196: Linia 197:
 
  routes_br0=( "default gw 192.168.0.254" )
 
  routes_br0=( "default gw 192.168.0.254" )
  
In Gentoo interfeţele de reţea sunt "ridicate" ca nişte servicii. De exemplu pentru eth0 trebuie creat un symlink la /etc/init.d/net.eth0, după care trebuie adăugat net.eth0 în lista de servicii pornite la boot.
+
În Gentoo interfeţele de reţea sunt "ridicate" ca nişte servicii. De exemplu pentru eth0 trebuie creat un symlink la /etc/init.d/net.lo, după care trebuie adăugat net.eth0 în lista de servicii pornite la boot.
  
 
  ln -s net.lo /etc/init.d/net.eth0
 
  ln -s net.lo /etc/init.d/net.eth0
 
  rc-update add net.eth0 default
 
  rc-update add net.eth0 default
  
Dacă aţi modificat parametri unei interfeţe de reţea, o reîncărcaţi executând:
+
Dacă aţi modificat parametri unei interfeţe de reţea (în /etc/conf.d/net), o reîncărcaţi executând:
  
 
  /etc/init.d/net.eth0 restart
 
  /etc/init.d/net.eth0 restart
  
 
==== RedHat ====
 
==== RedHat ====
Mare parte din fisierele de configurare pentru retea se gasesc in /etc/sysconfig/network-scripts.
+
Mare parte din fişierele de configurare pentru reţea se găsesc în /etc/sysconfig/network-scripts.
Setarile placilor de retea sunt in /etc/sysconfig/network-scripts/ifcfg-ethN. Sintaxa este intuitiva:
+
Setările plăcilor de reţea sunt în /etc/sysconfig/network-scripts/ifcfg-ethN. Sintaxa este intuitivă:
 
  IPADDR=192.168.0.1
 
  IPADDR=192.168.0.1
 
  NETMASK=255.255.255.0
 
  NETMASK=255.255.255.0
 
  HWADDR=00:11:22:33:44:55
 
  HWADDR=00:11:22:33:44:55
Atentie, trebuie specificate corect adresele de Network si Broadcast (vezi Subnetting [http://en.wikipedia.org/wiki/Subnetting]).
+
Atenţie, trebuie specificate corect adresele de Network si Broadcast (vezi Subnetting [http://en.wikipedia.org/wiki/Subnetting]).
Parametrul HWADDR specifica MAC-ul placii de retea respective, pentru cazul in care exista in sistem mai multe placi de retea ce folosesc acelasi driver. Atentie si aici, identificarea placilor pe baza HWADDR nu functioneaza prea bine. Pentru mai multe info, Google dupa "HWADDR".
+
Parametrul HWADDR specifică MAC-ul plăcii de reţea respective, pentru cazul în care există în sistem mai multe plăci de reţea ce folosesc acelaşi driver. Atenţie şi aici, identificarea plăcilor pe baza HWADDR nu functionează prea bine. Pentru mai multe info, [http://www.google.ro/search?q=HWADDR Google].
  
Dupa modificarea acestor fisiere, se reporneste tot subsistemul de networking cu comanda ''service network restart'' sau ''/etc/init.d/network restart'' (cele doua variante sunt echivalente).
+
După modificarea acestor fişiere, se reporneşte tot subsistemul de reţea cu comanda ''service network restart'' sau ''/etc/init.d/network restart'' (cele două variante sunt echivalente).
  
Hint: de obicei, gateway-ul este pastrat in /etc/sysconfig/network.
+
Hint: de obicei, gateway-ul este păstrat în /etc/sysconfig/network.
  
Setarile firewall-ului sunt pastrate in /etc/sysconfig/iptables. Nu se recomanda editarea manuala a acelui fisier, deoarece va fi incarcat cu ''iptables-restore''; se recomanda construirea manuala a firewall-ului cu comenzi ''iptables'', apoi salvarea regulilor cu comanda ''service iptables save''.
+
Setările firewall-ului sunt păstrate în /etc/sysconfig/iptables. Nu se recomandă editarea manuală a acelui fişier, deoarece va fi încarcat cu ''iptables-restore''; se recomandă construirea manuală a firewall-ului cu comenzi ''iptables'', apoi salvarea regulilor cu comanda ''service iptables save''.
  
 
==Scripturile de startup==
 
==Scripturile de startup==
Linia 230: Linia 231:
 
  service postfix stop
 
  service postfix stop
  
=== Adaugarea/eliminarea unui serviciu în/din autostart ===
+
=== Adăugarea/eliminarea unui serviciu în/din autostart ===
 
==== Gentoo ====
 
==== Gentoo ====
 
  rc-update add postfix default
 
  rc-update add postfix default
Linia 240: Linia 241:
 
  chkconfig --level 35 postfix on
 
  chkconfig --level 35 postfix on
 
  chkconfig --level 35 postfix off
 
  chkconfig --level 35 postfix off
Observatie: "35" inseamna runlevel-urile 3 si 5. Vezi [http://en.wikipedia.org/wiki/Runlevel].
+
Observaţie: "35" înseamnă runlevel-urile 3 şi 5. Vezi [http://en.wikipedia.org/wiki/Runlevel].
  
 
==== openSUSE 10+ ====
 
==== openSUSE 10+ ====
Linia 252: Linia 253:
 
  insserv -r postfix
 
  insserv -r postfix
  
Daca nu se speficica runlevel-ul, se va utiliza runlevels "Default-Start" din scriptul respectiv
+
Dacă nu se specifică runlevel-ul, se va utiliza runlevels "Default-Start" din scriptul respectiv.

Versiunea de la data 7 decembrie 2007 17:05

GNU/Linux este un sistem de operare deosebit de versatil. E un lucru foarte bun, desigur, dar ca orice lucru foarte bun, are şi părţile lui neplăcute. În cazul nostru este vorba de apariţia unei adevarate "babilonii" de distribuţii, care fac aceleaşi lucruri (de exemplu setarea interfeţei de reţea) în fel şi chip, făcând viaţa administratorilor de sisteme un infern. O să încercăm aici să echivalăm (pe cât este posibil) comenzile necesare pentru configurarea diverselor sisteme bazate pe Linux.

Manager-ul de pachete

Sistemul de management

Gentoo

Sistemul de management al pachetelor se numeşte portage. Este inspirat din ports, întâlnit la sistemele de operare BSD-like. Deosebirea majoră faţă de alte managere este că aplicaţiile sunt instalate în general din surse şi nu din binare. Acest lucru permite un control riguros al capabilităţilor dorite de la aplicaţiile instalate, prin folosirea variabilei USE. Un exemplu destul de comun este eliminarea dependenţelor nedorite faţă de pachete care nu ne sunt necesare. Să luăm cazul postfix (un server SMTP). Acest server are posibilitatea să folosească MySQL pentru tabelele de lookup. Să presupunem că nu ne interesează această capabilitate (sau dimpotrivă, ne interesează). În primul caz vom executa "USE=-mysql emerge postfix", în cel de-al doilea "USE=mysql emerge postfix". Managerul de pachete se va adapta şi ne va genera un postfix care nu are ca dependenţă biblioteca libmysqlclient (în primul caz), fie se va asigura că în sistem există şi libmysqlclient. Cum rezolvă un astfel de caz un manager de pachete care foloseşte pachete gata compilate? Ar fi vreo patru cazuri:

  • 1) nu ne oferă deloc opţiunea de MySQL (şi atunci trebuie compilat manual)
  • 2) ne obligă să avem suport pentru MySQL, chiar dacă nu avem nevoie de el
  • 3) sunt furnizate pachete care să acopere toate cazurile posibile (foarte greu de aplicat în cazul în care există multe opţiuni posibile)
  • 4) poate avem norocul ca aplicaţia noastră să fie plug-abilă şi atunci managerul de pachete ne va furniza pachete separate cu fiecare plugin în parte (cum este de exemplu PHP)

Criticii spun că acest sistem de management al pachetelor este foarte lent (ceea ce e şi normal, având în vedere că se compilează fiecare pachet în parte).

RedHat

Managementul pachetelor la RedHat / CentOS / Fedora se face cu yum. Denumirea vine de la Yellow Dog Updater. Pentru mai multe informaţii, o pagină bună de plecare e aici[1]. Sistemul de pachete este rpm-based, iar managementul dependenţelor este destul de eficient.

Slackware / Bluewhite64

Pachetele Slackware / Bluewhite64 cuprind aplicaţii binare arhivate tar şi compresate gzip. Ele au extensia .tgz şi se manipulează cu:

  • 1) pkgtool - este un program bazat pe meniuri dialog cu o interfaţă intuitivă care permite instalarea, dezinstalarea sau listarea fişierelor unui pachet, precum şi vizualizarea unei scurte descrieri a acestuia
  • 2) installpkg - utilitar în linie de comandă care permite instalarea pachetelor noi. Apelat fără nici o opţiune, un pachet instalat anterior va fi suprascris fără atenţionare. Opţiunea -warn vine în ajutor listând fişierele care urmează a fi suprascrise, corespunzator cu pachetul respectiv.
  • 3) upgradepkg - asemănător lui installpkg cu diferenţa că dezinstalează mai întâi pachetul vechi după care îl instalează pe cel nou
  • 4) explodepkg - extrage conţinutul unui pachet în directorul curent. Este echivalent cu tar -zxf nume_pachet şi este util pentru examinarea fişierelor înainte de instalare
  • 5) makepkg - împachetează conţinutul directorului curent în format .tgz
  • 6) rpm2tgz şi rpm2targz - utile pentru transformarea pachetelor RPM în pachete native .tgz. Aceste comenzi, dacă sunt combinate cu explode, aduc informaţii despre fişierele conţinute în pachetul RPM

Utilitarele folosesc o bază de date cu înregistrări text pe calea /var/log/packages (pentru pachete instalate) sau /var/log/removed_packages (pentru cele dezinstalate).

Ce e bine să ştiţi:

  • 1) Instalarea pachetelor se face orb, fără a se ţine seama de dependenţe şi versiuni de biblioteci. Folosiţi doar pachetele corespunzatoare distributiei! Versiunea o puteţi afla cu:
cat /etc/slackware-version
cat /etc/bluewhite64-version
  • 2) Actualizarea pachetelor presupune reinstalarea acestora, nu şi a bibliotecilor de care depind.
  • 3) Folosiţi -warn înainte de instalare sau --dry-run înainte de actualizare. Faceţi backup mai ales pachetelor venite pe distribuţii vechi, care se găsesc mai greu azi.

Mai multe informaţii găsiţi la http://www.slackware.com.ro/carte/package-management-package-utilities.html.

Repository

O distribuţie vine în general cu o colecţie destul de largă de aplicaţii, care pot fi furnizate pe suport CD (odată cu distribuţia), repository-uri oficiale şi repository-uri de la terţe persoane (aşa numitele 3-rd party). În cele mai multe cazuri repository-urile aflate în Internet sunt disponibile şi pe mirror-uri locale (pentru un acces mai rapid la ele). Majoritatea distribuţiilor permit alegerea explicită a mirror-ului de unde vrem să se descarce pachetele când instalăm vre-un program.

Gentoo

La sistemele Gentoo-based există două tipuri de repository-uri:

  • 1) tree-ul portage, care conţine informaţii generale (metadata) legate de pachete (cum ar fi dependenţe, patch-uri, locul de unde poate fi descărcat codul sursă, etc)
  • 2) distfiles (care sunt sursele propriu-zise)

Ambele repository-uri se configurează modificând corespunzător fişierul /etc/make.conf:

SYNC="rsync://rsync.ro.gentoo.org/gentoo-portage"
GENTOO_MIRRORS="http://gentoo.mirrors.lug.ro/gentoo"

Slackware / Bluewhite64

slackpkg

SWareT

Portpkg

Emerde

Sincronizare

Unele distribuţii au nevoie de o actualizare periodică a arborelui cu metadate, pentru reîmprospătarea informaţiilor la aplicaţiile nou introduse în repository, update-uri, etc.

Gentoo

emerge -v --sync

Actualizarea sistemului

Gentoo

emerge -v --sync && emerge -D --newuse world && etc-update

Cu etc-update se corectează eventualele incompatibilităţi în fişierele de configurare între diferitele versiuni ale unui anumit pachet.

Căutare

Gentoo

La căutare se poate folosi doar un fragment din numele programului. De exemplu:

emerge -s postfix

va returna:

*  mail-mta/postfix
     Latest version available: 2.4.6-r1
     Latest version installed: 2.4.6-r1
     Size of files: 2,878 kB
     Homepage:      http://www.postfix.org/
     Description:   A fast and secure drop-in replacement for sendmail.
     License:       IPL-1

*  sec-policy/selinux-postfix
     Latest version available: 20070928
     Latest version installed: [ Not Installed ]
     Size of files: 415 kB
     Homepage:      http://www.gentoo.org/proj/en/hardened/selinux/
     Description:   SELinux policy for postfix
     License:       GPL-2

*  www-apps/postfixadmin
     Latest version available: 2.1.0
     Latest version installed: [ Not Installed ]
     Size of files: 156 kB
     Homepage:      http://high5.net/postfixadmin/
     Description:   Postfix Admin is a Web Based Management tool for Postfix [...]
     License:       MPL-1.1

Instalare

Gentoo

Sintaxa generală este:

emerge NUME_PROGRAM

În cazul în care apare vreo dependenţă nerezolvată, emerge va instala toate pachetele de care are nevoie sau le va actualiza pe cele care sunt prea vechi pentru a putea fi folosite.

Actualizare

Gentoo

Actualizarea unui pachet în Gentoo se rezumă la reinstalarea acestuia. emerge va instala noul pachet PESTE cel vechi, după care va şterge fişierele din vechiul pachet a căror timestamp corespunde cu ce informaţii despre vechiul pachet are portage în metadate. De exemplu:

emerge postfix

va suprascrie "/usr/sbin/postfix", care din acest moment are un timestamp mai nou decat ce ştie vechea versiune despre acesta (şi din acest motiv va considera că nu-i aparţine, prin urmare nu-l va şterge la uninstall).

Dezinstalare

Gentoo

Atenţie, dezinstalarea din Gentoo nu ţine cont de dependenţe. Dacă aveţi un postfix cu suport mysql şi dezinstalaţi mysql sistemul NU VA EMITE NICI UN AVERTISMENT legat de dependenţe. Bineinţeles că postfix va înceta să mai funcţioneze. Sintaxa este:

emerge --unmerge NUME_PROGRAM

Cui aparţine acest fişier?

Întrebare grea, mai ales dacă trebuie să afli această informaţie de la un sistem pe care nu-l cunoşti.

Gentoo

E nevoie de un pachet special, numit gentoolkit. După ce îl instalaţi, rulaţi comanda de mai jos:

equery b /usr/sbin/postfix

RedHat

rpm -qf /nume/fisier

Repararea sistemului

În cazul în care ai actualizat/şters anumite pachete/fişiere sistemul poate deveni instabil. Cele mai multe distribuţii pun la dispoziţie diverse utilitare de reparare a sistemului.

Gentoo

revdep-rebuild [-p]

Va căuta dacă există fiecare bibliotecă de care are nevoie fiecare binar în parte şi dacă este versiunea de care are nevoie. În caz contrar, face o listă cu toate pachetele care trebuiesc recompilate pentru a restabili integritatea sistemului. Fără parametrul -p le şi recompilează, nu se rezumă doar la afişearea listei. Deoarece verifică fiecare binar în parte, poate dura destul de mult o astfel de inspectare a sistemului.

Alte utilitare pentru restabilirea integrităţii sistemului, în cazul actualizării pachetului python, respectiv perl:

python-updater
perl-cleaner

Configurarea reţelei

Setarea "ad-hoc" a parametrilor

Probabil comună oricarei distribuţii Linux (old way):

ifconfig eth0 192.168.0.1 netmask 255.255.255.0
route add default gw 192.168.0.254
echo "nameserver 80.23.32.1" >> /etc/resolv.conf

Unde:

  • - eth0 este numele interfeţei de reţea
  • - 192.168.0.1 este IP-ul maşinii pe care o configurăm
  • - 192.168.0.254 este default gateway-ul
  • - 80.23.32.1 este serverul de nume

O metodă mai nouă este folosirea comenzii ip din pachetul iproute2. Cu această comandă se pot gestiona mai bine adresele IP, deoarece permite adaugarea/ştergerea de adrese IP pe/de pe o interfaţă fără a mai folosi alias-uri (eth0:alias).

De exemplu:

ip address add 192.168.15.1/24 dev eth0
ip address del 192.168.15.1/24 dev eth0
ip route add default via 192.168.15.254

În plus, ip mai permite managementul tabelei ARP ('ip neighbor'), managementul tunelelor IP-IP sau GRE ('ip tunnel'), managementul de "rules" pentru folosirea de tabele de routing multiple ('ip rule'), etc. Mai multe informaţii despre ip aici:, sau Google.

Atenţie, exemplele sunt arbitrare.

Configurarea persistentă

Gentoo

Fişierul de configurare pentru reţea este /etc/conf.d/net Sintaxa este următoarea:

config_eth0=( "192.168.0.1 netmask 255.255.255.0" )
routes_eth0=( "default via 192.168.0.254" )

Nameserver-ele se introduc în /etc/resolv.conf

Dacă în sistem există o placă de reţea şi nu doriţi să o folosiţi, introduceţi

config_eth1=( "null" )

În caz contrar există riscul să i se aloce un IP prin DHCP.

Exemplu pentru o placă wireless (chipset ATHEROS), cu wpa_supplicant:

modules=( "wpa_supplicant" )
wpa_supplicant_ath0="-Dmadwifi"
iwconfig_ath0="mode managed freq 2.412G rate auto rts 250 frag 512 txpower 18"
config_ath0=( "192.168.0.1 netmask 255.255.255.0" )
routes_ath0=( "default via 192.168.0.254" )

Crearea unui bridge (util pentru utilizarea cu un virtualbox):

config_eth0=( "null" )

tuntap_tap0="tap"
config_tap0=( "null" )
tunctl_tap0="-u serghei"

bridge_br0="eth0 tap0"
config_br0=( "10.0.2.2/24" )
RC_NEED_br0="net.eth0 net.tap0"
brctl_br0=( "setfd 0" "sethello 0" "stp off" )
routes_br0=( "default gw 192.168.0.254" )

În Gentoo interfeţele de reţea sunt "ridicate" ca nişte servicii. De exemplu pentru eth0 trebuie creat un symlink la /etc/init.d/net.lo, după care trebuie adăugat net.eth0 în lista de servicii pornite la boot.

ln -s net.lo /etc/init.d/net.eth0
rc-update add net.eth0 default

Dacă aţi modificat parametri unei interfeţe de reţea (în /etc/conf.d/net), o reîncărcaţi executând:

/etc/init.d/net.eth0 restart

RedHat

Mare parte din fişierele de configurare pentru reţea se găsesc în /etc/sysconfig/network-scripts. Setările plăcilor de reţea sunt în /etc/sysconfig/network-scripts/ifcfg-ethN. Sintaxa este intuitivă:

IPADDR=192.168.0.1
NETMASK=255.255.255.0
HWADDR=00:11:22:33:44:55

Atenţie, trebuie specificate corect adresele de Network si Broadcast (vezi Subnetting [2]). Parametrul HWADDR specifică MAC-ul plăcii de reţea respective, pentru cazul în care există în sistem mai multe plăci de reţea ce folosesc acelaşi driver. Atenţie şi aici, identificarea plăcilor pe baza HWADDR nu functionează prea bine. Pentru mai multe info, Google.

După modificarea acestor fişiere, se reporneşte tot subsistemul de reţea cu comanda service network restart sau /etc/init.d/network restart (cele două variante sunt echivalente).

Hint: de obicei, gateway-ul este păstrat în /etc/sysconfig/network.

Setările firewall-ului sunt păstrate în /etc/sysconfig/iptables. Nu se recomandă editarea manuală a acelui fişier, deoarece va fi încarcat cu iptables-restore; se recomandă construirea manuală a firewall-ului cu comenzi iptables, apoi salvarea regulilor cu comanda service iptables save.

Scripturile de startup

Pornirea/oprirea manuală a unui serviciu

Gentoo

/etc/init.d/postfix start
/etc/init.d/postfix stop

RedHat

service postfix start
service postfix stop

Adăugarea/eliminarea unui serviciu în/din autostart

Gentoo

rc-update add postfix default
rc-update del postfix

Daemonii care nu au script de service se pot porni/opri la boot/shutdown adaugându-i în "/etc/conf.d/local.start" şi/sau "/etc/conf.d/local.stop".

RedHat

chkconfig --level 35 postfix on
chkconfig --level 35 postfix off

Observaţie: "35" înseamnă runlevel-urile 3 şi 5. Vezi [3].

openSUSE 10+

chkconfig -s postfix
chkconfig -s postfix 35
chkconfig -d postfix

sau

insserv -d postfix
insserv -r postfix

Dacă nu se specifică runlevel-ul, se va utiliza runlevels "Default-Start" din scriptul respectiv.