|
1.
Portage vă urează Bun Venit
Portage este probabil inovaţia cea mai notabilă din Gentoo în categoria
administrării pachetelor. Fiind foarte flexibil şi conţinând un număr enorm de
caracteristici este categorizat de multe ori ca fiind cel mai bun pachet
software de administrare disponibil în Linux.
Portage este scris complet în Python şi
Bash fiind astfel vizibil
pentru utilizatori, amândouă fiind limbaje de scripting.
Majoritatea utilizatorilor vor utiliza Portage prin intermediul utilitarului
emerge. Acest capitol nu are ca scop copierea informaţiei disponibile în
pagina de manual a emerge. Pentru o consultare completă asupra opţiunilor
emerge, vă rugăm să consultaţi pagina de manual:
Cod 1.1: Consultarea paginii de manual a emerge |
$ man emerge
|
1.
Strucutura Portage
Ebuild-uri
Când ne referim la pachete, adesea înseamnă titluri de pachete software care
sunt disponibile utilizatorilor Gentoo prin intermediul structurii Portage.
Structura Portage este o colecţie de fişiere ebuild, ce conţin toată
informaţia necesară pentru ca Portage să administreze aplicaţiile (instalare,
căutare, cereri, ...). Aceste fişiere ebuild sunt localizate implicit în
/usr/portage.
Oricând interogaţi Portage în a efectueze o acţiune în legătură cu titlurile
software, va utiliza fişierele ebuild din sistemul dvs. ca bază. Este, deci,
important să vă actualizaţi în mod regulat fişierele ebuild de pe sistemul
dvs., pentru ca Portage să cunoască aplicaţiile software noi, actualizările de
securitate, etc.
Actualizarea Structurii Portage
Structura Portage este, de obicei, actualizată cu ajutorul rsync, un utilitar pentru transfer de
fişiere rapid incremental. Actualizarea este destul de simplă, deoarece comanda
emerge oferă o interfaţă pentru rsync:
Cod 1.1: Actualizarea structurii Portage |
# emerge --sync
|
Dacă nu puteţi să efectuaţi rsync din cauza restricţiilor impuse de firewall,
puteţi actualiza structura Portage utilizând arhivele snapshot ale structurii
Portage generate de către noi zilnic. Utilitarul emerge-webrsync
descarcă şi instalează automat ultima arhiva snapshot în sistemul dvs:
Cod 1.1: Rularea emerge-webrsync |
# emerge-webrsync
|
1.
Mentenanţa Software
Căutarea Pachetelor Software
Pentru a căuta prin structura Portage după titluri software, puteţi utiliza
capabilităţile de căutare integrate în emerge. Implicit, emerge
--search returnează numele pachetelor ale căror titluri corespund (fie
integral sau parţial) cu termenul utilizat pentru căutare.
Spre exemplu, pentru a căuta toate pachetele ce conţin "pdf" în nume:
Cod 1.1: Căutarea pachetelor ce conţin pdf |
$ emerge --search pdf
|
Dacă doriţi să căutaţi şi prin descrieri, puteţi utiliza parametrul
--searchdesc (sau -S):
Cod 1.1: Cautarea pachetelor în legătură cu pdf |
$ emerge --searchdesc pdf
|
Când veţi analiza ce vi se afişează, veţi observa că vă oferă multă informaţie.
Câmpurile sunt marcate clar, deci nu vom intra în amănunt:
Cod 1.1: Exemplu de afişare în cazul 'emerge --search' |
* net-print/cups-pdf
Latest version available: 1.5.2
Latest version installed: [ Not Installed ]
Size of downloaded files: 15 kB
Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
Description: Provides a virtual printer for CUPS to produce PDF files.
License: GPL-2
|
Instalarea de Software
Odată ce aţi găsit un titlu de software satisfăcător, puteţi să-l instalaţi
uşor cu emerge: doar adăugaţi numele pachetului. Spre exemplu, pentru a
instala gnumeric:
Cod 1.1: Instalarea gnumeric |
# emerge gnumeric
|
Deoarece multe aplicaţii sunt interdependente, orice încercare de a instala un
anumit pachet software poate rezulta în instalarea altor câteva dependenţe, de
asemenea. Nu vă faceţi griji, Portage poate manevra dependenţele bine. Dacă
doriţi să aflaţi ce ar instala Portage în cazul unui anumit pachet,
adăugaţi parametrul --pretend. Spre exemplu:
Cod 1.1: Simularea instalării gnumeric |
# emerge --pretend gnumeric
|
Când îi specificaţi sistemului Portage să instaleze un pachet, va descărca
codul sursă necesar de pe internet (dacă este necesar) şi-l va stoca implicit
în /usr/portage/distfiles. Apoi, va despacheta, compila şi instala
pachetul. Dacă doriţi ca portage doar să descarce sursele fără a le instala,
adăugaţi opţiunea --fetchonly comenzii emerge:
Cod 1.1: Descărcarea codului sursă pentru gnumeric |
# emerge --fetchonly gnumeric
|
Găsirea Documentaţiei Pachetelor Instalate
Multe pachete sunt distribuite cu documentaţia proprie. Uneori, indicatorul USE
doc determină dacă documentaţia pachetului respectiv va instalată sau
nu. Puteţi verifica existenţa unui indicator USE doc utilizând comanda
emerge -vp <nume pachet>.
Cod 1.1: Verificarea existenţei unui indicator USE doc |
# emerge -vp alsa-lib
[ebuild N ] media-libs/alsa-lib-1.0.9_rc3 +doc -jack 674 kB
|
Puteţi activa sau dezactiva indicatorul USE doc, fie global în fişierul
/etc/make.conf, fie specific pachetului, în fişierul
/etc/portage/package.use file. Capitolul despre (Indicatori USE) acoperă acest aspect în detaliu.
Odată ce pachetul este instalat, documentaţia acestuia se poate regăsi, de
obicei, într-un subdirector denumit în funcţie de pachet, în directorul
/usr/share/doc. Puteţi, de asemenea, să afişaţi toate fişierele
instalate cu utilitarul equery, ce face parte din pachetul app-portage/gentoolkit.
Cod 1.1: Localizarea documentaţiei unui pachet |
# ls -l /usr/share/doc/alsa-lib-1.0.9_rc3
total 28
-rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz
-rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x 2 root root 8560 May 17 21:54 html
-rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.9_rc3
* Contents of media-libs/alsa-lib-1.0.9_rc3:
/usr
/usr/bin
/usr/bin/alsalisp
|
Ştergerea de Software
Dacă doriţi să ştergeţi un pachet software de pe sistem, utilizaţi emerge
--unmerge. Aceasta îi va specifica sistemului Portage să şteargă fişierele
instalate de acel pachet din sistemul dvs. exceptând fişierele de
configurare ale acelei aplicaţii, dacă au fost modificate după instalare.
Omiterea fişierelor de configurare permite continuarea utilizării pachetului
dacă mai decideţi vreodată să-l reinstalaţi.
În orice caz, un avertisment mare se aplică: Portage nu
va verifica dacă pachetul pe care doriţi să-l îndepărtaţi îi este necesar altui
pachet. Vă va avertiza, totuşi, când veţi dori să ştergeţi un pachet important
ce vă va afecta funcţionarea sistemului în cazul operaţiei unmerge.
Cod 1.1: Ştergerea gnumeric din sistem |
# emerge --unmerge gnumeric
|
Când ştergeţi un pachet din sistemul dvs., dependenţele acelui pachet care au
fost instalate automat când aţi instalat aplicaţia sunt păstrate. Pentru ca
Portage să vă localizeze toate dependenţele ce pot fi şterse, utilizaţi
funncţionalitatea --depclean a aplicaţiei emerge. Vom trata acest
subiect ulterior.
Actualizarea Sistemului
Pentru a vă menţine sistemul în stare perfectă (ca să nu mai menţionăm şi
actualizările de securitate) trebuie să vă actualizaţi sistemul regulat.
Deoarece sistemul Portage doar verifică fişierele ebuild din structura dvs.
Portage, trebuie mai întâi să o actualizaţi pe aceasta. După ce structura
Portage este actualizată, puteţi mai întâi să vă actualizaţi sistemul cu
emerge --update world. În următorul exemplu vom utiliza, de asemenea,
opţiunea --ask ce îi va specifica sistemului Portage să afişeze lista
pachetelor ce trebuie actualizate şi vă va cere continuarea:
Cod 1.1: Actualizarea sistemului |
# emerge --update --ask world
|
Portage va căuta, apoi, versiuni noi ale aplicaţiilor instalate. Totuşi, va
verifica doar versiunile aplicaţiilor instalate explicit - nu şi dependenţele.
Dacă doriţi să actualizaţi fiecare pachet din sistemul dvs., adăugaţi
argumentul --deep:
Cod 1.1: Actualizarea întregului sistem |
# emerge --update --deep world
|
Deoarece există şi actualizări de securitate în pachete pe care nu le-aţi
instalat explicit în sistemul dvs. (dar sunt indicate ca dependenţe ale altor
programe), este recomandat să rulaţi această comandă periodic.
Dacă aţi modificat oricare din (indicatorii
USE) ulterior, va trebui să adăugaţi şi --newuse. Portage va
verifica, apoi, dacă modificările necesită instalarea de noi pachete sau
recompilarea celor deja existente:
Cod 1.1: Efectuarea unei actualizări complete |
# emerge --update --deep --newuse world
|
Meta-Pachetele
Unele pachete din structura Portage, nu au un conţinut real, dar sunt utilizate
pentru a instala o colecţie de pachete. Spre exemplu, pachetul kde va
instala întreg mediul KDE pe sistemul dvs. prin implicarea unor alte pachete ce
au legătură cu KDE ca dependenţe.
Dacă doriţi vreodată să ştergeţi un asemenea pachet din sistem, prin rularea
emerge --unmerge pentru pachetul respectiv nu va avea un efect major
pentru că dependenţele vor rămâne în sistem.
Portage are funcţionalitatea de a îndepărta dependenţe nerezolvate, de
asemenea, dar, pentru că disponibilitatea aplicaţiilor este dependentă dinamic,
va trebui întâi să actualizaţi în întregime sistemul, incluzând noile modificări
aplicate în urma schimbării indicatorilor USE. Apoi, puteţi rula emerge
--depclean pentru a şterge dependenţele nerezolvate. La sfârşit, trebuie să
reinstalaţi aplicaţiile ce sunt legate dinamic de aplicaţiile, de acum şterse,
dar care nu mai sunt necesare.
Toate acestea se pot efectua cu următoarele trei comenzi:
Cod 1.1: Îndepărtarea dependenţelor nerezolvate |
# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild
|
revdep-rebuild este oferită de pachetul gentoolkit; nu uitaţi
să-l instalaţi, mai întâi:
Cod 1.1: Instalarea pachetului gentoolkit |
# emerge gentoolkit
|
1.
Când Portage Reclamă În Legătura Cu...
SLOT-uri, Virtuale, Categorii, Arhitecturi şi Profile
Aşa cum am afirmat anterior, Portage este extrem de solid şi suportă multe
caracteristici neexistente în alte utilitare de administrare a pachetelor.
Pentru a înţelege aceasta, vom explica unele aspecte ale sistemului Portage
fără a intra prea mult în detaliu.
Cu Portage, mai multe versiuni diferite ale unui singur pachet pot coexista
într-un sistem. În timp ce alte distribuţii tind să-şi denumească pachetele
conţinând versiunile (cum ar fi freetype şi freetype2), Portage
utilizează o terminologie numită SLOT-uri. Un fişier ebuild, defineşte
un anumit SLOT pentru versiunea sa. Ebuild-urile cu SLOT-uri diferite pot
coexista în acelaşi sistem. Spre exemplu, pachetul freetype are fişiere
ebuild ce conţin SLOT="1" şi SLOT="2".
Există, de asemenea, pachete ce oferă aceeaşi funcţionalitate, dar sunt
implementate diferit. Spre exemplu, metalogd, sysklogd şi
syslog-ng sunt toate aplicaţii de tip logger de sistem. Aplicaţiile ce
se bazează pe disponibilitatea unui "logger de sistem" nu pot depinde de, spre
exemplu, metalogd, ca aplicaţie de tip "logger de sistem", pentru orice
aplicaţie de acest tip reprezintă o soluţie la fel de bună ca altele. Portage
permite virtuale: fiecare aplicaţie de tip logger de sistem oferă
virtual/syslog pentru ca aplicaţiile să poată depinde de
virtual/syslog.
Aplicaţiile software se pot afla în diferite categorii în Portage. Implicit,
sistemul dvs. acceptă doar pachete considerate de Portage ca fiind stabile.
Cele mai multe titluri software noi, când sunt comise, sunt adăugate în
categoria de testare, însemnând că trebuie să se mai efectueze unele teste
înainte de a fi marcat ca stabil. Deşi veţi observa fişiere ebuild pentru
aceste aplicaţii în structura Portage, sistemul Portage nu le va actualiza până
când nu vor fi clasate în categoria stabilă.
Unele aplicaţii sunt disponibile doar pentru puţine arhitecturi. Fie aplicaţia
nu rulează pe alte arhitecturi, ori mai trebuie testată, sau dezvoltatorul ce a
comis aplicaţia în structura Portage nu poate verifica dacă pachetul
funcţionează pe alte arhitecturi diferite.
Fiecare instalare Gentoo aderă la un anumit profil ce conţine, alături
de alte informaţii, lista cu pachetele necesare pentru ca sistemul să
funcţioneze normal.
Pachetele Blocate
Cod 1.1: Avertisment Portage în legătură cu pachetele blocate (cu --pretend) |
[blocks B ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)
|
Cod 1.1: Avertisment Portage în legătură cu pachetele blocate (fără --pretend) |
!!! Error: the mail-mta/postfix package conflicts with another package.
!!! both can't be installed on the same system together.
!!! Please use 'emerge --pretend' to determine blockers.
|
Fişierele ebuild conţin câmpuri speciale ce informează Portage despre
dependenţele sale. Există două dependenţe posibile: dependenţe de compilare,
declarate în DEPEND şi dependenţe de rulare, declarate în
RDEPEND. Când una din aceste dependenţe marchează un pachet sau un
virtual ca nefiind compatibil, se va genera un blocaj.
Pentru a repara un blocaj, puteţi alege să nu instalaţi pachetul sau să
dezinstalaţi pachetul conflictual, mai întâi. În exemplul dat, puteţi opta să
nu instalaţi postfix sau să ştergeţi, mai întâi, ssmtp.
Este, de asemenea, posibil ca două pachete care sunt pe cale să fie instalate
să se blocheze unul pe celălalt. În acest caz rar, ar trebui să găsiţi motivul
pentru care trebuie instalate amândouă. În cele mai multe cazuri puteţi
instala doar unul dintre pachete. Dacă nu, vă rugăm să completaţi un bug la
Sistemul de Urmărire a Bug-urilor al
Gentoo.
Pachete Mascate
Cod 1.1: Avertisment Portage în legătură cu pachetele mascate |
!!! all ebuilds that could satisfy "bootsplash" have been masked.
|
Cod 1.1: Avertisment Portage în legătură cu pachetele mascate - motivul |
!!! possible candidates are:
- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- media-video/ati-gatos-4.3.0 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)
|
Când doriţi să instalaţi un pachet care nu este disponibil pentru sistemul
dvs., veţi primi această eroare de mascare. Ar trebui să încercaţi instalarea
unei alte aplicaţii ce este disponibilă pentru sistemul dvs. sau să aşteptaţi
până când pachetul este marcat ca disponibil. Există întotdeauna un motiv
pentru care un pachet este mascat:
-
~arch keyword înseamnă că aplicaţia nu a fost testată suficient
pentru a fi pusă în structura principală. Aşteptaţi câteva zile sau
săptămâni şi încercaţi din nou.
-
-arch keyword sau -* keyword înseamnă că aplicaţi nu
funcţionează pe arhitectura dvs. Dacă dvs. credeţi că aplicaţia
funcţionează, raportaţi un bug pe site-ul nostru bugzilla.
-
missing keyword înseamnă că aplicaţia nu a fost testată pe
arhitectura dvs., încă. Cereţi echipei de portare să testeze pachetul sau
testaţi-l dvs. pentru ei şi raportaţi rezultatele pe site-ul nostru bugzilla.
-
package.mask înseamnă că pachetul a fost găsit corupt, instabil sau,
mai rău şi a fost marcat în mod deliberat ca a-nu-se-utiliza.
-
profile înseamnă că pachetul a fost găsit ca nepotrivit pentru
profilul dvs. Aplicaţi vă poate afecta funcţionarea sistemului dacă aţi
instala-o sau, pur şi simplu nu este compatibilă cu profilul utilizat de
dvs.
Dependenţe lipsă
Cod 1.1: Avertisment Portage despre dependenţe lipsă |
emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".
!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.
|
Aplicaţia pe care încercaţi să o instalaţi depinde de alt pachet care nu este
disponibil pentru sistemul dvs. Vă rugăm să verificaţi bugzilla dacă problema este cunoscută şi,
dacă nu este, vă rugăm să o raportaţi. Dacă nu utilizaţi structuri mixte,
problema nu ar trebui să se întâmple şi, de aceea, reprezintă un bug.
Nume de Ebuild Ambiguu
Cod 1.1: Avertisment Portage despre numele ambigue de ebuild-uri |
!!! The short ebuild name "aterm" is ambiguous. Please specify
!!! one of the following fully-qualified ebuild names instead:
dev-libs/aterm
x11-terms/aterm
|
Aplicaţia pe care doriţi să o instalaţi are un nume ce corespunde unui număr
mai mare de un pachet. Trebuie să furnizaţi şi numele categoriei, de asemenea.
Portage vă va informa de toate descrierile pentru a vă alege.
Dependenţe Circulare
Cod 1.1: Avertisment Portage despre dependenţele circulare |
!!! Error: circular dependencies:
ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2
|
Două (sau mai multe) pachete pe care doriţi să le instalaţi depind unele de
altele şi, de aceea, nu pot fi instalate. Acesta este, cel mai probabil un bug
în structura Portage. Vă rugăm să resincronizaţi după un timp şi să încercaţi
din nou. Puteţi încerca, de asemenea, bugzilla pentru a vedea dacă problema este
cunoscută şi, dacă nu este, să o raportaţi.
Descărcare eşuată
Cod 1.1: Avertisment Portage despre o descărcare eşuată |
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
!!! Some fetch errors were encountered. Please see above for details.
|
Portage nu a putut să descarce sursele pentru aplicaţia dată şi va încerca să
instaleze celelalte aplicaţii (dacă este cazul). Această eşuare se poate
întâmpla datorită unui mirror ce nu s-a sincronizat corect sau din cauză că
descrierea ebuild indică spre o locaţie incorectă. Serverul unde sunt
localizate sursele poate fi, de asemenea, indisponibil dintr-un motiv oarecare.
Reîncercaţi după o oră pentru a vedea dacă problema încă persistă.
Protecţia Profilului Sistemului
Cod 1.1: Avertisment Portage despre un pachet protejat de profil |
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.
|
Aţi cerut să ştergeţi un pachet ce este parte din pachetele de bază ale
sistemului dvs. Este listat în profilul dvs. şi necesar şi nu ar trebui, de
aceea, să fie şters din sistemul dvs.
|