Kdyz uz jsme u tech preklepu, korektor je asi na dovolene.
"Stranou by nemel zustat ani balickovaci system distribuce Slackware, ktery pro JEHO jednoduchost a primocarost nekteri ani nenazyvaji balickovacim systemem."
Takhle by si clovek neznaly veci mohl myslet, ze ten balickovaci system o kterm je rec mohl byt sam Slackware. V tomto pripade by bylo jiste vhodne pouzit ceske zajmeno SVUJ "... pro SVOU jednoduchost ...".
Jinak proti clanku nic nemam na tyhle veci jsem uzivatel a odbornou urovni je to neco presne pro mne. Dik za tento clanek.
Ehmm, jaksi vam uslo, ze to jsou DVE vety spojene do souveti. V te prvni vete je podmetem onen (balickovaci) system, v te druhe jsou podmetem nekteri (uzivatele), zatimco ten system je tam predmetem.
Tak nez zas nekdo bude nekoho poucovat, jake privlastnovaci zajmeno ma pouzit, necht si zamete nejdriv pred vlastnim prahem. :-P
Já bych to s těmi černými ovcemi, co nepoužívají autověci, neviděl tak jasně, alespoň tedy u malých programů (což samozřejmě fpc není).
Jako by nebylo dost na tom, že s sebou každý prográmek musí tahat licenci, jejíž velikost bývá např. v případě GNU GPL často srovnatelná s velikostí zdrojáků.
Půlmegabajtové configure je ještě dost malé configure (a to nepočítám config.guess, config.sub, aclocal.m4, případně ltmain.sh a další, menší potvory). Pokud prográmek nepoužívá nějaké nestandardní knihovny nebo nepotřebuje opravdu detekovat [mis]featury systému či kompilátoru kvůli přenositelnosti (a neočekává tuto potřebu v rozumně blízké budoucnosti), tak jsou autověci overkill.
Nejsem žádný antiautoaktivista, používám autověci hodně (a občas možná i rád ;-) ale všeho s mírou...
Zdravim
Jisteze existuje na netu hromada malych doplnsisam.c souboru ktere jsou jako nejaky program, co si vzpominam tak treba programek pro posilani WOL sekvenci na sitovky. Tam by byly auto* samozrejme overkill. Ale clanek je psan pro zacatecniky a ty si programek pro WOL (a jine, vetsinou hodne specialni nebo hardcore veci) kompilovat nebudou.
Instalace OpenOffice.org mi na jednom pocitaci kde jsem ji delal probehla v poradku, to nepopiram, ale zrovna dvakrat nadseny jsem z toho nebyl, jeste ze to nebyl komp pro me.
Ten freePascal jsem zminil zamerne protoze jsem se ho onehda pokousel zprovoznit (mmch na tom stejnem co OO.org) a proste to neslo. Binarky hazely nejakou prapodivnou chybu a zdrojaky byly v absolutne neidentifikovatelnem formatu (a ze tech *.c souboru bylo...). Proste to neslo.
Zdenek
Pro takove programky, ale i pro jine ktere nepouzivaji auto*, bych doporucil cestu simulace. Tedy aby obsahovali configure (obsahujici treba jen '#!/bin/sh') a meli makefile napsany natvrdo (bez makefile se snad nikdo neobejde, krome toho nemusi byt tak velky) s default cilem a cilem install.
Vetsina lidi si pak ani nevsimne ze nemaji auto* ... a i zbytku to prijde lepsi nez nic.
Pouzivam Slackware9.1
Docela dost programu si kompiluju, ale jak uz to tak je na tom svete zarizane, ne vse se podari. Prikladem je pro me OpenDX. Potrebne knihovny a programi jsem tam napral az na HDF5 na ktery jsem musel pouzit rpm balicek. OpenDX se mi skompilovat nepodarilo. Take jsem ho roschodil pres rpm balicek.
Chtel bych se zeptat jestli tento softik nekdo skompiloval a co vsechno tam dodal.
Možná by to šlo ještě více a podrobněji rozvést používání "svaté trojice"..? Lidi většinou na začátku netuší, jestli si před instalací musí balíček přehrát do nějakého speciálního adresáře, jak je to s přístupovými právy (zda to musí provádět jako root nebo atd). Všichni to prostě obejdou větou (... a proběhne standardní instalace...) Přitom ti noví možná lehce tápou. Přimlouval bych s za doplnění, jinak je článek dobrý!
I základní věci je dobré opakovat. My to máme už v pohodě vše zažité,ale je zde další vlna lidí, které linux oslovil a nyní sbírají informace, dávají si dohromady jednotlivé věci, které je zajímají a na instalaci se třeba ještě připravují. Pro ty bych to opakoval, protože, když se jim to napoprvé vše povede, budou třeba lapeni ;-)
Vazeny Gumbo, s Karlem naprosto souhlasim, napr. kam muzu rozbalit zdrojaky jsem dlouho netusil. Taky kdyz jsem zapomnel sekvenci tar xvzf, byl jsem nahranej, protoze kdyz to nerozbalim, neprectu si ani manual, vidte? A jak si mam precist man k tar, kdyz jsem "tar" zapomnel? Tudiz nechapu vase opovrzeni BFU, kdyz sam jste BFG.
Dovolim si jeste citovat z clanku: "...zdrojové kódy, se kterými si můžete dělat, co chcete (např. zkompilovat :-)." - tak to by mi jeste pred rokem neprislo vtipne ani trosku, protoze jsem nevedel, co je to zdrojovy kod, co je to binarka, co to znamena zkompilovat... Autor velice dobre popisuje co s tim, ovsem nerika co to je, proc se to tak jmenuje atd., tedy novacek sice bude vedet co a jak ma udelat, ale nebude tomu rozumet, jako by se nasprtal vysledky cvicebnice z matiky, ale nemel ani paru o tom, jak scitat.
V článku je několik nepřesností nebo zjednodušení, ke kterým už se vyjádřili nebo vyjádří jiní, nejvíce mi ale chybí zmínka o kompilaci zdrojových balíků distribuce.
Ať už se ke kompilaci rozhodnu z jakýchkoliv důvodů (kompilace na míru, novější verze, hraní ...), bývá vhodnější vzít zdrojový balík už přizpůsobený pro běh v mé distribuci. Technicky to je často jednodušší než ./configure, make install, protože není výrobní proces je součástí balíčku (.spec soubor, debian/rules apod.).
Ja si tímto způsobem backportuju vybrané věci z testingu do stable debianu a proti instalaci z čistých zdrojáků s tím je mnohem méně práce a navíc nepřicházím o výhody balíčkovacího systému.
Muj nazor je, ze kompilace ze zdrojaku je nejlepsi a nejjednodussi, toze ./configure && make default install (zpravidla) funguje bez ohledu na distribuci. Uz nekolikrat se mi stalo, ze kvuli "inteligentnim" zavislostem jsem nemohl balice nainstalovat. "--force" sice pomohlo ale stejne to pak vyrvavalo apod. Taky jsem si nevsiml, jestli muzu v nejake baliskovaci/distribuci mit pohodlne nainstalovano vice verzi tehoz programu. (napr. kvuli subversion)
Balíčky (nejen binární, takže do toho teď počítám i Gentoo a spol.) existují proto, abych mohl snadno
(a) odinstalovávat
(b) upgradovat (což znamená odstranění starých souborů, ale nepřepsání nebo uschování konfiguráků, etc.)
(c) zjišťovat různé zajímavé věci -- kde se mi asi vzal v /sbin ten program fcku0? udělal jsem v oproti instalaci nějaké změny v /etc/foobar/foo.cf? jaké další soubory jsem tehdy nainstaloval zároveň s /usr/bin/quux? má ten exaggerator3002 někde nějakou dokumentaci? a pod. (možnosti zjišťování závisejí na implementaci, ale uvedené dotazy jsou běžnou featurou)
(d) zopakovat postup kompilace, včetně aplikace patchů a pod., případně přenesení zkompilovaného výsledku jinam (binární balíčky)
(e) ...
I když kompiluji sw např. na RH ze zdrojáků, dělám to obvykle tak, že napíši spec file a udělám balíček. Pokud už ten sw nebudu nikdy upgradovat, tak se to nevyplatí, jinak se to vyplatí stokrát, zejména pokud jsou kromě triviálního bezparametrového ./configure && make && make install zapotřebí nějaké další kroky.
Závislosti jsou sice běžnou featurou balíčkovacích systémů, ale nikoli jedinou, a možná ani ne hlavní. Špatné zacházení se závislostmi je problém konkrétní implementace a často konkrétního blbě vyrobeného balíčku.
Tak to mas dobre. Mne sa skoro nikdy nepodari zo zdrojakov nic skompilovat. ./configure vypyse chybu a ak nie tak ./ make. Mam RH 8.0 a v podstate si nepametam zeby sa mi nieco podarilo zo zdrojakov. Netusim ci niekde robim chybu ja alebo je to cele na h...o. RPM balicky, niekedy s problemamy ktore sa daju riesit, sa nainstaluju v pohode. A dolezite pre mna je aj moznost unistall (teda rpm -e ...).
Když ./confiugure vypíše chybu, tak (a) obvykle si stěžuje, že nemáte něco potřebného nainstalovaného -- to se to pak bude kompilovat těžko, když to nedoinstalujete... (b) je to chyba configure, což stává zřídka a v tom případě pošlete bugreport...
(A raději nikam nepište, že máte nepodporovanou verzi OS, kde fungují přinejmenším tři jaderné lokální root exploity ... pro jistotu ;-)
Source (zdrojove) balicky nabizeji hlavne nejcerstvejsi verzi daneho software. Kazdy open source soft je nejdriv k dispozici ve forme "zdrojaku".
Nekdy tu nejcerstvejsi verzi potrebujete nutne, pokud odstranuje nejakou vaznou chybu. I kdyz - na druhou stranu - serverove orientovane distribuce vydavaji opravne binarni balicky hodne rychle.
Dalsi duvod, kdy sahnout po zdrojaku je kdyz potrebujete, aby ten soft umel neco, co bylo pri kompilaci originalniho binarniho balicku z distribuce vypnuto (viz dale).
Nekdy obsahuje zdrojovy balicek veci, ktere v binarnim balicku vubec nejsou (extra hlavickove soubory, zdrojaky od dokumentace,...) a vy to potrebujete - treba k instalovani neceho jineho.
Pokud jde o instalacni postup, strucne (pro ty zacatecnikove):
Tak balicek se rozbali pomoci programu tar -xvzf jmeno-balicku.tar.gz. Je-li zabalen jako .bz2 a ne .gz, tak misto volby "z" pouzijte volbu "j". Balicek se rozbali do stejnojmenneho podadresare v adresari, kde jste ten tar prikaz spustili. To by mel byt (na Linuxu) /usr/local/src/ - ten je pro tyhle ucely urcen (konecne vite, proc tam tenhleten prazdnej adresar je:o).
V rozbalenem adresari balicku najdete soubory README a INSTALL (vetsinou). Bez jejich precteni instalace vetsinou probehne uspesne, ale po jejich precteni treba zjistite, ze ten soft umi jeste par dalsich veci.
Taky je fajn prolezt vsechny podadresare a "smejdim a uzivam si to". Navic se tak dozvite i neco navic a tak nejak se se zdrojovym balickem szijete, az zkamaradite.:o) Prima nastroj na prolejzani je Midnight Commander (ale to uz vas podcenuju), prikaz "mc".
Vlastni proces zacina skriptem configure, krery je dobre dobre si spustit nejdrive s volbou --help. Tedy:
./configure --help
Tak se vypisi se vsechny volby, jimiz je mozne kompilaci a instalaci ovlivnit, vcete onoho, vyse zmineneho zapnuti/vypnunti volitelnych vlastnosti (pr: --with-mysql --without-postgres).
Skript configure se musi spoustet s tou teckou a lomitkem na zacatku!!! Tim se zajisti, ze se opravdu spusti ten skript configure, ktery je v aktualnim adresari a ne nejaky jiny.
Skonci-li configure chybou, ctete hlasky na monitoru a v souboru config.log, ve kterem je shrnuto vse, co configure delal a co nasel. Taky je mozne si nechat hlasky z monitoru nechat zapsat do souboru:
./configure > hlasky.txt
nebo
./configure | tee hlasky.txt
(tato varianta zajisti, ze se hlasky zapisi do souboru a soucasne se objevuji i na montioru)
Probehne-li configure bez chyby, dalsi postup je uz brnkacka:
make
make install
Obcas je problem, jak nainstalovany balicek odinstalovat. Autori programu obcas pridavaji do make volbu uninstall, takze prikaz
make uninstall
spusteny z adresare, kde je ten zdrojak rozbaleny odinstaluje soft z compu. Volba uninstall je ale dost vzacnosti. Navic to predpoklada, ze adresar se zdrojakem nesmazete a nechate ho, aby vam zabiral misto na disku. Nicmene, pokud soft instalujete jen na zkousku a po vyzkouseni ho nechcete je moznost unistall po ruce prijemna.:o)
Nemoznosot odinstalace softu nainstalovaneho ze zdrojaku se da resit i pomoci utilit, ktere dodava distributor spolu s distribuci (uz tu nekdo neco zminoval - pridavam slackwarovsky makepkg).
Vybornym resenim je potom zmineny program chceckinstall, ktery funguje jako supervizor instalace a umi vytvaret balicky pro vsechny vyznamne balickovaci systemy. Mate-li ho v nainstalovany, je jeho pouziti snadne. Napr:
checkinstall make install
nebo
checkinstall python setup.py install
atd...
zkratka jakykoliv prikaz, ktery ma zpusobit nainstalovani souboru do systemu se predsadi prikazem chceckinstall a ten se postara o to, ze behem instalace vznikne balicek (binarni) pro danou distribuci a ze nainstalovany soft bude radne zaregistrovan v registru nainstalovanych balicku (ten si kazda distribuce udrzuje jinak). Kazdopadne ten soft pak jde beznymi prostredky, ktere distribuce pouziva ODINSTALOVAT.
Takze shrnuto:
- mam balicek-neco-2.0.6-tar.gz
- umistim ho do adresare /usr/local/src
- rozbalim balicek: tar -xvzf balicek-neco-2.0.6-tar.gz - vznikne (obvykle) adresar balicek-neco-2.0.6
- prepnu se do toho adresare: cd balicek-neco-2.0.6
- prectu co se da. Hlavne README a INSTALL.
- ve vychozim adresari pak spustim
./configure --help a ctu, co se da pouzit za volby.
- spustim configure s vybranymi volbami, napr:
./configure --prefix=/usr --with-that-feature | tee hlasky.txt
- jsou-li problemy, studuji hlasky.txt a config.log
- kompiluji: make
- instaluji: make install
nebo, mam-li nainstalovany checkinstall
- instaluji: checkinstall make install
Hotovo. Uzivam si. Jsem sikovnej! Kdo to o sobe muze rict? :o)
Tak to jen par mych postrehu. Doufam, ze jsem nenudil.:o)
P.S. Je-li v README ci INSTALL neco receno jinak nez tady, pak se ridte tim, co je v tech souborech.:o)
P.S.S. Kde sezenete onen uzasny checkinstall uz necham na vas a na google.com.:o))
Zdravim
Pokracovani clanku z me strany nebude. V brzke dobe vyjde clanek o checkinstallu.
Jinak jsem tam odkazal na docela podrobny clanek o kompilaci (dokonce to ma vice dilu), tam je to snad vsechno dostatecne popsano. Jinak ja rozbaluju zdrojaky pres MCcko, a to snad zvladne uplne kazdy ne? A vlastne je i jedno kam je rozbalim, kdyz to pak zase smazu tak to muzu davat kam chci. Pokud ne, tak to patri do /usr/src/.
Zdenek
Snad ještě není pozdě a někdo mi odpoví. Chtěl jsem se zeptat na jednu věc,..která se tady přešla jako maličkost, knihovny..knihovny.. Casto se stává že při ./configure a make jsou vyžadovány hlavičkové (.h) soubory "systémových" i "nesystémových" knihoven.Ale ty jsou,předpokl.jen v develop verzích knihoven, čili pro kompilaci nových programů je potřeba instalovat develop verze syst.knihoven??Jdou pak odinstalovat a přehrát normálními?