NOVINKY:

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]

další novinky >>

Novinky jinde:
Root | Abclinuxu | Linuxsoft

Vyhledávání:

 


Proč používat Linux  Wikipedie - největší otevřená encyklopedie na internetu v češtině.
 MENU: Články a návody | Jak na to | Překlady | Odkazy | Obrázky z Linuxu  | Download |

POUŽÍVÁME CHECKINSTALL

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á.

  • Někde u sebe si např. pomocí Shift+F4Krusaderu vytvoříme nový soubor s názvem .rpmmacros (včetně tečky na začátku) a do něj napíšeme přesně toto:
    %_unpackaged_files_terminate_build	0
    %_missing_doc_files_terminate_build	0
    
    Název parametru a hodnotu "0" od sebe odděluje tabulátor.
  • Uložíme, a potom jako root překopírujeme do adresáře /root. Např. v konzoli su [Enter], heslo [Enter], cp .rpmmacros /root [Enter], exit [Enter].

Teď už bude checkinstall dělat to, co se od něj očekává.

 

Ještě pár poznámek:

  • Někdy obdržíte spoustu chybových hlášek týkajících se nemožnosti kopírování souborů s dokumentací do adresářů /usr/share/doc. Pomůže smazání adresáře doc-pak.
  • Pokud adresář doc-pak neexistuje, checkinstall se vás ptá, jestli chcete standardní sadu vytvořit: Should I create a default set of package docs? [y]. Uvažte to, ale pokud s tím balíčkem nebudete dělat nic jiného, než instalovat do vlastního systému, asi odpovíte n [Enter]. Pravděpodobně by se nic nestalo, ale pokud checkinstall použijete podruhé na stejný program, dochází k chybám popsaným v prvním bodu.
  • Na otázku, jaký balíček se má vytvořit:
    Please choose the packaging method you want to use.
    Slackware [S], RPM [R] or Debian [D]?

    samozřejmě odpovíme r [Enter].
  • Jestliže budete ručně zadávat verzi programu (v tabulce This package will be built according to these values: je to bod 3), vyhněte se pomlčkám. Zadáte-li např. "1.0.0-rc4", dostanete chybu od rpmbuildu. Správně je "1.0.0.rc4".
  • Pozornost byste měli věnovat také procesorové architektuře, na kterou jste dotazováni v bodu 7 . Přednastavená hodnota je i386, což bude fungovat, ale pravděpodobně budete chtít překlad pro svůj systém, takže vyplňte i586, i686, nebo něco jiného např. podle výpisu příkazu uname -a.
  • Na konci úspěšného procesu byste měli dostat toto:
    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.rpm
    
    V Mandrakelinuxu namísto rpm -i samozřejmě použijeme urpmi. Tedy:
    urpmi /usr/src/RPM/RPMS/i686/jméno-verze.i686.rpm [Enter]

 

Odkazy:


 

Verze tohoto dokumentu:

  • 17.05.2004 - původní verze

 

Komentáře

1. [21.08.2004 22:41] Checkinstall nefunguje

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 :-/

 

2. [23.08.2004 7:32] RE: Checkinstall nefunguje

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?

 

3. [23.08.2004 13:13] RE: Checkinstall nefunguje

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)

 

4. [21.11.2004 17:33] Reseni problemu

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.

 

5. [13.05.2006 16:33] Taky reseni

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.

 


© Aleš Tošovský - linux.tosovsky.info