Kako prepakirati natrag instalirani debian paket

Paradoks u računalstvu je da za mnoge stvari često ni ne znamo koliko su nam nedostajale, dok ne vidimo da postoje. Za one koji koriste debianov paketni sustav apt odnosno dpkg možda je mogućnost vraćanja instaliranog paketa natrag u .deb oblik u tom smislu pravo otkriće.

Postoje naime situacije kad smo suočeni sa sustavom na kojem imamo instaliran program koji dobro radi i rado bismo ga sačuvali ili pokrenuli i na nekom drugom računalu, ali do debian paketa tog programa iz nekog razloga više ne možemo doći: npr. ako je (recimo, radi uštede prostora na disk-particiji) nakon instalacije očišćena lokalna apt arhiva (apt-get clean) a paket povučen iz službenih repozitorija.

Tada možemo konstatirati samo, kako je šteta što je originalni paket izgubljen, pogotovo ako se ne osjećamo dovoljno stručni da nepostojeći paket ni uz pomoć vrlo dobrih uputa (npr.: http://tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/ ) napravimo sami.

Naravno još postoji mogućnost da pomoću alatke zvane alien "pretočimo" paket iz nekog drugog paketnog sustava u .deb oblik:

alien --to-deb ime_paketa.rpm
alien -d ime_paketa.tgz
...

No ako baš nikako ne možemo doći do sličnog paketa ni koristeći druge distribucije linuxa, koje imaju drugačijii sustav pakiranja programa, postoji na početku članka spomenuta mogućnost vraćanja instaliranog paketa natrag u .deb oblik.

Dapače ova metoda ima u izvjesnom smislu i određenu prednost, jer će u rekreirani paket uvrstiti i sve konfiguracione datoteke dotičnog programa u onom obliku u kojem se trenutno nalaze, pa nam naknadna rekonfiguracija prema vlastitom "ukusu" može biti ušteđena.

Da bi rekreirali debian paket instaliranog programa, moramo znati u prvom redu njegovo ime. Imena debian paketa su u načelu smislena i obično su ista kao i ime programa (npr. program 'mc'), u protivnom do imena paketa možemo doći rabeći naredbu dpkg. Primjer želimo naći ime paketa koji filtrira spam:

dpkg -l | grep spam
ii  pyzor                     1:0.4.0+cvs20030201-8         spam-catcher using a collaborative filtering
ii  razor                     1:2.85-1                      spam-catcher using a collaborative filtering
ii  spamassassin              3.2.5-2+lenny1                Perl-based spam filter using text analysis
ii  spamassassin-cn           2:3.2.5-7lenny1               Perl-based spam filter using text analysis
ii  spamc                     3.2.5-2+lenny1                Client for SpamAssassin spam filtering daemo

Izlistana su imena paketa koji bi mogli doći u obzir. Ako nas zbunjuje što je izlistano više paketa i ne znamo koji nas zapravo interesira, onda možemo napraviti dodatnu provjeru time da izlistamo sve datoteke jednog od paketa koji nam se čini da je najbliže našoj procjeni, npr.:

dpkg -L spamassassin-cn
/.
/etc
/etc/cron.daily
/etc/cron.daily/spamassassin-cn
/etc/cron.monthly
...

Ako ni ni to ne pomaže, jer znamo samo ime neke od datoteka za koju smo sigurni da pripada određenom programu/paketu i tu postoji lijek. Primjer: s naredbom fuser, strace ili lsof i sl. smo utvrdili da program koristi datoteku /etc/mc/mc.lib:

dpkg -S /etc/mc/mc.lib
mc: /etc/mc/mc.lib

dobijemo doista, da je mc i ime paketa. Kad imamo ime paketa, onda naredbom dpkg-repack lako napravimo debian paket od bilo kojeg instaliranog programa:

dpkg-repack mc                                           
dpkg-deb: building package `mc' in `./mc_4.6.2~git20080311-4_i386.deb'.

i voilà u direkroriju, u kojem se upravo nalazimo, imamo rekreiran paket mc_4.6.2~git20080311-4_i386.deb, koji sada bez problema sa istim konfiguracijskim postavkama možemo instalirati i na drugo računalo: dobiveni .deb paket prekopiramo u bilo koji direktorij ciljnog računala i u njemu pokrenemo dpkg:

sudo dpkg -i mc_4.6.2~git20080311-4ubuntu1_i386.deb

i ako ne upadnemo u već poznate probleme s međuovisnostima instaliranih paketa i inačica (dpkg za razliku od modernijeg apt-a o njima ne vodi računa*), paket će biti instaliran.

Još preostaje samo, da napomenemo, da u slučaju potrebe s apt-get install trebamo instalirati paket alien te dpkg-repack, koje smo spomenuli u članku, ukoliko ih nemamo instalirane na sustavu.

*) Više o razlikama između apt i dpkg vidjeti ovdje.

Vijesti: 
Kuharice: 
Kategorije: 
Vote: 
0
No votes yet