Ghid pentru utilizarea Rpm

RPM - Red Hat Package Manager, un sistem de management de software de viață și în curs de dezvoltare în adâncimi de Red Hat. Există, de asemenea, o definiție recursivă a RPM în stilul GNU nu este UNIX - RPM Package Manager. Dacă alegeți această opțiune, va scrie un „viu și în curs de dezvoltare în măruntaiele Open Source». În general, cineva de genul asta. Dacă doare partea formală, RPM este licențiat sub GPL v.2.

Interesul nostru în acest sistem, din cauza existenței unui set de distribuțiilor bazate pe rpm, adică distribuții, este o colecție de pachete rpm legate dependențe în concordanță cu mecanismele de instalare de sprijin necesare. Printre distribuitorii de sisteme de operare bazate pe RPM - granturi osestroeniya, cum ar fi Hat foarte Red, Suse (Novell astăzi subdiviziune), Mandrake și multe alte proiecte, și de lungă durată și efemer.

Și în distribuțiile de compoziție și ca dezvoltare individuală disponibile un număr mare de instrumente grafice pentru a-frontend rpm. În virtutea tăinuire, așa cum se întâmplă atât de des, unele dintre caracteristicile sistemului de ambalare funcționează aceste instrumente, nu vom lua în considerare. În plus, marea majoritate a situațiilor, lucrează în consola cu privire la RPM-pachete este mult mai simplă și mai transparentă (cu excepția combinațiilor complexe ale diferitelor versiuni ale dependențele de alte programe).

Acest articol încearcă să examineze subiecte importante, cum ar fi comenzile de utilitate format rpm, dimensiunea pachetului și spec-fișier, secvență de asamblare pachet și aproape nu sunt afectate de arhitectura RPM, ca administratorii acestor detalii nu sunt importante, iar dezvoltatorii sunt utilizate în principal interfețe, cum ar fi bibliotecile librpm. Prin urmare, în cele mai bune tradiții se referă „interesați să știe“ cum funcționează în interiorul codul sursă.

Pentru a investiga rpm (nu RPM) din instrumentele necesare Midnight Commander. Sincer, este dificil să ne imaginăm un pachet rpm-dezvoltator, care nu utilizează mc. Motivele pentru această discuție pe. Dintre condițiile suplimentare care pot fi menționate anumită perioadă de timp liber și răbdare.

Toate exemplele au fost rulate pe sistemul de operare SUSE Linux 10.0.

O privire sumară.

Ca rpm elimină necesitatea de a păstra toate detaliile despre instalate în software-ul sistemului de operare trebuie să fie un mecanism care îndeplinește aceste funcții în cadrul managerul de pachete. Și este: o bază de date rpm. În versiunile în cadrul motorului de baze de date v.4 merge în static pachetul, v.4 foloseste BDB extern (Berkeley Baza de date). Utilitarul are o interfață de comandă de nivel înalt care permite interogări în baza de date a pachetelor instalate și dependențele lor.

Deci, vom trece la exemple. Utilitate rpm poate funcționa în diferite moduri, modul de set-cheie de bază de comandă. În plus, există un număr de opțiuni, care funcționează în orice mod.

un format de instrucțiuni utilizat pentru a instala pachetul:

# Rpm -i <имя пакета>

Și aici ne confruntăm cu primul dezavantaj, deoarece numele pachetului trebuie să fie dat în întregime, împreună cu toate versiunile sale și de a construi numere. Faptul că utilitatea cauta pur si simplu calea specificata cu numele de fișier, astfel încât numele trebuie să se potrivească exact. De exemplu, pe sistemul meu pentru a instala mc trebuie să spun următoarele (presupunând că disponibilitatea superuser):

# Rpm -I / calea depozit / mc-4.6.1-5.i586.rpm

Dar, în scopul de a elimina un pachet, puteți specifica ca pachetul pur și simplu prin mc, la fel ca în acest caz, utilitatea accesează deja baza de date pachet:

Pentru funcționarea în modul pachete de modernizare, tasta -U. Dacă doriți să instalați o anumită versiune a unui pachet, nu neapărat pentru a afla dacă versiunea anterioară a pachetului disponibil în sistem, utilizați -U suficient. Utility Versiuni disponibile de reîmprospătare, în lipsa pachetului - l instalați. Prin urmare, cele mai frecvente este opțiunea de a comanda de setare, ca aceasta:

# Rpm -Uhv / calea depozit / mc-4.6.1-5.i586.rpm

sau dintr-un depozit de la distanță:

# Rpm -Uhv ftp: // ivanov: [email protected]: 7020 / cale depozit / mc-4.6.1-5.i586 .rpm

Alte două moduri interesante: de verificare și modul de interogare. Pentru a evalua caracteristicile de verificare instalate pachete, efectuați următorul experiment: de a deteriora imaginea unui anumit pachet și verificați-l cu rpm.

De exemplu, aproape întotdeauna în lista de comenzi / directorul bin al primului arc este un fișier executabil. Acest utilitar afișează informații despre arhitectura procesorului sistemului la ieșirea standard. Pentru a învăța din pachetul de acest fișier, utilizați modul de interogare în care RPM este pornit utilizând tasta -q. Opțiunea -f întreabă ce pachet include acest fișier:

Acum, creați o copie de rezervă a programului, și apoi adăugați fișierul un caracter:

# Cp / bin / arc / bin / arch_back

# Echo "1" >> / bin / arc

După aceea, mecanismul de verificare de pachete ar trebui să ne informeze despre problemele existente:

# Rpm -V-linux-UTIL 2.12q-26

Ieșirea linie există unele caractere în fața numelui fișierului pachetului (în cazul în care verificarea are succes și nici un prejudiciu, retragerea nu va fi), care indică natura defecțiunii. În acest caz, s este schimbarea în dimensiunea fișierului, 5 - încălcarea de fișier MD5 semnătură, T - modificarea timpului ultimei modificări (de exemplu, timpul de copiere a fișierului în sistem, în acest caz).

Restaurați fișierul și inspectată-re:

# Mv / bin / arch_back / bin / arc

# Rpm -V-linux-UTIL 2.12q-26

și vedem că tot ce avem este bun, cu excepția ultimei modificări a fișierului / bin / arc, care va corespunde copia timpul înapoi. Aceste informații ajută administratorii identificarea unor probleme și pachete - candidați pentru reinstalării.

Caracteristici avansate.

În modurile de adiție, rpm mare utilitate are mai multe opțiuni, dintre care unele sunt legate de un anumit mod de celălalt au semnificația câteva moduri sau în toate. Câteva exemple de opțiuni utilizate frecvent.

Modul de setare-eliminare este adesea o necesitate de a utiliza opțiuni de --nodeps sau --force. Primul vă permite să instalați (eliminați) pachet indiferent dacă satisfăcut toate dependențele sale, al doilea - pentru a instala un pachet, chiar dacă sistemul are mai multe versiuni recente ale fișierelor. Unele opțiuni de interes --aid, care satisfac în mod automat apar în funcție --test și ceea ce înseamnă că testarea tranzacțiilor, adică toată producția pe probleme emergente vor fi efectuate, dar nu au fost făcute din operațiuni reale. Este foarte convenabil pentru a simula deteriorarea sistemului, ca urmare a oricărei acțiuni.

capacități de colectare mari oferă opțiunea de interogare. Despre pachetul și fișierele sale, puteți obține aproape orice informații de la o scurtă referire la pachetul (o combinație -qi taste) și o listă de fișiere pachet (-ql) și se termină cu o valoare de unele servicii câmpurile de antet de pachete binare. Aceste posibilități sunt realizate fie prin intermediul unor chei de filtre corespunzătoare sau prin opțiunea --queryformat, care permite să se deducă numai câmpul de serviciu comandat. De exemplu, comanda

# Rpm -q --queryformat% <имя пакета>

afișează descrierea pachetului și echipa

# Rpm -q --queryformat% <имя пакета>

- numele distribuției, în care compoziția este un pachet. Și înlocuirea -qp -Q pentru a permite aceleași informații pentru a obține de la rpm-fișierul nu este specificat în sistemul de pachete. Puteți obține o listă de doar fișierul de configurare pachet, sau numai a fișierelor de documentație, sau numai fișierele care conțin numele unei expresii regulate, care este, în principiu, orice.

Foarte des (lene - motorul progresului) utilizat interogări, producția care este transmis filtrele externe. De exemplu, o cerere pentru toate fișierele instalate redirecționată către grep, ajuta la găsirea unui pachet cu numele dat, sau un nume care conține secvența specificată de caractere. echipă

# Rpm -qa | grep mc

afișează lista de pachete care nume găsite prin combinarea mc, iar echipa

# Rpm -qa | grep ^ mc

o listă de pachete ale căror nume încep cu mc.

Pentru lipsa de spațiu nu discutăm astfel de opțiune exotice, dar importante pentru dezvoltator, cum ar fi, --showrc, care vă permite să afișați conținutul fișierelor, script-uri și macro-uri din fișiere rpmrc și macro-uri pentru ieșire standard sau într-un fișier, și multe altele. Trebuie remarcat faptul că rpm vine cu o documentație detaliată, omule.

Ce e înăuntru.

Cateva cuvinte despre ceea ce se întâmplă în procesul de instalare și de eliminare a pachetului. După cum sa menționat deja, rpm automatizează operațiunile de rutină. La instalarea pachetului (eliminare), orice măsuri arbitrar complexe de configurare pachete instalate, sau eliminarea urmelor de pachete de activitate eliminate, pot fi plasate în scripturi. În funcție de poziția acestor script-uri în secvența canonică de acțiuni, cum ar fi instalarea unui pachet, aceste script-uri sunt numite preinstallyatsionnymi sau POST. organigrame standard inițializată rpm la instalarea pachetului, după cum urmează:

checked posibile conflicte (varianta cea mai comună a conflictului - sunt deja instalate pachetul cu același nume o versiune mai recentă);

fișiere de configurare procesate;

Fișierele binare sunt copiate într-un director;

Post-rula script-uri;

bază de date pachet actualizat.

Formatul pachetului-rpm.

format de pachet este format dintr-un antet și un cpio-arhivă binară care conține fișierele binare într-un copac director în care sunt stocate în sistem după instalarea pachetului. Mc manager de fișiere înțelege tot felul de arhive, inclusiv - pachetul rpm. În cazul în care MC evidenția rpm-pachet panou și apăsați enter, vom vedea un sistem de fișiere pseudo, format din următoarele componente: un director INFO, arhiva CONTENTS.cpio, cel care conține fișierele binare, fișierul antetului și psevdoskriptov instalat și de ACTUALIZARE. În catalogul INFO conține fișiere ale căror nume se potrivesc cu numele câmpurilor spec-fișier, a conținutului - valorile câmpurilor. fișier HEADER - în esență, același lucru, numai într-un singur fișier. Link-uri și upgrade corespund INSTALL rpm -ih echipe <имя пакета> și rpm -Uh <имя пакета>. Adică, în cazul în care apăsați, apar aceste acțiuni.

În formatul real sistem de fișiere, nu, nu. Doar mc poate în felul lor de a interpreta antetul pachetului binar pentru un mare respect lui pentru dezvoltatori.

Dacă se dorește, puteți selecta cpio-arhivă a întregului pachet. În acest scop, există rpm2cpio de utilitate.

Construiți pachetul.

Versiune pachet rpm Modul v.4 construi este conceput ca un utilitar separat - rpmbuild. Noi folosim cea mai eficientă metodă pentru a studia tehnologia, care este, colecta modelul rpm-pachet. Nu se pune problema ce să facă în cazul în care programul vom ambala în rpm. Ar trebui să spunem: «Bună ziua, lume!»!

Distribuțiile bazate pe RPM, există un copac director special, conceput exclusiv pentru asamblarea unui pachet. Acesta se află în / usr / src (în SUSE Linux - în / usr / src / pachete) și conține directoare BUILD, RPM-uri, surse, SPECS, SRPMS. Ele sunt destinate pentru stocarea, respectiv, director de asamblare temporară compilate rpm binar, sursa de stocare a fișierelor de cod de specificație colectate src.rpm-pachete. Src.rpm conțin codul sursă și spec-fișiere și sunt destinate să reconstruiască pe mașinile țintă, pentru a se adapta mai bine la mediul de arhitectură și a sistemului acestor mașini. Pentru asamblare, avem nevoie de codul sursă, care este ambalat în mod tradițional în tar.gz sau tar.bz2 și spec-fișier. fișier Spec-rpm pentru aproximativ la fel ca Makefile pentru a face utilitate. Acesta este un scenariu detaliat a ceea ce ar trebui să se întâmple în adunarea cu toate definițiile necesare și câmpurile de servicii. Deci, la afaceri.

int main (int argc, char ** argv)

Nu uita șir gol la sfârșitul fișierului. „Ll codul sursă pachet tar.gz (da comanda, localizat în directorul / usr / src / pachete / SURSE):

# Tar cvfz ./hi-0.1.tar.gz ./hi.c

Rezumat: în utilitate Bine ai venit.