Distro Way: Diferență între versiuni
(→Slackware / Bluewhite64) |
(→Slackware / Bluewhite64) |
||
| Linia 65: | Linia 65: | ||
* 3) Instrumente bazate pe [http://en.wikipedia.org/wiki/Portage_(software) Portage] | * 3) Instrumente bazate pe [http://en.wikipedia.org/wiki/Portage_(software) Portage] | ||
| − | [http://portpkg.berlios.de/ Portpkg] - este o aplicatie similara cu ''emerge'' pe sistemele Gentoo - descarca si compileaza sursele unui program, apoi il instaleaza, bazandu-se pe informatiile continute in asa numitele ''ports tree''. In mod traditional, adaugati programe pe un sistem Slackware, fie instaland un pachet gata facut, fie generati codul binar compiland sursele acestora in mod manual. In timp ce prima metoda ar putea sa nu va satisfaca, a doua ofera un deplin control asupra codului rezultat prin aceea ca puteti alege exact optiunile de compilare dorite. Portpkg este undeva la mijloc: are o interfata asemanatoare cu ''installpkg'' si in acelasi timp, un sistem de scripturi pe care sistemul le foloseste la compilare si care va ofera mai mult control. | + | [http://portpkg.berlios.de/ Portpkg] - este o aplicatie similara cu ''emerge'' pe sistemele Gentoo - descarca si compileaza sursele unui program, apoi il instaleaza, bazandu-se pe informatiile continute in asa numitele ''ports tree''. In mod traditional, adaugati programe pe un sistem Slackware, fie instaland un pachet gata facut, fie generati codul binar compiland sursele acestora in mod manual. In timp ce prima metoda ar putea sa nu va satisfaca, a doua ofera un deplin control asupra codului rezultat prin aceea ca puteti alege exact optiunile de compilare dorite. ''Portpkg'' este undeva la mijloc: are o interfata asemanatoare cu ''installpkg'' si in acelasi timp, un sistem de scripturi pe care sistemul le foloseste la compilare si care va ofera mai mult control. |
=== Sincronizare === | === Sincronizare === | ||
Versiunea de la data 9 decembrie 2007 04:10
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.
Cuprins
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
Deoarece distributia nu contine instrumente pentru rezolvarea automata a dependentelor si nu pune la dispozitie un sistem automat pentru descarcarea si instalarea acestora, aplicatii terte vin sa completeze aceste lipsuri. Ele sunt impartite in:
- 1) Instrumente bazate pe repozitorii dar care nu satisfac dependente (repository-based tools)
slackpkg - inclus pe al doilea CD al distributiei incepand cu versiunea 9.1, este un instrument automat pentru managementul pachetelor. Poate instala si actualiza pachete prin retea din repozitorii oficiale Slackware.
- 2) Instrumente care satisfac dependente
Swaret - ca si slakpkg, este o aplicatie care cauta, instaleaza si actualizeaza pachete prin retea. Poate cauta in repozitorii terte cum ar fi LinuxPackages.net si e capabila sa-si instaleze automat bibliotecile dependente.
slapt-get si versiunea GTK gslapt - aplicatie care incearca sa emuleze apt-get folosind instrumentele native Slackware (installpkg, upgradepkg, removepkg).
- 3) Instrumente bazate pe Portage
Portpkg - este o aplicatie similara cu emerge pe sistemele Gentoo - descarca si compileaza sursele unui program, apoi il instaleaza, bazandu-se pe informatiile continute in asa numitele ports tree. In mod traditional, adaugati programe pe un sistem Slackware, fie instaland un pachet gata facut, fie generati codul binar compiland sursele acestora in mod manual. In timp ce prima metoda ar putea sa nu va satisfaca, a doua ofera un deplin control asupra codului rezultat prin aceea ca puteti alege exact optiunile de compilare dorite. Portpkg este undeva la mijloc: are o interfata asemanatoare cu installpkg si in acelasi timp, un sistem de scripturi pe care sistemul le foloseste la compilare si care va ofera mai mult control.
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.
Slackware / Bluewhite64
netconfig este un script interactiv care detecteaza si configureaza interfetele de retea. Rulati-l si urmati pasii de acolo daca aveti nevoie de o configuratie minima. Atentie, va suprascrie fisierele /etc/rc.d/rc.inet1.conf si /etc/resolv.conf. Daca netconfig nu da rezultate sau daca nu va multumeste, veti fi nevoiti sa editati fisierele de configurare.
Modulele le gasiti in /etc/rc.d/rc.modules. Slackware va uita in acest fisier si va incarca pe kernel orice va gasi acolo. Trebuie doar sa inlaturati comentariul pentru dispozitivul respectiv.
Fisierele de configurare pentru retea sunt /etc/rc.d/rc.inet1 si /etc/rc.d/rc.inet2. Primul configureaza parametrii retelei citind /etc/rc.d/rc.inet1.conf, al doilea porneste diverse servicii (inetd, NFS, bind, ssh, etc). Daca folositi mai mult de 6 interfete modificati MAXNICS in /etc/rc.d/rc.inet1.
Iata un exemplu de configurare pentru rc.inet1.conf:
# Config information for eth0: IPADDR[0]="10.75.16.251" NETMASK[0]="255.255.255.0" USE_DHCP[0]="" DHCP_HOSTNAME[0]="" # Config information for eth1: IPADDR[1]="" NETMASK[1]="" USE_DHCP[1]="yes" DHCP_HOSTNAME[1]="" # Config information for test interface: IFNAME[8]="eth0:test" IPADDR[8]="10.75.17.251" NETMASK[8]="255.255.255.0" USE_DHCP[8]="" DHCP_HOSTNAME[8]="" # Default gateway IP address: GATEWAY="10.75.16.254"
Daca USE_DHCP[interface] este "yes", celelalte setari sunt ignorate. Daca nu doriti sa setati o interfata, lasati campul "" gol.
Intreaga configuratie de retea se controleaza ruland /etc/rc.d/rc.inet1 cu argumentul start|stop|restart, daca aveti nevoie sa reporniti doar o interfata dati scriptului argumentul corespunzator interfetei (exemplu /etc/rc.d/rc.inet1 eth1_restart).
Daca folositi masina Slackware ca router, asigurati-va ca /etc/rc.d/rc.ip_forward are permisiuni de executie:
chmod 755 /etc/rc.d/rc.ip_forward
Daca vreti sa ridicati rute mai speciale, puteti sa le adaugati la sfarsitul fisierului rc.inet1:
echo '/sbin/route add -net 10.75.19.0 netmask 255.255.255.0 dev eth1' >> /etc/rc.d/rc.inet1
Firewall-ul este pornit de rc.inet2 ruland /etc/rc.d/rc.firewall. Acest fisier nu exista in mod implicit, trebuie sa-l faceti si sa-i dati permisiuni la executie:
if [[ -f /etc/iptables.conf && -x /usr/sbin/iptables-restore ]]; then /usr/sbin/iptables-restore < /etc/iptables.conf; fi
Ca si la celelalte distributii, serverele de nume se configureaza in /etc/resolv.conf.
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.