Urpmi
Fra Mandriva Norway
Andre steder der du kan lære mer om urpmi
Urpmi er et viktig verktøy for alle Mandriva Linux brukere. Det lønner seg å bruke tiden det tar å lære det. Denne siden gir deg en oversikt over de mest brukte valgene. Nedenfor er andre resurser med mere detaljert informasjon om urpmi:
- man sidene: sjekk man sidene for alle mulighetene. Det er den mest oppdaterte informasjonskilden (Husk: de kan også åpnes i mange nettlesere ved å skrive: man:urpmi i adresselinjen).
For brukere av GNOME og Firefox: velg gnome-help som applikasjon når FF spør etter applikasjon. I KDE så virker koden direkte i Konqueror
- Upgrading Mandriva Linux with urpmi viser hvordan Mandriva Linux oppgraderes fra en hovedversjon til den neste ved hjelp av urpmi.
Ved siden av en veldig grunnlegende innføring, forsøker denne siden å dekke det som de to ovenfornevnte informasjonskildene ikke dekker. Vi forutsetter at du vet hvordan man-sidene brukes og at du har lest siden ovenfor. Når du har gjort det, så kan du komme tilbake til denne siden: Det finnes mere informasjon om ikke så opplagte problemer som du kan støte på.
Bruken av urpmi
Hurtigliste over alminnelige oppgaver
| Kommando | Hva den forteller deg |
|---|---|
| urpmi --auto-update | slå sammen urpmi.update -a og urpmi --auto-select (oppdaterer hele systemet ditt) |
| urpmq -i xxx.rpm | info om pakken xxx.rpm i den aktuelle mappen |
| urpmq -il xxx.rpm | info om pakken xxx.rpm i den aktuelle mappen & liste over filer som den installerer |
| urpmq --changelog xxx.rpm | skriv endringslog for pakken i den aktuelle mappen |
| urpmq --whatrequires xxx.rpm | hvilke(n) pakke(r) trenger xxx.rpm i den aktuelle mappen |
| urpmf /path/to/file | hvilken pakke har installert "file*" i /path/to |
| urpmi --fuzzy --test xxx | hvis alle rpms som stemmer med "xxx". |
| rpm -qf /path/to/file | ligner på urpmf, men leter på det installerte systemet |
| urpmi.update updates | oppdaterer de lokale dataene med tilgjengelige pakker i mediet "updates" |
| urpmi.update -a | oppdaterer de lokale dataene om tilgjengelige pakker i alle medier |
| Kommando | Hva den gjør |
| urpme xxx | fjerner pakken xxx (og de som er avhengige av den) |
| urpmi --keep xxx.rpm | installerer pakken xxx.rpm fra den aktuelle mappen og avhengigheter til pakken, men om noe må fjernes så vil denne ikke fjernes |
| urpmi --update --auto-select | installerer tilgjengelige oppdateringer fra dine tilgjengelige oppdateringsmedier |
| urpmi --keep --auto --auto-select | oppdater alle pakker fra dine aktiverte medier, men ikke fjern noe: bare meld ifra hvis noe ikke virket |
| urpmi --test --keep --auto --auto-select | oppdater alle pakker fra dine aktiverte medier men ikke installer eller fjern noe, bare si ifra hvis det vil virke |
| urpmi --auto-select | velg oppdaterbare pakker automatisk (fra alle pakkemedier, ikke bare oppdateringsmedier) |
urpmi.addmedia
Dette er der det hele starter. Du legger til et software repository (eller medium, mirror) ved hjelp av urpmi.addmedia kommandoen.
Man kan starte på Mandriva Club mirror finder, på Kjøp og download-siden, eller du kan få en liste over programvareresurser fra Easy Urpmi siden. Formatet for å legge til en ny programvarekilde (repository) er som følger:
det du nå i praksis gjør er å sjonglere bak scenen med det samme som du kan gjøre ved hjelp av edit-urpm-sources.pl som er det Grafiske brukergrensesnittet i Mandriva Linux kontrollsenteret under Programvarehåndtering --> Sett opp programvarekilder for installering og oppdatering
Mandriva Linux ftp mirrors for final release versjoner inneholder minst:
- main som inneholder de viktigste programmene, som Mandriva støtter
- contrib som inneholder mere valgfrie programmer lagt til av bidragsytere, men som ikke nødvendigvis får (sikkerhets)oppdateringer
- non-free som inneholder programmer som ikke er frie
Hvert medium har 4 sub-medier:
- release pakkene fra dagen de ble sluppet.
- updates pakkene som er oppdatert siden slippet, av hensyn til sikkerhet eller buger. Alle bør ha disse mediene, selv med en veldig treg internettforbindelse. Når du legger til et oppdateringsmedium, så legg til --update switchen så urpmi kan skille det fra et regulært medium.
- backports (tilbakeporter) noen pakker med nyere versjoner som er "backported" fra cooker.
- testing som blir brukt til å midlertidig teste nye oppdateringer, slik at bugreportere kan evaluere korreksjonene.
For å installere pakker fra en mirror, så trenger urpmi en av to filer/datasett som inneholder enten most essential eller most complete i komprimert format.
Se en:Policies/Mirror_Structure og en:Policies/SoftwareMedia for å få en komplett oversikt over mirror-strukturen som kan finnes på de fleste mirrorserverne.
Redde tapte kilder (cd-er)
Dersom du ikke har listet dine cdromer/dvder som medier kan du:
med cd 1 i din stasjon. Dette forutsetter at du har en versjon av Mandriva som er eldre enn 2007.1, der /mnt ble /media og at cd eller dvd er i stasjonen kjent som "cdrom".
Kopiere cd-er til hjemmemappen og bruke kopien i urpmi
Hvis du ikke liker å sjonglere med cd-er når du oppdaterer systemet ditt og du har ledig plass, så kan du lage en mappe (f.eks: home/uid/CDS/), kopier base/ og Mandriva/ mappene med undermapper fra den første installasjons-cd-en dit. Kopier så RPMS2 til RPMS8 og mappene fra alle cd-ene/dvd-ene til Mandriva/ mappen. Etter at du har fjernet installasjons-cd-en så gjør du følgende som root:
Fra Mandriva Linux 10.1 har mappestrukturen på cd-ene endret seg. Mappene med underinnhold du trenger å kopiere er:
CD1:/media/main
CD2:/media/main2
CD3:/Applications
/Drivers
/media/commercial
/media/dkms
/media/drivers
/main3
CD4:/kde3.3
/media/main4
CD5:/media/main5
CD6:/Applications
/media/main6
når du er ferdig:
Bruk deretter mediehåndtereren via Mandriva Linux Control Center --> Programvarehåndtering --> Sett opp programvarekilder for installering og oppdatering for å sette opp din nye mappe og deaktiver alle cd-ene.
En annen metode er å kopiere ISO-bildene til forskjellige oppstartspunkter, noe som også vil virke på tidligere versjoner, se avsnittet Copy CDs to Hard Drive and mounting each in loopback
Kopiere rpm-er (inklusive installerings cd-er) til enkle mapper og å bruke kopien i urpmi
Lag en mappe, f.eks. ~/RPMS , som skal inneholde alle rpm-er For å kopiere en ahig med rpm-er (f.eks. fra innstallasjons-cd-er):
Hvis du har kopiert installasjons-cd-er til harddisken, eller har ISO-bildene på harddisken (se Copy CDs to Hard Drive on how to mount them), så kan dette gjøres i en operasjon.
I dette eksempelet ble cd-ene kjørt som /INSTALL_CDS/CD1, /INSTALL_CDS/CD2, etc.
Det vil da skapes en hdlist.cz file og en sythesis.hdlist.cz fil, basert på hva den finner i mappen den er i.
Finn pubkeys-ene for rpm-ene og kopier dem in i filen ~/RPMS/pubkey. De burde være i INSTALL_CDS/CD1/media/media_info:
så legger du som root-bruker til mediet:
se notat på diskusjonssidene til denne siden
Legge til medier for en distribusjon
urpmi kan legge til viktige medier (som main, updates, contrib ...) fra et valgt sted med en enkelt kommando. Som root, skriv i terminalen:
der:
- 'MIRROR_SITE' er den aktulle url-en til ftp serveren
- 'VERSION' er den aktuelle, eller en annen versjon, av din Mandriva Linux som du ønsker å legge til medier for
- 'ARCH' er: i586 eller x86_64, eller muligens andre som ikke eksisterer for alle Mandriva-versjoner (f.eks.sparc, pcc, etc.)
urpmi.update
urpmi.update kommandoen oppdaterer pakkelisten fra et pakkemedium. Denne listen endrer seg når pakkene på serveren endrer seg, så du må endre denne når du ønsker å installere en ny pakke fra et medium som endrer seg, som Mandriva Cooker (Vær veldig forsiktig med Cooker-pakker; de vil muligens virke, men å installere dem vil vanligvis føre til problemer sensere, på en stabil versjon!). Hvis du bruker en pakkebrønn for en endelig versjon, så vil denne vanligvis ikke endre seg, så i her trenger du ikke å oppdatere listen når du installerer noe. Det virker slik:
eller
Dette oppdaterer alle medier under ett.
urpmi.removemedia
Dersom du ønsker å bli kvitt en pakkebrønn, så er dette komandoen å bruke:
urpmf
urpmf er den beste av de "ukjente" delene av urpmi pakkehåndterings-systemet. Med denne kan du finne alle filene du måtte ønske, finne ut hvilken pakke de hører til, se beskrivelsen av pakken og en haug med andre ting.
Anta at du vil kompilere et C-program på maskinen din og kompileren klager på at jpeglib.h mangler. Alt du trenger å gjøre er:
Dette vil f.eks vise:
libjpeg62-devel:/usr/include/jpeglib.h mozilla-devel:/usr/include/mozilla-1.4a/jpeg/jpeglib.h
Dette betyr at jpeglib header-filen er en del av pakken libjpeg62-devel, og den kan nå installeres med:
Et annet eksempel: du ønsker å installere en e-postklient, men du kjenner ikke til noen e-post-klienter i Linux. Så du ønsker å gjøre et søk i pakkesammendragene, etter begrepene 'mail' og 'client'. Kommandoen
viser:evolution:Integrated GNOME mail client, calendar and address book. squirrelmail:Squirrelmail is a webmail client for PHP4. sylpheed-claws:Enhanced version of the Sylpheed e-mail client comsat:A mail checker client and comsat mail checking server. cscmail:CSCMail is a GTK email client written in Perl sylpheed:A GTK+ based, lightweight, and fast e-mail client tradeclient:Email Client with PIM features for X
--summary valget blir brukt for å gjenomføre søket i pakkesammendragene, og -a bryteren betyr 'and'.
urpmi
Dette er hoved pakkehåndterings-kommandoen, som du bruker til å installere de pakkene du ønsker og alle pakker som disse trenger (er avhengige av):
Hvis du taster urpmi pakkenavn så vil dette vanligvis, men ikke nødvendigvis alltid, resultere i at den siste versjonen av den pakken blir installert. Urpmi kommer til å sammenligne versjonsnummeret i den installerte pakken med den i det aktiverte mediet. Unntaket oppstår når en oppdatering av en pakke er stillt til disposisjon under et litt endret navn, mens både den gamle og den nye versjonen forblir tilgjengelige i det aktiverte mediet. Det er noen ganger nødvendig å gjøre dette for a sikre kompatibilitet bakover.
Her er et eksempel urpmi autoconf vil ikke føre til at den siste versjonen blir installert, fordi den høyeste versjonen av den pakken heter autoconf2.5-2.60.
Du burde bruke kommandoen urpmi autoconf2.5 istedet som vil gi deg den siste 2.5* versjonen. Observer at på ditt Mandrivasystem, så burde begge versjoner være installert: Mandriva vil automatisk velge den som er mest passende. Se /usr/share/doc/autoconf-2.13/IMPORTANT.README.MDK for mer informasjon om dette konkrete eksempelet.
Se diverse bemerkninger om urpmq --fuzzy eller urpmq -y nedenfor, for å lære hvordan du unngår slike versjonsproblemer.
Et annet eksempel på bruken av urpmi er å oppdatere systemet ditt med de siste sikkerhetsoppdateringene/bugfiksene.
Dette eksempelet forutsetter at du har et urpmi medium kalt 'updates' som ble deklarert til å være et 'update medium' da det ble lagt til. Siden innholdet i update-medier endres ofte, så er det nødvendig å kjøre urpmi.update fo å se etter nye pakker.
&& tegnene betyr "dersom første kommando lykkes, så kjør den andre kommandoen". I den andre kommandoen betyr --update
switsjen "bare søk i medier som er deklarerte som update medier", og --auto-select switsjen betyr
"velg tilgjengelige oppdateringer til pakker som allerede er installert.". Urpmi kommer til å liste opp alle oppdaterbare pakker
og spørre om du vil fortsette.
Dersom du også legger til switsjen --auto, så vil alle pakker bli oppdatert inklusive alle avhengige pakker. Dersom du foretrekker å bruke et grafisk brukergrensesnitt ('GUI') så bruk rpmdrake i Mandriva Linux Kontrollsenter: Programvarehåndtering --> Sett opp programvarekilder for installering og oppdatering
Kompliserte forklaringer ovenfor? Det kan gjøres helt enkelt. I praksis så foretar du alle disse oppdateringene ved ganske enkelt å skrive:
-v er ikke nødvendig og står for "verbose" dvs. at maskinen er litt mere snakkesalig under oppdateringen så du vet hva som skjer. (I praksis så er du interessert i å se om MD5 sjekksummen stemmer).
Installere en ny kernel(kjerne)
Kernels blir aldri oppgradert de blir bare installert. Så du vil aldri se at din kernel blir oppdatert når du kjører eldre versjoner av Mandriva (Mandriva 2008.0, og nyere har kernel-oppdateringer som er listet opp i Mandriva update). For å installere en kjerne fra kommandolinjen:-
# urpmi.update updates /få listen over tilgjengelige oppdateringer fra dine oppdateringsmedier/ # urpmq --fuzzy kernel /vis alle tilgjengelige pakker som inneholder ordet "kernel", / eller: # urpmi -y kernel /"-y" er forkortelse for "--fuzzy" / De følgende pakkene inneholder kernel: <snip> .... kernel-2.4.22.10mdk kernel-2.4.22.26mdk kernel-2.6-source kernel-2.6.0-0.test5.1mdk kernel-BOOT-2.4.22.10mdk kernel-enterprise-2.4.22.10mdk kernel-enterprise-2.4.22.26mdk kernel-i686-up-4GB-2.4.22.10mdk kernel-i686-up-4GB-2.4.22.26mdk kernel-multimedia-2.4.22.21mm.1mdk kernel-multimedia-2.4.22.26mm.1mdk kernel-multimedia-smp-2.4.22.21mm.1mdk kernel-multimedia-smp-2.4.22.26mm.1mdk kernel-multimedia-source kernel-secure-2.4.22.10mdk kernel-secure-2.4.22.26mdk kernel-smp-2.4.22.10mdk kernel-smp-2.4.22.26mdk kernel-smp-2.6.0-0.test5.1mdk kernel-source <snip> .... #urpmi kernel-2.4.22.26mdk /velg kjernen du ønsker å installere/
De nye filene som må bootes vil installeres i /boot ved siden av filene fra eldre kjerner. grub eller lilo konfigurasjonen vil automatisk bli justert ved å legge til ett nytt menypunkt, slik at du kan velge mellom gammel og ny kjerne. Standard 'linux' innstilling vil boote den nye kjernen. Dersom du ønsker det kan du bruke Mandriva Programvareinstallering via GUI rpmdrake for å installere en ny kjerne: Mandriva Linux Kontrollsenter --> Programvarehåndtering --> Sett opp programvarekilder for installering og oppdatering,men du må kjøre Mandriva oppdaterings-GUI-en først for å fremtvinge en oppdatering av tilgjengelige medier: MLCC --> Sett opp programvarekilder for installering og oppdatering--> Update eller fra tidligere nevnte vindu i rpmdrake: File --> Update media
Du vil legge merke til at en av pakkene som er tilgjengelige er kernel-source Dette er kildekoden til den nyeste tilgjengelige kjernen (i dette eksempelet 2.4.22.26mdk) Du trenger bare å installere kernelkildepakken, dersom du trenger å kompilere noe som en komponent-driver (men det kan også være nyttig å søke i dokumentasjonen som er innkludert i pakken). Vær sikker på at du har installert den samme versjonen av kernel-source som kjernen du kjører, eller vil ikke driverne du kompilerte virke.
urpmi --parallel pusher oppdateringer til maskiner i nettverket ditt
Oppdateringer blir lastet den til en av dine maskiner og derifra "pushet" til de andre maskinene i nettverket ditt (see: http://archives.mandrivalinux.com/expert/2006-03/msg00001.php )
urpmi --parallel vil oppdatere alle maskinene som du spesifiserer. Se man urpmi for mere info, og man urpmi.files, så vel som : http://www.happyassassin.net/2005/05/04/a-quick-guide-to-urpmi-parallel .
urpmi paralell modus, gjør som det høres ut: du kjører en urpmi kommando og denne utføres på mange maskiner parallelt. Mere detaljert så tester maskinen du kjører kommandoen på, resultatet på hver maskin i gruppen etter tur, laster ned alle nødvendige pakker for alle maskiner i gruppen, distribuerer den riktige pakken til hver enkelt maskin, så kjører den urpmi på den aktuelle maskinen for å kjøre den aktuelle installasjonen. Det er brilliant for raskt å installere programvare på alle maskinene dine, eller til og med å holde dem alle oppdaterte med et par kommandoer, videre sparer det båndbredde, da alle pakker bare lastes ned en gang.
Så hvordan skal dette brukes? Det er ganske enkelt. Først så må du kontrollere at du kan kjøre ssh fra serveren til hver enkelt klient-maskin som root-bruker (du må legge inn en passordfrase og et passord, men det kan være at du har satt opp bruken av ssh-add for å unngå dette). Innstaller så urpmi-parallel-ssh på servermaskinen. Rediger /etc/urpmi/parallel.cfg slik at den ser slik ut:
local:ssh:toy:htpc
den første parameteren er navnet til gruppen, du kan gi denne et valgfritt navn. Den andre parameteren må være ssh. De gjenværende parameterene er vertsnavn for maskinene i gruppen; så mange som du ønsker. Desrsom du ønsker at serveren selv skal oppdateres av dette, så kan du føye denne til med navnet "localhost"
Nå kan du bruke dette. På servermaskinen kjører du:
Så lenge som urpmi på serveren har adgang til alle pakkene som trengs av alle klientmaskinene fra sine urpmi-medier, skulle alt virke problemfritt. Den enkleste måten å sikre dette på er å la alle maskiner - server som klient - bruke de samme urpmi-medier. Dette betyr i praksis at alle maskiner må ha samme arkitektur. Dersom du ønsker å oppdatere alle maskinene i nettverket samtidig så gjør du som følger:
Dette forutsetter selvsagt at alle maskinene tilhører gruppen local som du har definert (se ovenfor).
For å kjøre en enkelt kommando på flere maskiner kan du kjøre:
noclean beholder pakkene på zen etter at de har blitt installert; dette betyr at når noen kjører parallel kommandoen i neste omgang, så behøver den ikke å gå "ut" og laste dem ned igjen.
...og det var det.
Du kan også lese http://forum.mandrivaclub.com/viewtopic.php?p=207623 . Dersom du har råd til Mandriva Online Pro, kan gjøre det med et Web-grensesnitt Mandriva Online - Professional Level. Det professjonelle nivået til Mandriva lar deg oppdatere et helt computernettverk gjenom en sentralisert og helautomatisk tjeneste. Takket være et nytt web-grensesnitt, er regelmessige oppdateringer og det å lage computergrupper lekende lett!
Mandriva Online Pro ( 30 euros per computer per år) også tilgjengelig kun for "Corporate Desktop" (99 euro) eller "Corporate Club" (minimum 2000 euro).
Det nærmeste du kan komme uten å betale er å sette opp urpmi --paralell og deretter sette opp en cronjob på hovedmaskinen som kjører urpmi --parallel --auto-select --auto hver dag...
Noen andre måter å få oppdateringer til alle dine maskiner hver dag: http://archives.mandrivalinux.com/expert/2006-03/msg00020.php
Referanser
urpme
Dette er kommandoen som avinstallerer programvare fra maskinen din. Som med urpmi, så holder den rede på avhengighetene og forteller deg om annen software som du har, er avhengig av det du ønsker å avinstallere, og gir deg dermed sjansen til å avbryte prosedyren eller til å avinstallere pakken og pakkene som er avhengige av den. Bruken er slik:
F.eks. , Sylpheed er så bra at du vil bli kvitt din tidligere e-postklient. Du kan skaffe deg plass på harddisken ved å kjøre urpme evolution.
urpmq
urpmq lar deg søke i rpm databasen, slik at du kan finne informasjon om pakkene som du har installert eller som du kan installere, eller andre ting i databasen, som hva slags medier du har, slik:
Obs: når du bruker urpmq for å lete etter pakker, så vær sikker på at du forstår forskjellen mellom å bruke den med eller uten --fuzzy valget. Du kan gå glipp av noen pakker som du letet etter hvis du ikke er forsiktig. Dersom urpmq finner en pakke med eksakt det navnet du søkte etter, så vil den returnere kun denne pakken, du vil ikke se andre pakker som også inneholder dette navnet.
F.eks:
// Tenk deg at din beste venn har fortalt deg om vegastrike, et "kuult" 3D-spill.
[root@localhost augustin]# urpmq vegastrike
vegastrike
// Suverent! Det finnes en Mandrivapakke med akkurat dette navnet!
// Men du ser ikke andre pakker som innkluderer dette navnet!
// Vi søker igjen: legg merke til den manglende 'e'-en på slutten av pakkenavnet.
[root@localhost augustin]# urpmq vegastrik
No package named vegastrik
The following packages contain vegastrik: vegastrike, vegastrike-data
You should use "-a" to use all of them
// Denne gangen er søkeresultatet veldig forskjellig:
// Vi ser ikke en men to pakker.
// Sammenlign det følgende søket med de andre to.
[root@localhost augustin]# urpmq --fuzzy vegastrike
vegastrike
vegastrike-data
// Legg merke til forskjellen som --fuzzy valget utgjør.
urpmq --fuzzy er også fin for å se hvilke andre tilgjengelige versjoner som finnes av en pakke: noen ganger vil ikke en ny hovedversjon være kompatibel bakover til gamle pakker. Av denne grunn så vil nyere versjoner distribueres under litt forskjellig pakkenavn. Nå er du sikker på at du ikke går glipp av noe.
F.eks:
[root@localhost augustin]# urpmi mplayer
// Dette vil IKKE installere den siste versjonen av mplayer.
[root@localhost augustin]# urpmq --fuzzy mplayer
De følgende pakkene inneholder mplayer:
kmplayer
mplayer
mplayer-fonts
mplayer-gui
mplayer-skins
mplayer1.0
mplayer1.0-gui
mplayerplugin
transcode
xmms-mplayer
// Du ser at: den nye 1.0 versjonen er pakket separat.
// Du har blitt advart!!
Bruk av grafiske grensesnitt
gurpmi
gurpmi er det grafiske grensesnittet for urpmi og kan brukes fra kommandolinjen til å installere/søke etter en pakke fra et medium eller fra stien der du står. Det blir også brukt av rpmdrake til å vise meldinger som trenger brukerintervensjon.
rpmdrake
Mandriva tilbyr også et hyggelig sett av grafiske verktøy som utfører de samme oppgaver. Se rpmdrake.
smart
Opprinnelig fra Conectiva, pakkene smart, smart-update og smart-gui er python-baserte verktøy som fortsatt er tilgjengelige fra mediet contrib. De er veldig raske, ganske pålitelige og har noen forskjellige hyggelige aspekter som er forskjellige fra de originale Mandrivaverktøyene, men de støttes ikke offisielt av Mandriva. "Hjem" her er: Smart home . Denne er nå tilgjengelige for mange distribusjoner og tilbyr "bedre pakkehåndtering".
Et spørsmål om sikkerhet
Hva er sikkerhetsbetraktningene
Urpmi må kjøres som root for å installere pakker. En lur men ondskapsfull person kan muligens lure en ikke fullt så lur Mandrivabruker (Jeg vet at alle Mandrivabrukere er lure, men la oss anta at det finnes en litt forvirret Mandrivabruker ett sted, bare for eksempelets skyld) til å installere en pakke som ligner på en helt regulær pakke, som brukes av mange men som inneholder en trojansk hest, eller annen ondskapsfull kode. Når denne først er installert, kan applikasjonen slippe løs virus, ormer og til og med spyware... Så langt, har det ikke vært noen kjente førsøk på å gjøre dette. men om noen få år når GNU/Linux er det mest utbredte opperativsystemet, så er det mulig at noen mennesker vil førsøke seg på slikt, de vil mislykkes fordi en fornuftg bekymring om sikkerheten alltid har vært en del av GNU/Linux-fellesskapet. De fleste pakker er signerte av pakkeren (pakkisen?) for å dokumentere ektheten. Se: GnuPG for flere detaljer.
Foruten at en ondskapsfull person prøver å lure deg til å installere deres malware, så er det mere sannsynlig at du forsøker å installere en eller annen pakke som har blitt korrupt, enten ved ftp-overførselen, eller pga en skrape i installasjons-cd-en din... Før du installerer vil urpmi kontrollere pakkens integritet ved hjelp av MD5 Hashkode og den innkluderte gpg pakkenøkkelen. Se rellevant avsnitt nedenfor for mere detaljert informasjon.
Noen ganger når urpmi brukes får folk opp linjer med:
rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format
Det er uklart hva opprinnelsen til dette problemet er: kanskje filen ble korrupt ved en oppdatering eller ved at urpmi ble avbrutt av en utålmodig bruker.
Løsningen er å fjerne filen rpmdb: /var/lib/rpm/Pubkeys og importere de offentlige nøkklene igjen. Se: GnuPG
MD5 Hash
MD5 hash er kode innenfor rpmpakkene som lar rpm kontrollere om pakkenes hash er i orden. Dersom filen av en eller annen grunn skulle være korrupt så vil rpm (og urpmi) nekte å installere den; rpmdrake vill spørre brukeren om han vil fortsette eller avbryte.
Her er et eksempel:
[root@localhost augustin]# urpmi kdesdk rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format error: cannot open Pubkeys index using db3 - Invalid argument (22) The following packages have bad signatures: /var/cache/urpmi/rpms/kdesdk-3.1.3-9mdk.i586.rpm: Invalid signature ((SHA1) DSA sha1 MD5 GPG GPG#70771ff3 NOT OK) Do you want to continue installation ? (y/N) y installing /var/cache/urpmi/rpms/kdesdk-3.1.3-9mdk.i586.rpm error: /var/cache/urpmi/rpms/kdesdk-3.1.3-9mdk.i586.rpm: MD5 digest: BAD Expected(97f2ba5a91888cd3af40f89be6b65868) != (393221db35071aa90eaa73816a9a5ba8) unable to install package /var/cache/urpmi/rpms/kdesdk-3.1.3-9mdk.i586.rpm
Legg merke til de to linjene Invalid signature ((SHA1) DSA sha1 MD5 GPG GPG#70771ff3 NOT OK) og MD5 digest: BAD Expected(97f2ba5a91888cd3af40f89be6b65868) != (393221db35071aa90eaa73816a9a5ba8). Filen kdesdk-3.1.3-9mdk.i586.rpm er korrupt og den vil ikke bli installert.
Løsningen er å fjerne filen fra /var/cache/urpmi/rpms/ og å laste den ned igjen. Førsøk å installere den igjen med urpmi eller rpm --import <filename>
Hvis det fortsatt ikke fungerer, så betyr dette at nedlasningsstedet ditt har en korrupt fil. Forsøk å laste den ned manuelt fra to eller tre andre nedlastingssider og lagre den i /var/cache/urpmi/rpms/ mappen. Fjern alltid tidligere nedlastede filer før du forsøker å benytte deg av andre nedlastingssteder. Installer så igjen med urpmi.
Det skjer at den samme korupte filen er korrupt på alle ftp-nedlastingssidene. Hvis du har forsøkt flere tjenere og du alltid får det samme problemet, så kontroller i Mandrivaforumet eller i mailinglisten om andre brukere har det samme problemet med den samme filen. Dersom det er tilfellet så vil en ny fil bli sluppet raskt.
Problemløsning
RPM databasen låst
Hvis du får meldingen "urpmi database is locked", så betyr dette sansynligvis at et annet program bruker databasen. Dette kan f.eks være et programvarehåndterings-vindu som er åpent i Mandriva kontrollsenter (MCC), eller den automatiske oppdaterings-sjekkeren (mdkapplet). Dersom du er sikker på at du ikke har startet noen andre urpmi-kommandoer eller programvarehåndterings-vinduer, så er det sannsynligvis den automatiske oppdaterings-sjekkeren som arbeider i bakgrunnen. Bare vent ett minutt eller så og forsøk igjen.
Programmer som kan bruke databasen er bla: urpmi urpmi.update urpme rpm urpmi.addmedia rpmdrake. Dersom din urpmidatabase fortsatt er låst, og du er sikker på at ingen andre programmer bruker den, da kan du ha "stale lock" filer. Dersom du er virkelig usikker på dette så kan det være lurt å starte maskinen på nytt. Husk at den automatiske oppdaterings-sjekken vil være aktiv etter en ny oppstart, så igjen - dersom databasen er låst, vent ett minutt eller to.
For å fjerne "låsefilene" må du være adminbruker. Bruk "su -" kommandoen for å gjøre dette.
Gjenoppbygge din database
Dersom databasen blir ustabil (en ustabil database kan lede til meldingen "package is already installed" mens den faktisk ikke er det og omvendt).
rm -rf /var/lib/rpm/__db*
rpm --rebuilddb
- * Det er en god ide å ta regelmessig sikkerhetskopi av din /var/lib/rpm mappe. Slik at du alltids kan gå tilbake til en tidligere god database, og reinstallere senere pakker med:
rpm -ivh --justdb --noscripts --notriggers
Feilen "medium contrib uses an invalid list"
rm /var/lib/urpmi/list.contrib
Dette vil hindre feilen i å oppstå uten å forstyrre pakkeinstaleringen.
RPM pakkeverifikasjon
Et skikkelig nyttig verktøy for å sjekke et ødelagt system, er å verifisere pakkene mot rpm-databasen.
Dette vil fortelle deg hvilke pakker som er endret siden du installerte dem (den lister opp alle måter som ditt system er ustabilt på med rpm databasen). F.eks, dersom du får et strømbrudd under oppstart, så kan noen filer bli korrupte. (Eller hvis du bare har gjort noe dumt).
Når du har kjennskap til dette så kan du reparere systemet til å bli så godt som nytt ved å gjeninstallere alle involverte pakker. (Dette kan til og med foretas på et system som ikke lar seg starte, hvis du bruker rednings-cd-en til oppstarten og reparerer det).
For å sjekke en enkelt pakke bruker du rpm -V packagename (navnet er tilstrekkelig, versjonsnummer etc. kan utelates).
For å verifisere én eller flere pakkers riktige md5-sum, hash og gpg-signatur kjører du:
rpm -K foo.123.rpm, eller rpm -K foo*
Treg morgenfugl
Hvis msec verifiserer systemet ditt så bruker den rpm databasen, men det gjøres ved nice 19, og vanligvis veldig tidlig om morgenen. På en treg maskin så kan dette ta lang tid. Dersom ps -e viser msec, rpmv, grep og sort , så kan du gjøre rpmdrake / urpmi raskere ved å renice rpmw, grep og sort til 0.
Oppdater til den siste Mandrivaversjonen ved hjelp av urpmi
Urpmi kan også brukes til oppdatering av din maskin til en nyere versjon av Mandriva Linux: Legg til nedlastingsstedets (mirror) URL med mappen til den nyeste versjonen av pakken til din urpmi-konfigurasjon: Mandriva Linux kontrollsenter --> Programvarehåndtering --> Sett opp programvare for installering og oppdatering
(Flere) kule triks ved bruk av urpmi
Installer fra url eller lokal fil
urpmi kan brukes til å installere lokale rpm-er , og videre ordne opp i avhengighetene. F.eks., du har akkurat rekompilert eller opprettet foo-1.0-1bar.rpm . Du kan nå enkelt bruke urpmi foo-1.0-1bar.rpm . Det virker til og med med http eller ftp-adresser (og også med ssh, gitt at rsync er installert på begge sider). Dersom bash_completion er aktivert, så vil dette virke fint på slike kommandoer.
Skaffe en liste over avhengigheter før installasjonen
Ved å bruke urpmq kan du finne ut en masse informasjon om en rpm.
- urpmq -d skaffer en liste over alle rpm-er som trengs for å installere et program.
- urpmq -d bash se hvilke rpm-er som trengs.
- legg til -m svitsjen for å se de som ikke er er installert på systemet for øyeblikket.
- --sources skaffer kildene.
Så, med urpmq -d -m --sources , kan du enkelt skaffe en liste over url-er som korresponderer med rpm-en som du må hente; ganske kjekt om du har en dårlig internettforbindelse.
Skaffe informasjon om en rpm
urpmq -i kan gi deg informasjon om rpm-er som du kan installere. Forsøk urpmq -i bash
Installere ikke-rpm-pakket programvare
Når det er mulig så bør du bruke urpmi for å installere programvare, og bruke pakker fra det korekte urpmi mediet for din aktuelle versjon av Mandriva Linux. Nesten alt du kan ønske deg er tilgjengelig, dersom du har definert medier for contrib og plf: dette er en måte å unngå trøbbel på! Men, det kan hende at du ønsker å installere en annen pakke, eller en nyere versjon enn den som er tilgjengelig via Mandriva mediene.
Den gyldene regelen er gå aldri utenom rpm pakkedatabasen, dersom du kan unngå det, og aldri installer en pakke med tvang. Hvis du følger denne regelen, uansett hvor irriterende den kan virke, så er du garantert å aldri ha et ustabilt system. Hvis rpm/urpmi ikke lar deg installere noe, så er det vanligvis en god grunn til det!
Kompilere fra kilde
Istedet for den kjente trilogien:
./configure make make install
så bruker du checkinstall istedenfor:
./configure make checkinstall
Du vil da få en rpm som kan installeres ved hjelp av urpmi, og denne kan også avinstalleres når du ønsker det. Hvis tarballen allerede har en god spesifikasjonsfil så er det til og med lettere:
rpmbuild -tb ballnavn.tar.gz
Installere "binaries" som acrobat reader
Disse programmene burde havne i /usr/local/ mappen. Dette er mappen som er tiltenkt ikke-offisielle pakker.
De proprietære driverne
OBS : fra og med Mandriva 2007.1, blir de proprietære driverne levert i non-free mediene. Slik at du ikke trenger å bruke den grusomme Nvidia installeren, som bryter alle reglene ovenfor. Resultatet blir bra, men prossessen er lite hyggelig!
Gjenoppbygge RPMS
Dersom du har en rpm som er bygget for et annet system enn ditt eget, så er det mulig å gjenoppbygge den.
Se på Cooker Howto om rpm-pakking (engelsk) for mere detaljert informasjon.
Kopiere cd-er til harddisk og kjøre hver enkelt i loopback
Dersom du ikke liker å bytte cd-er når du oppdaterer ditt system, og du har noe ledig plass, så kan du lagre ISO-bildene av cd-ene på din harddisk og så fortelle urpmi at disse skal brukes istedenfor de virkelige cd-ene.
Til å begynne med lager du en mappe for ISO-bildene av cd-ene:
mkdir ~/iso
Så kopierer du hver av cd-ene til:
dd if=/dev/cdrom of=~/iso/cd1 dd if=/dev/cdrom of=~/iso/cd2 dd if=/dev/cdrom of=~/iso/cd3 ...
Så lager du som admin(root)bruker, et oppstartspunkt for hver av dem:
mkdir /mnt/cd1 mkdir /mnt/cd2 mkdir /mnt/cd3 ...
og monterer dem i loopback:
mount -t iso9660 -o loop /home/uid/iso/cd1 /mnt/cd1 mount -t iso9660 -o loop /home/uid/iso/cd2 /mnt/cd2 mount -t iso9660 -o loop /home/uid/iso/cd3 /mnt/cd3 ...
Rediger så /etc/urpmi/urpmi.cfg filen i det du endrer hvert punkt som følger:
Fra (for eksempel):
Installation\ CD\ 1\ (cdrom1) removable://mnt/cdrom/media/main {
hdlist: hdlist.Installation CD 1 (cdrom1).cz
key-ids: 70771ff3
removable: /dev/hdc
with_hdlist: ../../media/media_info/hdlist1.cz
}
til dette:
Installation\ CD\ 1\ (cdrom1) file://mnt/cd1/media/main {
hdlist: hdlist.Installation CD 1 (cdrom1).cz
key-ids: 70771ff3
with_hdlist: ../../media/media_info/hdlist1.cz
}
Med andre ord, så endrer du 'removable://mnt/cdrom' til 'file://mnt/cd1' for hver av cd1, cd2, cd3, etc. Du må også fjerne linjen som ser slik ut:
removable: /dev/hdc
OBS: Fra version|2007.1 blir /mnt for "removables" erstattet med /media
Referanser
Webskjemaer som hjelper deg med å sette opp din urpmi-konfigurasjon :
- easyurpmi
- MandrivaUser.de sin smart-urpmi
- MandrivaClub sin MirrorFinder
Opplæring og dokumentasjon på Engelsk
- urpmi, urpme, urpmq , urpmf man pages as of urpmi-5.19
- URPMI and RPM Tutorial (Walter Chang)
Opplæring og dokumentasjon på Fransk
- Introduction à urpmi (Guillaume Rousse)
- Introduction à urpmi et rpmdrake (Linux-wizard)
Opplæring og dokumentasjon på Spansk
- James Robinson's urpmi mini HOWTO, translated by Toni Hermoso
Opplæring og dokumentasjon på Tysk
- Die Paketverwaltung mit URPM*, Paketmanagement - leicht gemacht, translated and edited by mandrivauser.de-members

