Omgå afhængigheder i pakkesystemet

Fra Debianguiden
Skift til: Navigation, Søgning

Af og til støder man på et stykke software, der ikke endnu findes en Debianpakke til og hvor forfatterne ikke har været så venlige som hos MPlayer (der gør forberedelserne til at kunne oversætte til en Debianpakke). Her kan det være rart at kunne oversætte sin egen version og benytte den sideløbende med sit Debian-system og andre pakker, der har afhængigheder af det selvoversatte programmel.

For at gøre tingene lidt mere klare, er her et eksempel. I skrivende stund findes der ingen officielle PHP5-pakker til Debian. Derfor kan det, hvis man af sikkerhedsmæssige årsager ikke stoler på eksterne kilder, blive nødvendigt at oversætte sine egne. Når dette er gjort, har man en fungerende webserver med PHP5, men man er ret handicappet når det kommer til at skulle installere pakker fra Debian der er afhængige af PHP4, da man ikke både kan have PHP5 og PHP4 indlæst som modul i Apache på samme tid.

Da PHP5 i langt de fleste tilfælde fint kan afvikle PHP4-kode, er man selvfølgelig interesseret i kun at have PHP5 installeret. Problemet opstår når du vil installere en pakke der kræver PHP4 - fx squirrelmail.


Her er et uddrag fra apt-cache show squirrelmail:

Depends: apache | apache-ssl, php4, debconf (>= 0.2.78), 
perl, wwwconfig-common (>= 0.0.2), aspell | ispell

Nu er det klart at vi selvfølgelig ikke kan installere denne pakke, da vi ikke har mulighed for at benytte php4-pakken samtidig med vores egen PHP5. En løsning på det er at lave sin egen "meta"-pakke som kun indeholder en kontrolfil hvis eneste formål er at opfylde afhængigheden af php4-pakken. Til det formål installeres equivs og vi laver en kontrolfil:

debian:~# apt-get install equivs
bruger@debian:~$ cat > php4-provider.ctl
Package: php4-provider
Provides: php4, php4-pear
Description: Dummy PHP4
 Provides a fake PHP4 package

NB: Husk mellemrum før sidste linje: "Provides a fake..."!

Herefter oversættes kontrolfilen til en Debianpakke:

bruger@debian:~$ equivs-build php4-provider.ctl

Nu har du en php4-provider_1.0_all.deb i dit hjemmekatalog lige til at installere:

debian:/home/bruger# dpkg -i php4-provider_1.0_all.deb

Debian vil nu opfatte dit system som havende php4 installeret, og du kan nu installere alle de PHP-applikationer fra Debian-pakkesystemet som du lyster.