A csomag telepítése
Most hogy
tudjuk, hogy mit tartalmaz a csomag, nincs más dolgunk, mint
feltelepíteni. Elsőnek érdemes egy telepítési
tesztet végrehajtani, ami kiszűri az esetleges konfliktusakat
más csomagokkal/fileokkal, megvizsgálja, hogy minden -a
program működéséhez szükséges- file
fent van-e, tehát hogy egyáltalán telepíthető-e
a csomag. A tesztelést a következő parancs végzi
el:
rpm -i --test mtv-1.1.0.20-2.i386.rpm
Ha semmi gond nincs, akkor nem ír ki semmit.
A hibalehetőségek a következők lehetnek:
- konfliktusa
van egy fileal, egy másik csomagból. Pl.: az 'rpm -i
--test rpm-2.0.11-1.i386.rpm' hatására a következő
üzenetet kapjuk: /usr/bin/rpm2cpio conflicts with file of
rpm-2.3-1. Itt a /usr/bin/rpm2cpio file nem egyezik meg a csomagban
lévő fileal, így azt felülírhatja
telepítéskor. Ezt a hibaüzenetet akkor is
kiírhatja, ha egy újabb csomagot, frissebb verzióval
rendelkező csomagot szeretnénk feltelepítni, így
ez esetben az üzenet nem éppen hibának, hanem
figyelmeztetésnek tekinthető (igaz, e kijelentésem
mindig igaznak tekinthető)
- nincsenek
meg a program futásához szükséges
feltételek. Pl.: az 'rpm -i --test blather-7.9-1.i386.rpm'
parancs hatására a következő üzenetet
kapjuk: failed dependencies: bother >=3.1 is needed by
blather-7.9-1. Ez azt jelenti, hogy a blather program működéséhez
legalább 3.1-es verziószámú bother
csomag szükséges.
Ha ezek után
is a telepítése mellett döntöttünk, ezt
könnyen megtehetjük. Ha semmilyen üzenetet nem írt
ki, 'rpm -i --test <filename>' hatására az 'rpm
-i <filename>' paranccsal feltelepíthetjük a
csomagot. Például tegyük fel, hogy a blather
programhoz minden feltétel adott. Ekkor ezt a következő
paranccsal telepíthetjük fel:
rpm -i blather-7.9-1.i386.rpm
Ha nagy
csomagot telepítünk fel, a telepítés hosszú
ideig eltarthat, és esetleg az ember azt hiheti, hogy a gép
lefagyot, miközben csak éppen a tömörítést
végzi. E félreértésekre jó a -h
opció, aminek hatására a csomagkezelő a
telepítés alatt 50 darab # jelet tesz ki. Ez a
windows-os telepítés alatt megszokott %-os kihelzésnek
felel meg, számok nélkül. Pl az 'rpm -i -h
mtv-1.1.0.20-2.i386.rpm' parancs végrehajtása végén
a következőt kapjuk:
##############################################
Ezt csak
tetézhetjük a 'v' opció kiegészítésével,
ami főleg akkor hasznos, ha mondjuk egy könyvtárban lévő
összes *.rpm filet fel szeretnénk telepíteni.
Tehát például:
Ha még ez sem elég,
annél sokkal részletesebb információt
kaphatunk a vv opcióval. És hogy mi is ez? Lássunk
erre egy példát!
rpm -ivv mtv-1.1.0.20-2.i386.rpm
D: counting packages to install
D: found 1 packages
D: looking for packages to download
D: retrieved 0 packages
D: New Header signature
D: Signature size: 68
D: Signature pad : 4
D: sigsize : 72
D: Header + Archive: 392505
D: expected size : 392505
D: opening db index /var/lib/rpm/Packages
create mode=0x42
D: locked db index /var/lib/rpm/Packages
D: found 0 source and 1 binary packages
D: opening db index /var/lib/rpm/Depends
create mode=0x42
D: opening db index /var/lib/rpm/Basenames
create mode=0x42
D: Requires: /bin/sh YES (db files)
D: opening db index /var/lib/rpm/Providename
create mode=0x42
D: Requires: ld-linux.so.2 YES (db provides)
D: Requires: libICE.so.6 YES (db provides)
D: Requires: libSM.so.6 YES (db provides)
D: Requires: libX11.so.6 YES (db provides)
D: Requires: libXext.so.6 YES (db provides)
D: Requires: libXmu.so.6 YES (db provides)
D: Requires: libXt.so.6 YES (db provides)
D: Requires: libc.so.6 YES (db provides)
D: Requires: libc.so.6(GLIBC_2.0) YES (db
provides)
D: Requires: libc.so.6(GLIBC_2.1) YES (db
provides)
D: Requires: libdl.so.2 YES (db provides)
D: Requires: libdl.so.2(GLIBC_2.0) YES (db
provides)
D: Requires: libdl.so.2(GLIBC_2.1) YES (db
provides)
D: Requires: libm.so.6 YES (db provides)
D: Requires: libm.so.6(GLIBC_2.1) YES (db
provides)
D: Requires: libpthread.so.0 YES (db provides)
D: Requires: libpthread.so.0(GLIBC_2.0) YES
(db provides)
D: Requires: libpthread.so.0(GLIBC_2.1) YES
(db provides)
D: opening db index /var/lib/rpm/Conflictname
create mode=0x42
D: installing binary packages
D: getting list of mounted filesystems
D: opening db index /var/lib/rpm/Name create
mode=0x42
D: opening db index /var/lib/rpm/Group create
mode=0x42
D: opening db index /var/lib/rpm/Requirename
create mode=0x42
D: opening db index /var/lib/rpm/Triggername
create mode=0x42
D: New Header signature
D: Signature size: 68
D: Signature pad : 4
D: sigsize : 72
D: Header + Archive: 392505
D: expected size : 392505
D: package: mtv-1.1.0.20-2 files test = 0
D: file: /usr/X11R6/bin/mtv action: create
D: file: /usr/X11R6/bin/mtvp action: create
D: file: /usr/X11R6/man/man1/mtv.1 action:
create
D: file: /usr/doc/mtv action: create
D: file: /usr/doc/mtv/COPYRIGHT action: create
D: file: /usr/doc/mtv/LICENSE action: create
D: file: /usr/doc/mtv/README action: create
D: file: /usr/doc/mtv/README-Fullscreen action:
create
D: file: /usr/doc/mtv/README-VCD action:
create
D: file: /usr/doc/mtv/README-mtv-redhat action:
create
D: file: /usr/doc/mtv/release-notes.html
action: create
D: running preinstall script (if any)
mtv-1.1.0.20-2
D: +++ 244 mtv-1.1.0.20-2
D: adding "mtv" to Name index.
D: adding 11 entries to Basenames index.
D: adding "Applications/Multimedia"
to Group index.
D: adding 19 entries to Requirename index.
D: adding 1 entries to Providename index.
D: running postinstall scripts (if any)
D: closed db index /var/lib/rpm/Depends
D: closed db index /var/lib/rpm/Triggername
D: closed db index /var/lib/rpm/Conflictname
D: closed db index /var/lib/rpm/Providename
D: closed db index /var/lib/rpm/Requirename
D: closed db index /var/lib/rpm/Group
D: closed db index /var/lib/rpm/Basenames
D: closed db index /var/lib/rpm/Name
D: closed db index /var/lib/rpm/Packages
Nos gondolom, hogy a lista
magáért beszél, nem kell magyarázni.
Természetesen mind a -iv, és mind a -ivv opció
megspékelhető egy -h opcióval, bár ennek talán
csak a -iv opciónál van értelme.
Ha a telepítési
teszt valamilyen üzenettel tért vissza, nem kell kétségbe
esni, minden feltelepíthető, csak kis erőszakot kell bevetni!
De lássuk ezeket az erőszakos eszközöket:
- Tegyük
fel, hogy abban a szerencsés helyzetben vagyunk, hogy csak
egy régebbi programot szeretnénk frissíteni
újabbra. Ekkor például az rpm -i --test
mtv-1.1.4-1.i386.rpm hatására a következő
üzenetet kapjuk, ha mondjuk az 1.1.0.20-as mtv már fent
van a gépünkön:
file /usr/X11R6/bin/mtv from install of mtv-1.1.4-1 conflicts with file from package mtv-1.1.0.20-2
file /usr/X11R6/bin/mtvp from install of mtv-1.1.4-1 conflicts with file from package mtv-1.1.0.20-2
file /usr/doc/mtv/LICENSE from install of mtv-1.1.4-1 conflicts with file from package mtv-1.1.0.20-2
file /usr/doc/mtv/README-Fullscreen from install of mtv-1.1.4-1 conflicts with file from package mtv-1.1.0.20-2
file /usr/doc/mtv/release-notes.html from install of mtv-1.1.4-1 conflicts with file from package mtv-1.1.0.20-2
Innen kiolvasható, hogy a 1.1.0.20-as
mtv már fent van, és ha fel
szeretnénk telepíteni a 1.1.4-es
mtv-t, az felülírna pár
olyan filet, ami eredetileg az 1.1.0.20-as
mtv-hez tartozna. És az is kiolvasható,
hogy a feltelepíteni kívánt
csomag frissebb, mint a gépen lévő
csomag. Akkor ezt könnyű szívvel
frissíthatjük, a következő
paranccsal:
rpm -U mtv-1.1.4-1.i386.rpm
E hatására
frissíti az mtv csomagot. A frissítési
opciókkal még később foglalkozunk!
- Mit
tehtünk akkor, ha a feltelpíteni kívánt
csomagnak egy olyan csomaggal van konfliktusa, ami egy teljesen
másik programot tartalmaz? Nos ilyenkor el kell
gondolkodnunk, hogy mik is azok a fileok, és milyen hatással
lehetnek az egyik, illetve a másik program/csomag működésére.
Ha egy sima dokumentumról van szó, akkor természetesen
semmi gond, de ha egy bináris, vagy konfigurációs
fileról van szó.... Nos akkor szerintem jobb ha vagy
az egyiket, vagy a másikat töröljük, amit az
rpm --erase <csomagneve> paranccsal megtehetünk, és
ezután már gépünkre szabadíthatjuk
az 'rpm -i <file neve>' parancsot. De tegyük, fel, hogy
minket nem érdekel hogy milyen kárt teszünk a
felülírással! Ekkor az 'rpm -i --replacefiles
<file neve>' parancsot kell meghívni, ami zokszó
nélkül feltelepíti a csomagot, és minden
útjában álló filet felülír.
- Tegyük
fel, hogy a telepítési tesztnél egy
hiányosságra figyelmeztet minket az rpm, de tudjuk,
hogy a program ettől működni fog (legalábbis azt
hisszük), csak esetleg a filehoz tartozó képessége
nem lesz használható. Ekkor a csomagot az 'rpm -i
--nodeps <file neve>' paranccsal kell feltelepíteni.
Körübelül
ezek az opciók jönnek számításba,
amikor telepítni szeretnénk egy csomagot, és
általában ezek a variációk kielégítik
az átlagos felhasználót. De ennél sokkal
több telepítési opció is van, és
ezek a következők:
- rpm -i --replacepkgs <file neve>:
Ha feltelepítettünk egy csomagot,
és mondjuk ha az megsérült,
e opció segítségével
az egészet újratelepíthetjük.
- rpm -i --force <file neve>:
Ezzel tulajdonképpen azt mondod az
rpm-nek: Telepítsd fel mindenképpen!
- rpm -i --excludedocs <file neve>:
Az rpm csomagban egyes fileokat definiálni
lehet, mint dokumentum. E opció
hatására
ezeket a fileokat nem rakja fel.
- rpm -i --includedocs <file neve>:
Ez az opció akkor hasznos, ha az
rpm
kezelőd úgy van beállítva,
hogy soha ne rakja fel a dokumentumokat
instaláláskor.
E opció hatására lebeszélhető
e tagadó viselkedéséről,
és felrakja a csomagban lévő
dokumentumfilokat is.
- rpm -i --prefix <path> <file neve>:
Néhány rpm csomag megengedi,
hogy megadjunk egy útvonalat, amit
gyökérnek tekint, így
áthelyezhető a program. Például
ha a path-nak a /usr -t adjuk meg, akkor
ami eredetileg a /bin -ben lenne, a /usr/bin-be
kerül. Ez az opció nem minden
csomagnál él. És hogy
honnan tudható meg, hogy áthelyezhető-e
a csomag? Erre a következő parancs
ad
választ:
rpm -qp --queryformat
"%{defaultprefix} n" <file neve>
Ha e parancs hatására
a none választ kapjuk, akkor a csomag nem helyezhető
át.Viszont ha egy útvonallal válaszol (a
--prefix opció hiányakor oda települne a
program), akkor a csomag áthelyezhető.
- rpm -i --noscripts <file neve>:
Az rpm csomagban, mint említettem
scriptek is elhelyezhetők, amik a telepítés
előtt/után, vagy törlés
előtt/után lefuttathatók.
E
opció ezek futtatását
tiltja.
- rpm -i --percent <file neve>:
Hasonló a -h opcióhoz, csak
itt a # jel helyett kiírja számmal,
hogy a telepítés hány
százalékával végzett.
Ezt főleg az rpm kezeléséhez
írt programoknak szánták.
- rpm -i --root <path> <file neve>:
Ezzel a gyökérkönyvtár
definiálható. A path opcióban
megadható, hogy a / könyvtár
helyett melyiket tekintse gyökérkönyvtárnak.
- rpm -i --dbpath <path> <file neve>
Az rpm a feltelepített csomagokra
vonatkozó információit
egy fileban, egy adatbázisban tárolja.
Ennek az elérési útvonalát
lehet megadni. Nagyon ritkán, szinte
soha sem kell használni.
- rpm -i --ftpport <port> <url cím>:
Ha az rpm-nek egy url címet adunk
meg, az képes a megadott címről
telepíteni a csomagot. A <port>
opcióban a cél portszámát
adhatjuk meg.
- rpm -i ftpproxy <host> <url cím>:
Mint az előzőnél, csak itt az ftp-proxy
szerver-t használjuk, a biztonságos
kapcsolat érdekében.
- rpm -i --ignorearch <file neve>:
az rpm csomagban definiálható,
hogy milyen architektúrára
(pl.: alpha, i386...) van fordítva
a program, és természetesen
az rpm tudja, hogy milyen architektúrán
van. Ha a csomagban nem egyezik az architektúra
a gép arhitektúrájával,
és ezért nem akarja feltelepíteni
a csomagot, e opcióval mozgásba
hozhatjuk a telepítést
- rpm -i --ignoreos <file neve>:
Hasonló az előzőhöz, csak itt
az operációs rendszer (pl.:
linux, beos...) beállítását
lehet felülbíráltatni.
Ezen opciók tetszés
szerint variálhatók, kombinálhatók,
keverhetők.
Vissza