30. dubna 2009 (09:00)
Vyšla jarní verze distribuce Mandriva Linux 2009.1. Nově nasazené graficke prostředí KDE 4 je na rozdíl od předchozí verze mnohem dál, posunulo se od hezkého experimentu k plně použitelnému systému. Česká knižní edice k této verzi nebude, takže nezbývá, než stahovat a s problémy se obrátit na fórum.
[Všechny informace v češtině]
[Představení hlavních novinek]
[Poznámky k vydání]
[Download]
[Errata] [Errata česky]
Možná jste něco zaslechli o velmi šikovném scriptu jménem checkinstall. V podstatě se jedná o řešení problému s nepořádkem ve vašem systému, který vznikne, jestliže se rozhodnete nějaký program vlastními silami (resp. vlastním překladačem) zkompilovat. Kompilace, která většinou obnáší tzv. svatou trojici ./configure - make - make install má ve svém třetím kroku za následek nakopírování všech souborů nově přeloženého programu na správná místa.
To je pěkná věc, ale má to háček, nebo spíš hák. Váš balíčkovací systém o vaší partyzánské akci nic neví. V jeho pečlivě udržované databázi nejsou nové soubory zapsány a následkem toho může být například to, že vám při nějaké další instalaci, či odinstalaci něco přepíše, nebo smaže a tím bude na potíže zaděláno. Další stinnou stránkou je, že zkompilovaný program budete pravděpodobně chtít někdy odinstalovat a tak byste museli ručně procházet všechny adresáře, kam se soubory nainstalovaly a promazávat je. Tedy v případě, že budete schopni zjistit co a kam se nakopírovalo.
Takže. Jestli chcete zkoušet kompilovat, potřebujete checkinstall, jímž nahradíte třetí krok v instalaci. Zjednodušeně řečeno, namísto make install zadáte checkinstall (jako root samozřejmě). Checkinstall sám spustí make install (nebo i jiný příkaz, který mu zadáte), sleduje, co se děje, podle toho vyrobí RPM balíček, ten vy nainstalujete a je to. Máte vytoužený program, urpmi databáze je kompletní a všichni jsou šťastní.
Tím končím stručné nastínění funkce a doporučuji článek "Hlídejte si instalaci" na rootu, kde se dozvíte víc. Tamtéž si můžete přečíst také spoustu čtenářských názorů. Včetně těch, které checkinstall považují za "špinavý dirty hack".
Jestli jste se s checkinstallem seznámili, jste názoru, že bez něj nemůžete žít a máte Mandrakelinux 10, máte dva problémy:
1. Kde ho vzít.
Stačí zajít do contribu, kde najdete checkinstall-1.6.0-0.beta2.1mdk.i586.rpm. Můžete ovšem také z domovské stránky stáhnout zdrojové soubory a rovnou se pustit do kompilace. S checkinstallem totiž můžete checkinstall bezpečně nainstalovat.
2. Chybová hláška
Druhý problém je vážnější. Když se pokusíte vyrobit svůj první RPM balíček a s napětím očekáváte, že to, co bylo až dosud vyhrazeno pravým linuxovým guru, dokážete sami, bude vaše nadšení zchlazeno následujícím chybovým hlášením:
error: Installed (but unpackaged) file(s) found
Vinen není checkinstall sám, ale program rpmbuild, který je checkinstalem volán a vyjadřuje svou nespokojenost s tím, že některé soubory obsažené v instalačním adresáři (tj. $RPM_BUILD_ROOT) nejsou vyjmenované v sekci %files spec souboru. Rpm od verze 4.1 to vadí a Mandrake 10 obsahuje novou verzi rpm-build-4.2.2-7. Vyřešit se to dá tak, že rpmbuildu dáme příkaz, ať si těchto "chyb" nevšímá.
%_unpackaged_files_terminate_build 0 %_missing_doc_files_terminate_build 0Název parametru a hodnotu "0" od sebe odděluje tabulátor.
Teď už bude checkinstall dělat to, co se od něj očekává.
Ještě pár poznámek:
Done. The new package has been saved to /usr/src/RPM/RPMS/i686/jméno-verze.i686.rpm You can install it in your system anytime using: rpm -i jméno-verze.i686.rpmV Mandrakelinuxu namísto rpm -i samozřejmě použijeme urpmi. Tedy:
Odkazy:
Verze tohoto dokumentu:
Poslal notfound (mail[zavinac]grmela[tecka]com)
Posledni dobou mam problem s pouzivanim checkinstallu - bez problemu jakychkoli prelozim, ale pri instalaci pomoci checkinstallu mi program vyplivne jenom nekolik (desitek) hlasek nasledujiciho typu :
/usr/bin/install: zachování časů souboru `/usr/local/include/dclib/core/types.h\': No such file or directory /usr/bin/install: cannot set time stamps for `/usr/local/include/dclib/core/types.h\': No such file or directory /usr/bin/install -c -p -m 644 platform.h /usr/local/include/dclib/core/platform.h /usr/bin/install: zachování časů souboru `/usr/local/include/dclib/core/platform.h\': No such file or directory /usr/bin/install: cannot set time stamps for `/usr/local/include/dclib/core/platform.h\': No such file or directory make[3]: *** [install-library_includeHEADERS] Error 1 make[3]: Leaving directory `/home/gum/dokumenty/src/dcgui3/dclib-0.3.3/dclib/core\' make[2]: *** [install-am] Error 2 make[2]: Leaving directory `/home/gum/dokumenty/src/dcgui3/dclib-0.3.3/dclib/core\' make[1]: *** [install-recursive] Error 1 make[1]: Leaving directory `/home/gum/dokumenty/src/dcgui3/dclib-0.3.3/dclib\' make: *** [install-recursive] Error 1 **** Installation failed. Aborting package creation. Cleaning up...OK Bye.
A nic se nenainstaluje :-/
Poslal Aleš Tošovský
Máte problémy jen s konkrétním programem (direct connect), nebo s jakýmkoliv?
> "...bez problemu jakychkoli prelozim..."
znamená, že "make install" funguje a checkinstall ne?
Jakou verzi Mandrakelinuxu a checkinstalu máte?
Problémy máte od nějaké konkrétní události? Update systému, nová verze checkinstalu, nová verze rpm-buildu?
Poslal notfound (mail[zavinac]grmela[tecka]com)
No s jakymkoli jinym - predtim to slo, ale pak jsem nejakou dobu checkinstall nepouzival a najednou to nejde. Ano, make install funguje bez problemu - byl jsem uz nucen takto nainstalovat ICQ klienta SIM, protoze jinde nez ve zdrojakach nova verze (z CVS) nebyla. Mam ted nove jadro (2.6.8) a situace je porad stejna, rekl bych, ze se to zmenilo nekdy v prubehu pouzivani 2.6.7. Taktez jsem instaloval nove KDE. Mozna na to mohl mit vliv nektery z updatu pres MandrakeUpdate.
MDK 10.0 se vsemy updaty z MandrakeUpdate
RPM 4.2.2
checkinstall 1.6.0beta2 (z RPM)
Kernel 2.6.8 (vlastni konfigurace; ze zdrojaku)
KDE 3.2.3 (z RPM)
Napriklad SIM: 0.9.4 CVS 10 Aug 2004 (ze zdrojaku)
Poslal notfound (mail[zavinac]grmela[tecka]com)
Reseni je zverejneno primo na sajtech Checkinstallu a je jednoduche:
Pro instalaci nedame proste "checkinstall" ale "checkinstall --fstrans=no --install=yes", cimz se balicek zaroven i nainstaluje po vyrobeni.
Chyba se projevuje spolu s novymi verzemi glibc.
Poslal MichalS (migus[zavinac]atlas[tecka]com)
Já jsem problém vyřešil tak,že před zadáním příkazu checkinstall nakopíruju adresář s programem,který chci kompilovat do adresáře /usr/share/doc.