Gentoo Logo

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

(alsa-lib este doar un exemplu, bineînţeles.)
# 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

(Alternativ, utilizaţi equery pentru a localiza fişierele interesante:)
# 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
(Output omis)

Ş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.

Actualizat la 26 Decembrie 2005

Versiunea originală a acestui document a fost actualizată ultima dată la 22 Mai 2012

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.