Aceasta arată diferențele dintre revziile selectate și versiunea curentă a paginii.
— |
tutorial_rpm [2008/05/31 20:10] (curent) |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
+ | -- maaxx 20/04/2005 | ||
+ | Tutorial RPM | ||
+ | tradus si adaptat de la www.speculation.org/garrick/ | ||
+ | |||
+ | ===== Ce este RPM? ===== | ||
+ | |||
+ | RPM-ul (RedHat Package Manager) este o metota foarte utila de a distribui software pe sistemele linux. Utilizatorii M$ Windows se pot gandi la un RPM cala un kit .exe, insa aproximarea este foarte vaga, diferentele sunt multiple si profunde. | ||
+ | |||
+ | ===== Ce este un pachet? ===== | ||
+ | |||
+ | |||
+ | Un pachet este pur si simplu o colectie de fisiere alcatuind un program, o librarie etc si care sunt "sudate" impreuna intr-un fisier RPM. "Source rpms" sau rpm-urile sursa sunt folosite pentru a livra codul sursa al programului respectiv si sunt identificate dupa sufixul "src.rpm". Rpm-urile binare sunt precompilate pentru un anumit tip de procesor si au in componenta numelui si sufixul arhitecturii; in cazul Mandriva acesta este "i586.rpm". | ||
+ | |||
+ | ===== Unde gasesc informatii detaliate despre RPM? ===== | ||
+ | |||
+ | |||
+ | Exista 4 resurse foarte bune care merita luate in consideratie (in aceasta ordine): pagina de manual (man rpm), HOWTO-ul de la http://linuxdoc.org/HOWTO/RPM-HOWTO/index.html, HOWTO-ul Mandrake de la http://www.mandrakelinux.com/howtos/mdk-rpm/ si cartea despre RPM de la O\'Reilly. | ||
+ | |||
+ | ===== Ar trebui sa iau un rpm i686 pentru ca este mai bun decat unul i586? ===== | ||
+ | |||
+ | |||
+ | Procesorul Pentium original reprezinta arhitectura "i586". Procesoarele Pentium II/III/IV reprezinta toate arhitecturi i686.Toate acestea insa sunt compatibile cu arhitecturile de dinaintea lor (adica si cu i586). Este | ||
+ | posibil sa gasiti multe rpm-uri i386 (Fedora Core spre exemplu) care vor functiona pe orice tip de procesor. | ||
+ | |||
+ | ===== Pot sa instalez un rpm pe care l-am gasit pe nu stiu ce site? ===== | ||
+ | |||
+ | |||
+ | In general este recomandat sa folositi numai rpm-uri distribuite de Mandrake, si chiar mai mult de atat, incercati sa nu folositi rpm-uri pentru alte versiuni de Mandrake decat cea de care dispuneti. | ||
+ | |||
+ | ===== Dar de la rpmfind.net pot instala rpm-uri? ===== | ||
+ | |||
+ | |||
+ | Rpmfind.net (si intreaga suita de mirroruri) este in majoritatea cazurilor fara de folos. Citeste FAQ-ul despre urpmi! | ||
+ | |||
+ | ===== Toate comenzile rpm, urpmi, rpmdrake se blocheaza, cee de facut? ===== | ||
+ | |||
+ | |||
+ | Probabil ca o comanda rpm anterioara a fost intrerupta necorespunzator si baza de date rpm a ramas blocata.Comanda | ||
+ | <code> | ||
+ | rm -f /var/lib/rpm/__*; | ||
+ | rpm --rebuilddb | ||
+ | </code> | ||
+ | data de root ar trebui sa rezolve problema. | ||
+ | |||
+ | ===== Cum instalez un rpm? ===== | ||
+ | |||
+ | |||
+ | Cu comanda: | ||
+ | <code> rpm -Uvh nume-pachet.rpm</code> | ||
+ | |||
+ | ===== Cum dezinstalez un rpm? ===== | ||
+ | |||
+ | Cu comanda: | ||
+ | <code>rpm -e nume-pachet</code> | ||
+ | |||
+ | (atentie, nu am mai pus la sfarsitul pachetului si terminatia/sufixul .rpm! Optiunea -e data comenzii rpm ii spune acesteia sa dezinstaleze). | ||
+ | |||
+ | ===== Cum vad ce fisiere sunt instalate cu un rpm? ===== | ||
+ | |||
+ | |||
+ | <code>rpm -qlp nume-pachet.rpm</code> | ||
+ | |||
+ | ===== Nu pot instala pachetul ===== | ||
+ | |||
+ | |||
+ | Nu pot instala pachetul foo.rpm pentru ca are nevoie de bar.rpm, iar bar.rpm nu poate fi instal | ||
+ | at pentru ca are nevoie de foo.rpm; ce e de facut? | ||
+ | |||
+ | <code>rpm -Uvh foo.rpm bar.rpm</code> | ||
+ | |||
+ | ===== Unde gasesc un pachet rpm? ===== | ||
+ | |||
+ | |||
+ | Incearca http://www.rpmfind.net sau http://rpm.pbone.net | ||
+ | |||
+ | ===== Dependinte ===== | ||
+ | |||
+ | |||
+ | cutare-pachet.rpm are nevoie de cutare-alt-pachet.rpm pentru a se instala, nu pot s-o las balt | ||
+ | a si sa folosesc optiunea --force? | ||
+ | |||
+ | Nu. Cel care a construit cutare-pachet.rpm spune ca AI NEVOIE de cutare-alt-pachet.rpm! | ||
+ | |||
+ | ===== Care-i toata treaba legata de acest -Uvh? ===== | ||
+ | |||
+ | |||
+ | "U" vine de la "Upgrade" care este totuna cu "Install" numai ca va dezinstala versiuni precedente ale programului daca ele exista si este nevoie. | ||
+ | "vh" arata pe ecran un dialog dragut de progres. | ||
+ | |||
+ | ===== Primesc niste erori ciudate legat de chei GPG, ce e de facut? ===== | ||
+ | |||
+ | |||
+ | Tot trucul aici este sa gasesti cheia GPG. Cheile oficiale Mandrake sunt usor de gasit, celelalte pot fi pe un server de chei sau pe un site web. | ||
+ | Pentru pachete Mandrake folositi comanda: | ||
+ | <code> | ||
+ | rpm --import http://www.mandrakesoft.com/security/RPM-GPG-KEYS | ||
+ | </code> | ||
+ | Pentru PLF: | ||
+ | <code> | ||
+ | rpm --import http://plf.zarb.org/plf.asc | ||
+ | </code> | ||
+ | |||
+ | ===== Cum listez toate rpm-urile instalate? ===== | ||
+ | |||
+ | <code> | ||
+ | rpm -qa | less</code> | ||
+ | |||
+ | ===== Care fisiere au fost instalate de pachetul foo? ===== | ||
+ | |||
+ | |||
+ | <code>rpm -ql foo</code> | ||
+ | |||
+ | ===== Ce rpm a instalat fisierul /cutare/fisier? ===== | ||
+ | |||
+ | |||
+ | <code>rpm -qf /cutare/fisier</code> | ||
+ | |||
+ | ===== Ce este cu pachetul asta cutare.rpm ===== | ||
+ | |||
+ | |||
+ | <code>rpm -qip cutare.rpm</code> | ||
+ | |||
+ | ===== Cand folosesc optiunea -p la comanda rpm? ===== | ||
+ | |||
+ | |||
+ | nFolositi optiunea -p atunci cand doriti sa interogati direct un fisier rpm, altfel va fi interogata intreaba baza de date cu rpm-uri care sunt instalate in sistem. | ||
+ | |||
+ | ===== Cum pot personaliza raspunsul la comenzile rpm? ===== | ||
+ | |||
+ | |||
+ | In primul rand folositi "rpm --querytags" ca sa sa vedeti lista tuturor etichetelor valide, dupa care puteti folosi comenzi gen: | ||
+ | |||
+ | <code>rpm -q --queryformat %{TAGNAME} foo</code> | ||
+ | |||
+ | De exemplu, | ||
+ | |||
+ | <code>rpm -q --queryformat %{VENDOR} textutils</code> | ||
+ | |||
+ | va raspunde "MandrakeSoft". | ||
+ | |||
+ | ===== Ce fisiere/pachete sunt necesare instalarii lui cutare.rpm? ===== | ||
+ | |||
+ | |||
+ | <code>rpm -qp --requires cutare.rpm</code> | ||
+ | |||
+ | ===== Ce pachete se vor defecta daca dezinstalez cutare.rpm? ===== | ||
+ | |||
+ | |||
+ | <code>rpm -q --whatrequires cutare</code> | ||
+ | |||
+ | ===== Am sters /cutare/fisier, dar acum il vreau inapoi; ce rpm trebuie sa reinstalez? ===== | ||
+ | |||
+ | |||
+ | (merge numai pe Mandriva): | ||
+ | |||
+ | <code>urpmf /cutare/fisier</code> | ||
+ | |||
+ | ===== Cum extrag un singur fisier dintr-un rpm? ===== | ||
+ | |||
+ | |||
+ | Spre exemplu sa spunem ca vrem sa extragem imaginea gqradio.png din pachetul gqradio-1.9.1-1.i586.rpm. Facem asa: | ||
+ | |||
+ | <code>rpm -qlp gqradio-1.9.1-1.i586.rpm</code> | ||
+ | |||
+ | Rezultatul va fi unul destul de lung: | ||
+ | <code> | ||
+ | /usr/bin/gqradio\r\n/usr/share/applications/gqradio.desktop | ||
+ | /usr/share/doc/gqradio-1.9.1 | ||
+ | /usr/share/doc/gqradio-1.9.1/ | ||
+ | COPYING | ||
+ | ..................................................... | ||
+ | /usr/share/locale/fr/LC_MESSAGES/gqradio.mo | ||
+ | /usr/share/pixmaps/gqradio.png | ||
+ | </code> | ||
+ | apoi: | ||
+ | <code> | ||
+ | rpm2cpio < gqradio-1.9.1-1.i586.rpm |/bin/cpio -id ./usr /share/pixmaps/gqradio.png | ||
+ | 1565 blocks | ||
+ | |||
+ | [lucian@evenstar tmp]$ ls -al /home/lucian/tmp/usr/share/pixmaps/gqradio.png | ||
+ | -rw-r--r-- 1 lucian lucian 1551 Feb 16 09:35 /home/lucian/tmp/usr/share/pixmaps/gqradio.png | ||
+ | </code> | ||
+ | gata, fisierul este al nostru! cam laborios, nu? dar am reusit! | ||
+ | |||
+ | ===== Cum instalez un rpm sursa numit cutare.src.rpm? ===== | ||
+ | |||
+ | |||
+ | Atentie: NU FACETI ASTA CA ROOT! | ||
+ | Folositi, ca user normal, comanda: | ||
+ | <code> | ||
+ | rpm --rebuild cutare.src.rpm</code> | ||
+ | Spre sfarsitul output-ului ar trebui sa vedeti ceva de genul: | ||
+ | |||
+ | "Wrote: /home/user/rpm/RPMS/i586/cutare.i586.rpm\" | ||
+ | |||
+ | ===== Nu merge! rpm --rebuild ===== | ||
+ | |||
+ | |||
+ | Nu merge! **rpm --rebuild cutare.src.rpm** tocmai mi-a dat un raspuns de genul | ||
+ | |||
+ | /usr/lib/rpm/rpmb: No such file or directory | ||
+ | |||
+ | Instaleaza pachetul rpm-build: | ||
+ | <code> | ||
+ | urpmi rpm-build | ||
+ | </code> | ||
+ | |||
+ | Comanda anterioara tocmai mi-a dat eroarea **cannot write to %sourcedir bla bla bla*. Ce inseamna asta? | ||
+ | |||
+ | Pentru a construi un rpm este nevoie de o structura speciala de directoare si de doua mici fisiere de configurare care sa fie amplasate in home. | ||
+ | |||
+ | Descarca http://speculation.org/garrick/setup_rpm_files.sh (recomandat cu wget), fa-l executabil | ||
+ | <code> | ||
+ | chmod +x setup_rpm_files.sh | ||
+ | </code> | ||
+ | |||
+ | si executa scriptul. | ||
+ | |||
+ | ===== Este bine sa construim pacheteca root? ===== | ||
+ | |||
+ | NU! Ca parte a procesului de construire a rpm-ului, software-ul este de asemenea instalat astfel incat rpm-ul sa fie creat corect. Este important ca acest lucru sa se intample intr-un mediu controlat si neprivilegiat. | ||
+ | |||
+ | ===== Primesc o eroare de genul "user blabla does not exist"! ===== | ||
+ | |||
+ | Ignorati mesajul, este doar un warning. Fisierele din src.rpm aveau owner pe userul blabla cand au fost creat | ||
+ | e si cel mai probabil acesta nu exista pe sistemul dumneavoastra. | ||
+ | |||
+ | ===== Incerc sa compilez cutare program si se plange ca lipseste nu stiu ce librarie! Am instalat libraria, dar in continuare am probleme! ===== | ||
+ | |||
+ | Toate librariile sunt impartite in doua: versiunea \"run-time\" de care au nevoie unele programe ca sa functioneze si versiunea "build-time". Versiunea "run-time" contine numai cate mici fisiere necesare rularii unor programe, pe cand versiunea "build-time" este mult mai mare, continand librarii si headere necesare compilarii unui program ce are nevoie de libraria respectiva. | ||
+ | |||
+ | De obicei versiunea "build-time" are in componenta numelui si cuvantul "devel".\\ | ||
+ | De exemplu vreau sa compilez PHP-ul (www.php.net) si acesta imi cere pentru suportul grafic si librariile JPEG, aici nu este de ajuns sa instalez numai libjpeg62, ci libjpeg62-devel. |