Instalace kompilátu v Debianu

Kyblík

Instalace kompilátu v Debianu
« kdy: 19. 05. 2014, 01:39:57 »
Tak se mi ůspěšně povedlo zkompilovat mc - midnight commander, díky 3 dílnému seriálu o kompilaci od p. Krčmáře - tím taky skládám poklonu, není to první ani poslední jeho počin, který mě vede divočinou linuxu.
Teď VCG.

Instaloval jsem "make install", což myslím, že je obyčejné nakopírování výsledku kompilace tam kam patří. Mc funguje, dokonce správně česky(všechny funkce jsem nezkoušel-to ani nejde). Odinstaloval jsem "make uninstall". Hned. Protože takováto instalace způsobí, že balíčkovací systém debianu ví o této instalaci kulový.
Normálně tahám hotové balíky do systému z repozitářů příkazem aptitude -prý je lépe ošetřen, nežli apt-get (to je teď ale nepodstatné).

Někde jsem z vlaku zahlédl také něco o dpkg, a! teď tomu mírně nerozumím. Dpkg instaluje z balíku xxxxx.deb který se nějak poskládá také z kompilace (teď je jedno jak, já si to najdu, až to budu potřebovat), ale prý je to nějaká nižší? forma instalace než aptitude, nebo apt-get.

Mohl by mi někdo ve zkratce vysvětlit ty jemné rozdíly v chuti vína samotné instalace vlastního kompilátu? Čím ho nainstalovat, abych mohl v budoucnu kdykoli bezpečně odinstalovat, podobně jako u aptitude?

Nebo mě kopněte směrem, kde se o tom pojednává, předem smekám.
« Poslední změna: 19. 05. 2014, 11:05:57 od Petr Krčmář »


Jenda

Re:Instalace kompilátu v debianu
« Odpověď #1 kdy: 19. 05. 2014, 02:42:26 »
apt (a aptitude) řekneš obecně název programu, který chceš nainstalovat - třeba "firefox". apt s podívá do seznamu dostupných balíků a vybere balík obsahující firefox ve správné verzi (můžeš mít třeba nastaveno, že Firefox chceš poslední, ale Thunderbird chceš nějakou „stabilní“ verzi). Zjistí třeba, že bude potřebovat "firefox_29.0+build1-0ubuntu0.14.04.2_i386.deb". Pak se podívá, jaké má tento balík závislosti a rekurzivně jaké závislosti mají tyto závislosti. Pak to všechno postahuje z internetu a pak na ty balíky spouští ve správném pořadí (ve stromu závislostí od listů) "dpkg -i". dpkg je program, který sám o sobě neumí řešit závislosti ani stahovat nic z internetu, pouze plní příkazy "nainstaluj balík, co je v tomto souboru".

#Tom

Re:Instalace kompilátu v debianu
« Odpověď #2 kdy: 19. 05. 2014, 08:11:19 »
Zmíněný seriál jsem nečetl, jen doplním, že správci balíků (jako dpkg, apt apod.) většinou nesahají na adresáře /usr/local/* a /opt/*, pročež je vhodné naprostou většinu programů kompilovaných ze zdrojových textů instalovat právě tam. Dlužno dodat, že některé programy nic jako make uninstall nemají.

To neplatí v případě, kdy je takto instalovaný celý systém, jako např. Linux from scratch. O udržování vlastního pořádku v instalovaných programech je pojednáno mj. zde a ještě tady.

Kyblík

Re:Instalace kompilátu v debianu
« Odpověď #3 kdy: 19. 05. 2014, 09:44:30 »
@Jendo, zhruba vím jak funguje aptitude, ale u dpkg jsem se dočetl právě, že hlídá i závislosti - jestli balík *.deb neobsahuje něco, co v systému není.

Ale o co me jde, jestliže zkompiluju nějaký prográmek, který užívá knižnic ze systému, a mezičasem dojde k upgrade systému tak, že by prográmek mohl kvůli tomu ztratit závislosti, vytvořené v době kompilace, musel bych znovu kompilovat. Což vyvolá potřebu minimálně odinstalace předchozí verze. Ale i tomu bych se chtěl vyhnout, a zařídit instalaci tak, aby vzala v potaz také závislosti od systémových knihoven.

make install a make uninstal, jestli se nepletu, fungují jen z adresáře, ve kterém vznikl kompilát, pro mne je to prozatím ten s rozbalenými zdroji po ./configure a make. Domnívám se, že to, co make install a make uninstall dělá, je závislé na tom, co autor programu udělal. Pokud nenapsal, co se má dělat po make uninstal, tak ano, make uninstal nebude fungovat.
Takže o co me jde - dovědět se, jaký balíčkovací systém použít, aby funkci programu neohrozil případný pozdější upgrade systému a, jestli, a jak,  je možné pro tento balíčkovací systém vytvořit balíček z kompilátu.

Já kompilacii rozumím jen malinko, ale domnívám se, že když make install ví, kde vzít binárku(kde jsou tyto informace nevím, ale vím že po kompilaci někde jsou), knihovny a konfigurační soubory vytvořené kompilací (kam se uloží výsledky kompilace je na vůli autora kompilovaného programu) a nakopírovat je kam patří, mohl by nějaký balíčkovací systém umět také zkontrolovat závislosti a zapsat informace někam, kde se při upfrade systému vezmou tyto informace v potaz a je vymalováno. Vím, že toto například v nejvyšší míře umí aptitude, proto jej používám i místo apt-get, raději.
No ale u instalace vlastní kompilace nepotřebuju stahovat z depozitářů, že ano, takže čím balíčkovat?

DK

Re:Instalace kompilátu v debianu
« Odpověď #4 kdy: 19. 05. 2014, 10:19:57 »
Kyblik: ano, dpkg hlida zavislosti, ale neresi je (kdyz baliku chybi zavislost, odmitne ho nainstalovat), aptitude si zjisti, ktere zavislosti jsou treba nainstalovat a ty balicky pak postupne predava dpkg

co se tyce zavislosti vlastniho balicku, vzdycky muzes vytvorit vlastni .deb soubor... make install a make uninstall jsou nepovinne parametry Makefile (tzn zalezi na vyvojari, jestli tam bude moznost odinstalovani... tudiz to i logicky funguje pouze v tom adresari, ve kterem se nachazi Makefile)

pokud chces mit automaticky resene zavislosti, bud balickuj soubory do debu (https://wiki.debian.org/Packaging), nebo se vykasli na kompilaci a instaluj to z repozitaru (pripadne se muzes mrknout na staticke linkovani, ktere by tvoje problemy resilo, ale pokud nemas zkusenosti s programovanim, tak to pro tebe bude asi spanelska vesnice)


jinak apt-get je nadstavba nad aptitude a umi treba direktivu autoremove (jinak je vicemene jedno, co se pouziva)


anon

Re:Instalace kompilátu v Debianu
« Odpověď #5 kdy: 19. 05. 2014, 19:46:46 »
Dalsi moznost by byla treba oznacit ty zavislosti jako "hold".

http://askubuntu.com/questions/18654/how-to-prevent-updating-of-a-specific-package

anon

Re:Instalace kompilátu v Debianu
« Odpověď #6 kdy: 19. 05. 2014, 19:51:14 »
Jinak jestli chces patchovat program nebo jinou verzi programu pro kterou uz existuje balicek, tak "apt-src install <balicek>" (je potreba pridat src zdroje do /etc/apt/sources.list) - udelat potrebne zmeny (napr. pridat patch) a dpkg-buildpackage.

Pokud chces instalovat neco, pro co balicek neni a chces to mit fakt cisty jak popisujes (zaruku, ze zavislosti budou vzdy v systemu - i po updatu na jinou major verzi), tak vytvorit balicek.

Jine ciste reseni neni.

Kyblík

Re:Instalace kompilátu v Debianu
« Odpověď #7 kdy: 19. 05. 2014, 22:22:46 »
Mockrát děkuju, mezitím jsem také něco nastudoval a díky vám už mám nějakou představu, až to zvládnu, příští stanice bude křížová kompilace.

Martin

Re:Instalace kompilátu v Debianu
« Odpověď #8 kdy: 20. 05. 2014, 06:02:26 »
Něco takového by měl tuším umět balík "checkinstall". Ale je to dost dlouho, co jsem se to pokoušel použít.
https://wiki.debian.org/CheckInstall

Kyblík

Re:Instalace kompilátu v Debianu
« Odpověď #9 kdy: 20. 05. 2014, 11:11:18 »
No, na ten jsem také narazil, ale prozatím blíže neprostudoval. Pánové, linux je obrovský oceán. A díky za každou slamku.

Re:Instalace kompilátu v Debianu
« Odpověď #10 kdy: 20. 05. 2014, 11:31:57 »
Pánové, linux je obrovský oceán. A díky za každou slamku.
Zas timhle tim se nemusis moc zabyvat, pokud nechces Linux vylozene administrovat. Normalni uzivatel si v klidu vystaci s distribucnimi balicky. Kdyz si vytvoris svoje, zbytecne zvysujes sanci, ze s tim budes mit problemy a nikdo ti neporadi.

Martin

Re:Instalace kompilátu v Debianu
« Odpověď #11 kdy: 06. 06. 2014, 06:05:13 »
Ne až tak docela. Zrovna teď řeším jak donutit mediatomb posílat titulky na Samsung TV... Je na to patch, ale nezbývá než to zkompilovat sám, v binárkách není...

Re:Instalace kompilátu v Debianu
« Odpověď #12 kdy: 06. 06. 2014, 06:31:21 »
Ne až tak docela. Zrovna teď řeším jak donutit mediatomb posílat titulky na Samsung TV... Je na to patch, ale nezbývá než to zkompilovat sám, v binárkách není...
Jo, pokud člověk potřebuje něco speciálního nutně, tak patchovat musí no... Akorát pak právě musí sledovat, co se změnilo v upstreamu, a případně znovu aplikovat patch na novou verzi, znovu přeložit, doufat, že patch nezpůsobuje nějaké chyby, které v upstreamu nejsou... Čím víc těch patchů je, tím nadlištější je to úkol. Samozřejmě je rozdíl si patchovat něco na desktopu a něco jinýho je patche udržovat pro produkční server.