CheckInstall

ArticleCategory:

System Administration

AuthorImage: [Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in de Mario M. Knopf

en to pl Artur R. Sierp

AboutTheAuthor:[A small biography about the author]

Mario dobrze sie bawi pracuj�c na Linuksie, zajmuje si� r�wnie� sieciami i sprawami dotycz�cymi bezpiecze�stwa.

Abstract:[Here you write a little summary]

Checkinstall jest narz�dziem do automatycznego budowania pakiet�w RPM (RedHat, Mandrake,Suse), deb (Debian) lub .tgz (Slackware) z paczek �r�d�owych tar.gz. Umo�liwia ono r�wnie� bezproblemow� instalacje i deinstalacje prawie ka�dego pakietu zbudowanego ze �r�de�.

ArticleIllustration:[One image that will end up at the top of the article]

[CheckInstall Title]

ArticleBody:[The main part of the article]

Wprowadzenia

Zdarza si� cz�sto, �e program kt�ry chcesz przetestowa� dost�pny jest jedynie w postaci pakietu ze �rod�ami tar.gz (nie ma paczek RPM,deb itp.). W tym przypadku �ci�gasz pakiet �r�d�owy , rozpakowujesz a nast�pnie kompilujesz i instalujesz (przyp.t�.: zazwyczaj "make install"). Jak dot�d wszystko przebiega poprawnie, ale co sie stanie je�eli zapragniesz usuna� sk�pilowany i zainstalowany program?

W pliku Makefile znajduje si� czasami(ale nie zawsze) odpowiednia regu�a odpowiedzialna za odinstalowanie programu (przyp. t�.: "make uninstall"). Oczywi�cie istnieje mo�liwo�� instalacji programu i wszystkich plik�w potrzebnych do prawid�owego dzia�ania w katalogu tymczasowym w celu �atwiejszego usuni�cia. Jednak�e ten spos�b jest mozolny i pracoch�onny, szczeg�lnie gdy programy s� cz�sto kompilowane i instalowane ze �r�de�. Narz�dzie Checkinstall stworzone przez Felipe Eduardo S�nchez D�az Dur�n rozwi�zuje ten problem.

Z regu�y kompilacja i instalacja program�w poddanych dzia�aniu GNU Autoconf wymaga wydania nast�puj�cych komend:
./configure && make && make install.
Skrypt configure pr�buje odgadn�� prawid�owe warto�ci r�nych, zale�nych od systemu zmiennych, kt�re zostan� p�niej u�yte podczas kompilacji. Sprawdza czy wszystkie wymagania odno�nie procesu kompilacji s� spe�nione, a nast�pnie u�ywa tych zmiennych do utworzenia plik�w Makefile w odpowiednich katalogach pakietu. Ponadto skrypt configure generuje dodatkowo jeszcze inne pliki. W skr�cie mo�na to przedstawi� tak:

Po pomy�lnym zako�czeniu dzia�ania skryptu configure wpisujesz make aby skompilowa� �r�d�a i utworzy� binarne pliki gotowe do uruchomienia. Mo�e istnie� r�wnie� mo�liwo�� po wykonaniu make przeprowadzenia testu poprzez wydanie komendy make check. Z uwagi na to, i� jest to opcjonalny krok, sam pakiet musi jednoznacznie wspiera� to dzia�anie. Kiedy make zako�czy ju� swoj� prac� mo�esz zainstalowa� skompilowany program wydaj�c komend� make install - z oczywistych wzgl�d�w musisz posiada� odpowiednie uprawnienia. Po pomy�lnym zainstalowaniu programu mo�esz usun�� ju� pliki binarne (wykonywalne) i obiektowe z katalogu ze �r�d�ami wklepuj�c make clean. Je�eli zale�y Ci tak�e na usuni�ciu plik�w powsta�ych podczas dzia�ania configure w�wczas piszesz make distclean. Warto nadmieni�, �e dwa ostatnie kroki, podobnie jak make check s� opcjonalne i u�ywaj� ich g��wnie deweloperzy, podczas rozwijania i testowania programu. Ty te� mo�esz z tego skorzysta� chocia�by w celu zaoszcz�dzenia miejsca na dysku lub poprostu gdy lubisz mie� porz�dek w katalogu ze �r�d�ami. Ponadto make distclean stwarza mo�liwo�� ponownej kompilacji pakietu dla odmiennej architektury czy OS.

Wi�cej szczeg�owych informacji o GNU Autoconf poszukaj w dokumentacji [2]. Znajdziesz tam - poza podstawowym wprowadzeniem - r�wnie� wi�cej informacji o GNU Build System. Nauczysz si� jak pisa� w�asne skrypty configure programuj�c w M4 i tworz�c w�asne makra oraz wiele innych cennych informacji.

CheckInstall

Jak ju� by�o wcze�niej wspomniane, sekwencja komend kt�re nale�y wykona� w celu zbudowania programu ze �r�de� w oparciu o GNU Autoconf jest nast�puj�ca:

./configure && make && make install

At this point it is time to use CheckInstall. This is replacing make install with its own command checkinstall. The two other instructions remain unaffected by this and are normally used as before. So the new command sequence with CheckInstall now is:

W tym momencie nadszed� czas na u�ycie "magi" CheckInstall. W miejsce make install wstawiamy komend� checkinstall, natomiast pozosta�e komendy pozostaj� i s� u�ywane tak jak dotychczas. Tak wi�c nowa sekwencja komend przy korzystaniu z CheckInstall wygl�da teraz nast�puj�co:

./configure && make && checkinstall

Jednak�e instrukcja checkinstall i tak domy�lnie wykonuje make install, monitoruj�c ca�y proces zapisu plik�w podczas procesu instalacji. W tym celu korzysta z programu Installwatch opracowanego pierwotnie przez Pancrazio de Mauro. Po pomy�lnym wykonaniu make install, CheckInstall generuje odpowiednie pakiety dla Slacka, Debiana lub RPMy (RedHat, Mandrake, itp.) i instaluje je u�ywaj�c w tym celu menad�era pakiet�w charakterystycznego dla danej dystrybucji. Po instalacji pozostawija on kopie pakietu w katalogu ze �r�d�ami lub specjalnie do tego celu przeznaczonego katalogu, kt�rego miejsce mo�na zmieni� poprzez edycje zmiennej PAK_DIR w pliku konfiguracyjnym. Tak stworzony pakiet mo�na nast�pnie , zachowuj�c odpowiednie zale�no�ci, zainstalowa� na innej maszynie , co z oczywistych wzgl�d�w nie wymaga ponownego kompilowania �r�de�.

CheckInstall nie musi tylko i wy��cznie opiera� sie na domy�lnej formule make install, ale potrafi przyjmowa� inne instrukcje instalacyjne. Przypu��my i� skryptem instalacyjnym dla przyk�adu jest setup.sh w�wczas proces budowy i instalacji pakiet�w mo�e wygl�da� tak:

./configure && make && checkinstall setup.sh

Ponadto istnieje mo�liwo�� uruchomienia CheckInstall z r�nymi parametrami. Poni�sza komenda drukuje kompletny przegl�d wszystkich dost�pnych opcji z podzia�em na poszczeg�lne sekcje. A s� to: Install options (opcje instalacji), Scripting options (opcje dotycz�ce skrypt�w), Info display options (opcje informacyjne), Package tuning options (opcje konfiguracyjne pakiet�w), Cleanup options (opcje czyszczenia) i About CheckInstall (informacje o CheckInstall):

# checkinstall -h

Je�eli CheckInstall zostanie uruchomione z kt�r�kolwiek z tych opcji, to w�wczas nadpisze jej warto�� znajduj�c� sie w pliku konfiguracyjnym checkinstallrc.

Jak ka�dy program CheckInstall r�wnie� posiada pewne ograniczenia. Nie radzi on sobie z programami linkowanymi statycznie (dotyczy bibliotek), poniewa� Installwatch - na kt�rego funkcjonalno�ci opiera si� CheckInstall - nie jest zdolny �ledzi� tych plik�w podczas procesu instalacji. Generalnie m�wi�c mamy dwa typy bibliotek: linkowanych statyczne i dynamicze. Statycznie zlinkowane programy posiadaj� ju� wszystkie funkcje w sobie i tym samym nie �aduj� odpowiednich bibliotek podczas swojego dzia�ania. Ponadto tak skompilowane programy s� niezale�ne od bibliotek zainstalowanych na docelowym systemie.

Instalacja

CheckInstall ju� od d�ugiego czasu wchodzi w sk�ad repozytori�w wielu dystrybucji i mo�na go zainstalowa� pos�uguj�c si� odpowiednim menad�erem pakiet�w. Je�eli jednak tak sie zdarzy, �e go nie znajdziesz, to mo�esz �ci�gna� odpowiedni pakiet �r�d�owy tar. lub gotowy pakiet dystrybucyjny ze strony domowej projektu [4].

Instalacja CheckInstall jest ca�kiem prosta i przebiega w kilku krokach - ale dla prawid�owego procesu instalacji paradoksalnie bedzisz potrzebowa� CheckInstall. Po obligatoryjnej formule make install wklepujesz checkinstall, tym samym tworz�c odpowiedni pakiet binarny. Teraz mo�esz ju� zainstalowa� ten pakiet za pomoc� mend�era pakiet�w i ca�kiem �atwo go usuwa�. Zanim jeszcze CheckInsall przyst�pi do budowy pakietu musisz odpowiedzie� na kilka pyta� dotycz�cych twojego menad�era pakiet�w i sprawdzi� poprawno�� informacji , kt�re znajd� sie p�niej w nag��wku opisuj�cym pakiet.

Procedura instalacji nowej wersji beta checkinstall-1.6.0beta4.tgz zosta�a zaprezentowana poni�ej. Proces ten obejmuje instalacj� CheckInstall, Installwatch i makepak - zmodyfikowan� wersje makepkg. Je�eli jeste� zainteresowany zmianami w nowej wersji to poczytaj Notk� do wydania [5] lub Dziennik zmian [6].

$ tar xzf checkinstall-1.6.0beta4.tgz
$ cd checkinstall-1.6.0beta4
checkinstall-1.6.0beta4 $ make
[...]
checkinstall-1.6.0beta4 $ su
Password:
checkinstall-1.6.0beta4 # make install
[...]
checkinstall-1.6.0beta4 # checkinstall

checkinstall 1.6.0beta4, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran
This software is released under the GNU GPL.

Please choose the packaging method you want to use.
Slackware [S], RPM [R] or Debian [D]? R

*************************************
*** RPM package creation selected ***
*************************************

This package will be built according to these values:

1 -  Summary:  [ CheckInstall installations tracker, version 1.6.0beta4 ]
2 -  Name:     [ checkinstall ]
3 -  Version:  [ 1.6.0beta4 ]
4 -  Release:  [ 1 ]
5 -  License:  [ GPL ]
6 -  Group:    [ Applications/System ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ checkinstall-1.6.0beta4 ]
9 -  Alternate source location: [  ]
10 - Provides: [ checkinstall ]
11 - Requires: [  ]

Enter a number to change any of them or press ENTER to continue:

Installing with make install...

========================= Installation results =========================
[...]



========================= Installation successful ======================

Copying documentation directory...
./
./NLS_SUPPORT
./README
./FAQ
./TODO
./CREDITS
./INSTALL
./Changelog
./BUGS
./installwatch-0.7.0beta4/
./installwatch-0.7.0beta4/README
./installwatch-0.7.0beta4/TODO
./installwatch-0.7.0beta4/VERSION
./installwatch-0.7.0beta4/INSTALL
./installwatch-0.7.0beta4/CHANGELOG
./installwatch-0.7.0beta4/BUGS
./installwatch-0.7.0beta4/COPYING
./RELNOTES
./COPYING

Copying files to the temporary directory...OK

Striping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK

Building RPM package...OK

NOTE: The package will not be installed

Erasing temporary files...OK

Writing backup package...OK

Deleting temp dir...OK

****************************************************************

Done. The new package has been saved to

/usr/src/redhat/RPMS/i386/checkinstall-1.6.0beta4-1.i386.rpm
You can install it in your system anytime using:

        rpm -i checkinstall-1.6.0beta4-1.i386.rpm

****************************************************************

checkinstall-1.6.0beta4 # cd /usr/src/redhat/RPMS/i386/
i386 # rpm -i checkinstall-1.6.0beta4-1.i386.rpm
i386 #

U�ytkownicy Debiana w tym przypadku instaluj� pakiet przy pomocy dpkg -i natomiast Slackware installpgk

U�ywaj�c opcji zapyta� menad�era pakiet�w , w tym przypadku RPM , mo�esz sprawdzi� czy pakiet prawid�owo zosta� dodany do bazy pakiet�w oraz przeczyta� dodatkowe informacje znajduj�ce sie w nag��wku pakietu.

$ rpm -qi checkinstall
Name        : checkinstall            Relocations: (not relocatable)
Version     : 1.6.0beta4              Vendor     : (none)
Release     : 1                       Build Date : Mo 06 Dez 2004 17:05:45 CET
Install Date: Di 07 Dez 2004 01:41:49 Build Host : deimos.neo5k.lan
Group       : Applications/System     Source RPM : checkinstall-1.6.0beta4-1.src.rpm
Size        : 264621                  License    : GPL
Signature   : (none)
Packager    : checkinstall-1.6.0beta4
Summary     : CheckInstall installations tracker, version 1.6.0beta4
Description :
CheckInstall installations tracker, version 1.6.0beta4

CheckInstall  keeps  track of all the files created  or
modified  by your installation  script  ("make install"
"make install_modules",  "setup",   etc),   builds    a
standard   binary   package and  installs  it  in  your
system giving you the ability to uninstall it with your
distribution's  standard package management  utilities.

Configuration

Modyfikuj�c - co by nie m�wi� - ca�kiem dobrze udokumentowany plik konfiguracyjny /usr/lib/local/checkinstall/checkinstallrc, zmienisz jego domy�lne zachowanie podczas budowania i instalowania pakiet�w.

Poniewa� CheckInstall bedzie Ci� pyta� za ka�dym razem kt�ry typ pakiet�w budowa�,a wi�c rozs�dnym posuni�ciem jest odpowiednie ustawienie INSTYPE. Dobrym ruchem jest tak�e zwr�ci� uwag� na zmienne INSTALL, PAK_DIR i RPM_FLAGS lub odpowiednio DPKG_FLAGS. Za pomoc� tych dw�ch ostatnich zmiennych definiujesz opcje instalacyjne pakiet�w , natomiast modyfikuj�c PAK_DIR ustawisz inny katalog w kt�rym znajd� si� kopie pakiet�w. INSTALL pozwoli Ci wybra� pomi�dzy sam� budow� pakietu z pomini�ciem instalacji, czy te� nie proces instalacji ma wej�� w mechanizm dzia�ania CheckInstall.

$ cat /usr/lib/local/checkinstall/checkinstallrc

####################################################################
                 #    CheckInstall configuration file   #
                 ########################################

###########################################################
#  Znajduj� sie tutaj domy�lne ustawienia CheckInstall.   #         
#  Mo�esz je modyfikowa� do w�asnych potrzeb ,pami�taj�c  #         
#  jednocze�nie, �e opcje podczas wywo�ywania checkinstall#         
#  nadpisuj� je.                                          #
###########################################################

# Poziom informacji debug:
#   0: Brak
#   1: Zachowaj wszystkie pliki tymczasowe wy��czaj�c pakiety
#   2: Zachowaj tak�e pliki z pakietami

DEBUG=0

# Miejsce docelowe dla "installwatch"
INSTALLWATCH_PREFIX="/usr/local"
INSTALLWATCH=${INSTALLWATCH_PREFIX}/bin/installwatch

# Miejsce docelowe dla "makepkg" lub "makepkg". Domy�lny jest "makepak" wchodz�cy w sk�ad checkinstall,
# je�eli jednak chcesz u�ywa� natywnego dla Slackware "makepkg" to ustaw t� zmienna na "makepkg"

MAKEPKG=/sbin/makepkg


# opcjonalne flagi dla "makepkg". Zaleca si� dla najnowszych wyda� Slacka

MAKEPKG_FLAGS="-l y -c n"

# Is MAKEPKG running interactively? If so, you might want
# to see what it's doing:

# Czy MAKEPKG ma uruchamia� sie w trybie interaktywnym. 

SHOW_MAKEPKG=0

# Katalog na tymczasowe pliki
BASE_TMP_DIR=/var/tmp   ##  Nie ustawiaj na /tmp lub / !!

# Katalog na dokumentacje
DOC_DIR=""

# Domy�lna architektura (zostaw puste dla automatycznego wykrycia)
ARCHITECTURE=""

# Domy�lny typ pakiet�w. Je�eli zostawisz puste w�wczas CheckInstall bedzie za ka�dym razem pyta� o typ
#   S : Slackware
#   R : RPM
#   D : Debian

INSTYPE="R"

# Miejsce umieszczenia nowych pakiet�w.
# Domy�lne miejsce zale�y od typu pakiet�w 
PAK_DIR=""

# Opcjonalne flagi dla RPM
RPM_FLAGS=" --force --nodeps --replacepkgs "

# Opcjonalne flagi dla dpkg
DPKG_FLAGS=""


## Zmienne poni�ej przyjmuj� warto�ci 1 lub 0
# Pokazuje rezultat dzia�ania komendy np: "make install"
# U�yteczne w przypadku interaktywnego sposobu dzia�ania CheckInstall
SHOW_INSTALL=1

# Pokazuje skrypt instalacyjny Slackware podczas dzia�ania,
# podobnie jak wy�ej u�yteczne podczas interaktywnego dzia�ania tego skryptu
SHOW_SLACK_INSTALL=0

# Automatycznie usuwa "doc-pak" przy zako�czeniu
DEL_DOCPAK=1

# Automatycznie usuwa plik specyfikacji "spec"
DEL_SPEC=1

# Automatycznie usuwa "description-pak"
DEL_DESC=1

# Automatycznie wykonuje strip na plikach binarnych ELF
STRIP_ELF=1

# Automatycznie wykonuje strip na bibliotekach dzielonych ELF
# Notka: to ustawienia automatycznie zostanie ustawione na "0" gdy STRIP_ELF=0
STRIP_SO_ELF=1

# Automatycznie poszuka miejsca umieszczenia bibliotek dzielonych (shared)
# a nast�pnie wprowadzi odpowienie wpisy do /etc/ld.so.conf.
# Ta opcja jest eksperymentalna, dlatego u�ywaj jej tylko w�wczas kiedy wiesz co robisz.
ADD_SO=0

# Automatycznie skompresuje strony podr�cznika man 
COMPRESS_MAN=1

# Ustawia umask 
CKUMASK=0022

# Tworzy kopie plik�w nadpisanych lub zmodifikowanych podczas procesu instalcji
BACKUP=1 

# Zapisuje plik doinst.sh (Slackware)
AUTODOINST=1

# Are we going to use filesystem translation?
# 
TRANSLATE=1            

# Ustawia grupe i w�a�ciciela pliku na root.root
RESET_UIDS=0

# U�ywa nowego formatu (8.1+) pliku opisu dla Slackware
NEW_SLACK=1

# Oddzielone przecinkami pliki lub katalogi kt�re nale�y ignorowa�
EXCLUDE=""

# Przyjmuje domy�lne warto�ci (dotyczy zadawanych pyta�)
ACCEPT_DEFAULT=0

# Wymusza u�ycie opcji "-U" przy instalacji pakiet�w rpm, zamiast opcji "i".
 
RPM_IU=U

# Sprawdza list� plik�w przed utworzeniem pakietu
CK_INSPECT=0
      
# Przegl�da plik .spec przed utworzeniem pakietu .rpm
REVIEW_SPEC=0

# Przegl�da plik control przed utworzeniem pakietu .deb
REVIEW_CONTROL=0
      
# Instalowa� pakiet czy poprostu go tylko utworzy�?
INSTALL=0

Wnioski

CheckInstall jest doskona�ym narz�dziem, kt�re mo�e uczyni� administracj� Linuksa znacznie �atwiejsz�. Szczeg�lnie wtedy, gdy programy musz� by� cz�sto kompilowane ze �r�de�. CheckInstall daje Ci mo�liwo�� bezpiecznego usuwania program�w bez ryzyka naruszenia integralno�ci systemu. Ma�o tego, dzi�ki CheckInstall mo�esz instalowa� pakiety r�wnie� na innych maszynach bez konieczno�ci ponownej ich kompilacji ze �r�de� - oczywi�cie zachowuj�c rygor spe�nienia zale�no�ci, co w przypadku indentycznych system�w nie stanowi wielkiego problemu.

Linkownia

[1] http://asic-linux.com.mx/~izto/checkinstall/ [Strona domowa CheckInstall]
[2] http://www.gnu.org/software/autoconf/manual/autoconf-2.57/autoconf.html [GNU Autoconf dokumentacja online]
[3] http://asic-linux.com.mx/~izto/checkinstall/installwatch.html [Installwatch]
[4] http://asic-linux.com.mx/~izto/checkinstall/download.php [Tu �ci�gniesz CheckInstall]
[5] http://asic-linux.com.mx/~izto/checkinstall/docs/RELNOTES [Notka do wydania]
[6] http://asic-linux.com.mx/~izto/checkinstall/docs/Changelog [Dziennik zmian]