Rendszergazda & webfejlesztő devblog Laczkó Zoltán blogja

10máj/101

Debian csomagok újrafordítása módosítással

A programok folyamatosan jönnek ki újabb és újabb funkciókkal, adott esetben mások által készített kiegészítésekkel is (patch). Mit csináljunk, ha nem akarunk a debian rendszerünkre forrásból felrakott patch-elt programokat, csak debian csomagokat, megtartva annak minden előnyét.

Forrásból vagy csomagból?

Biztos, hogy mással is előfordult már, amikor egy programhoz valamilyen kiegészítést, módosítást kellett volna felrakni, de a hivatalos debian csomagban nem szerepelt, vagy csak testing/sid -ben. Ilyenkor két lehetőség van.

Az első, hogy a program forrását patch-elve fordítjuk le és rakjuk fel a rendszerünkre.  Ezt sokan nem szeretik, mert nehéz nyomon követni, hogy pontosan mit és hova telepített, bonyolult a frissítések kezelése, és az esetleges eltávolítás. Néha pedig a debian csomagban már meglévő funkciók módosulnak, eltűnnek, vagy a futtatható állományok máshova kerülnek, mintha csomagból került volna fel.

A másik lehetőség a hivatalos debian csomag újrafordítása tetszőleges módosításokkal a forrásban. Mindezt a debian csomagkezelő programjainak segítségével, nagyon egyszerűen.

Szükséges eszközök

Elsőnek pár alapvető csomagkészítő eszközt kell felraknunk.

apt-get install devscripts build-essential

Csomag forrás letöltése

A hivatalos debian csomagtárak tartalmazzák a forrásokat is, nem csak a lefordított binárisokat. Ehhez mindössze a /etc/apt/sources.list -be kell a meglévő deb sorok deb-src párját kell beillesztenünk.

deb http://ftp.hu.debian.org/debian/ stable main non-free contrib
deb-src http://ftp.hu.debian.org/debian/ stable main non-free contrib

ezután frissítsük a csomag listát:

apt-get update

ha nem kaptunk hibaüzenetet, akkor már el is érhetjük a kívánt csomag forrását

apt-get source <csomagneve>

Ez az aktuális könyvtárba tölti le a forrást, így célszerű elsőnek kiválasztani a könyvtárat, ahol dolgozni szeretnénk. Letöltés után ellenőrzi a tartalmat, kitömöríti azt és felkészíti a fordításra.

Függőségek telepítése

Egyes csomagoknak vannak függőségei, más csomagok szükségesek hozzá. Ezeket a csomagokat fordítás előtt fel kell telepítenünk, különben nagy valószínűséggel a fordítás nem fog hiba nélkül lefutni.

apt-get build-dep <csomagneve>

Módosítsuk a forrást

Tetszés szerint módosíthatjuk a letöltött forrást. A módosítás részletezése, többnyire a kívánt patch doksijában szerepel, alkalmazd az ott leírtakat. A debian mappában van fontos fájlok, mint pl a rules, ami többek közt tartalmazza a fordítási kapcsolókat is. control tartalmazza a csomag leírását. changelog tartalmazza a verziószámokat, szerzőket, módosítási összesítőt, stb. További részletekért olvasd el az angol nyelvű debian csomag kezelői dokumentációt

Készítsünk debian csomagot

A módosítások után már csak annyi dolgunk van, hogy lefordítsuk a forrást és debian csomagot készítsünk belőle

cd <csomagneve-verzio>
debuild -us -uc

A debuild eszközt -us -uc paraméterekkel használtuk, mert nem mi vagyunk a csomag hivatalos kezelője és ezért nem tudjuk hitelesíteni az elkészített csomagot.

Telepítsük a módosított csomagot

A fordítás után egy könyvtárral fentebb megtalálhatóak az elkészített deb fájlok pár más fájllal együtt (forrás, fordítási napló, stb). Berakhatjuk a lokális csomagtárba is, vagy közvetlenül dpkg -val feltelepíthetjük.

cd ..
dpkg -i <csomagnev_verzio.deb>
Hozzászólások (1) Hivatkozások (2)
  1. Nem is gondoltam volna, hogy ilyen egyszerűen meg lehet patchelni egy .deb -et! Köszi a leírást, várom a következőket.


Leave a comment