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 tr ONUR YILMAZ

AboutTheAuthor:[A small biography about the author]

Mario Linux, network ve g�venlikle ilgili konularla �al��may� sever.

Abstract:[Here you write a little summary]

Checkinstall tar.gz kaynak sayfalar�ndan otomatik olarak RPM/Debian yada Slackware paketleri olu�turan bir yaz�l�md�r. Bu, neredeyse herhangi bir kaynak kodu tar.gz paketinin, "temiz" kurulumunu ve kald�r�lmas�n� sa�lar.

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

[CheckInstall Title]

ArticleBody:[The main part of the article]

Giri�

Test etmek istedi�imiz bir program sadece tar.gz kaynak kodu olarak mevcuttur (rpm yada Debian paketi olarak de�il) ve bu s�k kar��la��lan bir durumdur. Bu gibi bir durumda, kaynak paketini indirirsiniz, onu a�ars�n�z ve elle derlersiniz. Buraya kadar her �ey yolunda. Fakat program� silmek isterseniz ne olur?

Program� kald�rmak i�in Makefile sadece birka� durumda uygun yordam(routine) i�erir. Tabii program� ge�ici bir dizine kurmak ve sonraki bir kald�rma i�in kurulum taraf�ndan yarat�lm�� yada de�i�tirilmi� t�m dosyalar� ka��da d�kmek olas�l��� da vard�r. E�er programlar s�kl�kla kaynaklardan derleniyorsa, bu ac� verici ve uzun bir s�re�tir. CheckInstall arac� ( [1] Felipe Eduardo Sánchez Díaz Durán taraf�ndan yaz�lan) bu problemi ��zer.

Kural olarak GNU Autoconf uyumlu program�, yayg�n olarak bilinen bir komut s�ras� alt�nda derler ve kurars�n�z.
./configure && make && make install.
configure kabuk beti�i �e�itli sistem-ba��ml� de�i�kenler i�in do�ru de�erleri tahmin etmeye �al���r. Bu de�erler daha sonra derleme s�ras�nda kullan�l�r. configure derleme i�in gerekenlerin tamamlan�p tamalanmad���n� kontrol eder ve tahmin etti�i de�erleri paketin her dizininde Makefile yaratmak i�in kullan�r. Bunun d���nda configure beti�i ilave dosyalar �retir. �zet olarak bunlar:

configure beti�i tamamland�ktan sonra, paketi derlemek i�in make yazars�n�z. Bu �al��t�r�labilir binary(ikilik d�zende) dosyalar� �retir. make'in hemen ard�ndan make check ile kendi testlerini(kontrollerini) �al��t�rma olas�l��� da vard�r. Fakat bu iste�e ba�l� bir ad�md�r; ��nki paket bu i�lemi desteklemelidir. E�er make i�ini ger�ekle�tirirse, make install komutuyla derlenmi� olan program�n�z� kurabilirsiniz. -bu ad�m i�in imtiyazl� kullan�c� haklar�na sahip olman�z gerekecek. (root olmal�s�n�z) Program ba�ar�l� bir �ekilde kurulduktan sonra, program�n binary ve nesne dosyalar�n� kaynak kodu dizininden make clean yazarak silebilirsiniz. E�er configure taraf�ndan yarat�lm�� dosyalar� da silmek isterseniz, make distclean yaz�n. Fakat son anlatt���m iki ad�m make check gibi se�meli ve normalde geli�tirme ve test s�ras�nda geli�tirici taraf�ndan kullan�l�yor. Ayn� zamanda hard disk kapasitesini tasarruflu kullanmak isteyen yada dizin yap�s�n� temiz tutmak isteyen kullan�c� taraf�ndan da kullan�labilir. Bunun d���nda make distclean, paketi bir ba�ka bilgisayar i�in derlemeyi, m�mk�n hale getirir.

GNU Autoconf hakk�nda detayl� bilgi Online-Manual(elkitab�)'da bulunabilir. [2]. Temel ba�lang�� bilgilerinin yan�s�ra, kendi configure betiklerini yapma, M4 'te programlama ve kendi makrolar�n�z� yaratma konular�yla GNU Build System (GNU Sistem Yap�s�) hakk�nda daha fazlas�n� ��renebilirsiniz.

CheckInstall

Daha �nce de belirtti�im gibi, kaynak kodundan GNU Autoconf uyumlu program kurmak i�in komut s�ras� �uydu:

./configure && make && make install

Bu noktada CheckInstall kullanman�n zaman�d�r. Bu make install 'u kendi komutu checkinstall ile de�i�tirmek anlam�na gelir. Di�er iki komut bundan etkilenmiyor ve normal olarak eskisi gibi kullan�l�yor. Bu y�zden CheckInstall ile yeni komut s�ras� ��yle:

./configure && make && checkinstall

Fakat checkinstall komutu yinede make install 'u �ntan�ml� olarak ba�lat�r ve kurulum taraf�ndan yap�lan t�m yazma olaylar�n� izler. CheckInstall bunun i�in, ilk olarak Pancrazio de Mauro taraf�ndan yaz�lm�� olan, Installwatch [3] program�n� kullan�r. make install ba�ar�yla tamamland�ktan sonra, CheckInstall bir Slackware-, Debian- yada RPM-Paketi yarat�r ve bu paketi �ntan�ml� paket y�neticisiyle kurar. Paketin bir kopyas�n� o anki kaynak dizininde yada standart depolama dizininde b�rak�r. �stelik yap�land�rma(konfig�rasyon) dosyas�ndaki PAK_DIR de�i�kenini de�i�tirerek �ntan�ml� depolama dizini de�i�tirmek de m�mk�nd�r. Bu paket, olas� paket ba��ml�l�klar� d���n�lerek, a� i�indeki di�er makinelere de kurulabilir. B�ylece kaynak paketinden her seferinde tekrar tekrar derlememi� oluruz.

CheckInstall sadece make install 'dan yararlanmaz. Di�er kurulum komutlar�yla da �al���r. �rne�in; kurulum beti�i setup.sh ise, komut tak�m� ��yle olur:

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

CheckInstall 'u �e�itli se�eneklerle ba�latma imkan� vard�r. S�radaki komut var olan t�m se�enekleri �e�itli alt b�l�mlere ( Install options, Scripting options, Info display options, Package tuning options, Cleanup options ve About CheckInstall ) ayr�lm�� olarak g�sterir:

# checkinstall -h

E�er CheckInstall bu se�eneklerden biriyle ba�larsa, yap�land�rma dosyas�ndaki (checkinstallrc) de�erleri ge�ersiz k�lacakt�r.

Fakat CheckInstall 'unda limitleri var. Statik olarak ba�lanm�� programlar� i�leyemez; ��nki Installwatch kurulum s�reci boyunca de�i�en olaylar� izleyemez. Genel olarak iki tip program k�t�phanesi vard�r: statik yada dinamik ba�l� k�t�phaneler. Bunlar include-talimat�yla programa t�mle�tirilir. Statik olarak ba�l� programlar t�m gerekli k�t�phane fonksiyonlar�na sahiptirler ve �al��t�rma esnas�nda bunlar� RAM'e y�klememelidirler. Ayr�ca hedef sisteme ger�ekten kurulan k�t�phanelerden ba��ms�zd�rlar. ��nki derleme esnas�nda bir s�zde Linker(ba�lay�c�) k�t�phaneleri �al��t�r�labilir programa g�mm��t�r.

Kurulum

CheckInstall zaten uzun bir s�re i�in b�y�k da��t�mlar�n yaz�l�m havuzlar�n�n bir par�as�d�r ve kendi paket y�netim sistemiyle kurulabilir. Bunun d���nda uygun tar paketlerini yada �e�itli da��t�mlar i�in �nceden in�a edilmi� paketleri proje websitesinden indirebilirsiniz.[4]

CheckInstall 'un kurulumu olduk�a basit ve birka� ad�mda �al���yor. -fakat ba�ar�l� bir CheckInstall kurulumu i�in paradoksal olarak CheckInstall 'a ihtiyac�n�z olacak. Zorunlu komut make install 'dan sonra checkinstall yazabilirsiniz. Bu derlenmi� programdan uygun �al��t�r�labilir paketi yarat�r. �imdi bu paketi paket y�neticinizle kurabilirsiniz ve tabii ki program� temiz bir �ekilde kald�rmak da m�mk�n hale gelir. Fakat CheckInstall paketi yaratmadan �nce, kulland���n�z paket y�neticisiyle ilgili bir soruya cevap vermelisiniz ve bilgi alanlar�n�n do�rulu�unu kontrol etmelisiniz. Onlar daha sonra paket ba�l���nda g�r�n�yor.

Yeni beta s�r�m�n�( checkinstall-1.6.0beta4.tgz ) kurma y�ntemi s�radaki kod kutusunda g�steriliyor. Bu CheckInstall, Installwatch ve makepak 'i (makepkg 'nin de�i�tirilmi� versiyonu) kuracak. E�er yeni s�r�mdeki de�i�iklikleri merak ediyorsan�z, Release Notes 'a [5] (s�r�m notlar�) yada Changelog 'a [6] bir g�z at�n.

$ 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 #

Debian tabanl� da��t�m kullan�c�lar�, paketi dpkg -i ile kurabilir. Slackware kullan�c�lar� bunun i�in installpkg 'yi kullanabilir.

Paket y�neticinizin sorgulama fonksiyonunu kullanarak, bu durumda RPM, paketin veritaban�na do�ru bir �ekilde t�mle�ip t�mle�medi�ini ��renebilir ve paket ba�l���n�n ek bilgi sahas�n� g�r�nt�leyebilirsiniz.

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

Yap�land�rma

�yi a��klamal� metin dosyas�n� ( /usr/lib/local/checkinstall/checkinstallrc ) CheckInstall 'un �ntan�ml� davran���n� de�i�tirmek i�in oynayabilirsiniz.

CheckInstall her ba�lat�l��ta hangi paket tipini �retece�ini sordu�undan, bu de�eri INSTYPE '� ayarlayarak kal�c� olarak eklemek ak�ll�ca olacakt�r. Ayr�ca INSTALL, PAK_DIR ve RPM_FLAGS ( alternatif olarak DPKG_FLAGS ) de�i�kenlerine bakmak iyi bir fikir. Son iki de�i�kenle se�imlik kurulum noktalar� belirleyebilirsiniz ve PAK_DIR '� de�i�tirerek paket kopyas� i�in ba�ka bir dizin belirtebilirsiniz. INSTALL size paketi yaratma ve/veya paketi kurma aras�nda karar verme imkan� sunar.

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

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

####################################################################
# These are default settings for CheckInstall, modify them as you  #
# need. Remember that command line switches will override them.    #
####################################################################

# Debug level
#   0: No debug
#   1: Keep all temp files except the package's files
#   2: Keep the package's files too

DEBUG=0

# Location of the "installwatch" program
INSTALLWATCH_PREFIX="/usr/local"
INSTALLWATCH=${INSTALLWATCH_PREFIX}/bin/installwatch

# Location of the makepkg program. "makepak" is the default, and is
# included with checkinstall. If you want to use Slackware's native "makepkg"
# then set this to "makepkg"

MAKEPKG=/sbin/makepkg

# makepkg optional flags. These are recommended if running a newer Slackware
# version: "-l y -c n"

MAKEPKG_FLAGS="-l y -c n"

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

SHOW_MAKEPKG=0

# Where will we keep our temp files?
BASE_TMP_DIR=/var/tmp   ##  Don't set this to /tmp or / !!

# Where to place the installed document files
DOC_DIR=""

# Default architecture type (Leave it empty to allow auto-guessing)
ARCHITECTURE=""

# Default package type. Leave it empty to enable asking everytime
#   S : Slackware
#   R : RPM
#   D : Debian

INSTYPE="R"

# Storage directory for newly created packages
# By default they will be stored at the default
# location defined for the package type

PAK_DIR=""

# RPM optional flags
RPM_FLAGS=" --force --nodeps --replacepkgs "

# dpkg optional flags
DPKG_FLAGS=""


## These are boolean. Set them to 1 or 0

# Interactively show the results of the install command (i.e. "make install")?
# This is useful for interactive installation commands
SHOW_INSTALL=1

# Show Slackware package installation script while it runs? Again, useful if
# it's an interactive script
SHOW_SLACK_INSTALL=0

# Automatic deletion of "doc-pak" upon termination?
DEL_DOCPAK=1

# Automatic deletion of the spec file?
DEL_SPEC=1

# Automatic deletion of "description-pak"?
DEL_DESC=1

# Automatically strip all ELF binaries?
STRIP_ELF=1

# Automatically strip all ELF shared libraries?
# Note: this setting will automatically be set to "0" if STRIP_ELF=0
STRIP_SO_ELF=1

# Automatically search for shared libraries and add them to /etc/ld.so.conf?
# This is experimental and could mess up your dynamic loader configuration.
# Use it only if you know what you are doing.
ADD_SO=0

# Automatically compress all man pages?
COMPRESS_MAN=1

# Set the umask to this value
CKUMASK=0022

# Backup files overwritten or modified by your install command?
BACKUP=1 

# Write a doinst.sh file that installs your description (Slackware)?
AUTODOINST=1

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

# Reset the owner/group of all files to root.root?
RESET_UIDS=0

# Use the new (8.1+) Slackware description file format?
NEW_SLACK=1

# Comma delimited list of files/directories to be ignored
EXCLUDE=""

# Accept default values for all questions?
ACCEPT_DEFAULT=0

# Use "-U" flag in rpm by default when installing a rpm package
# This tells rpm to (U)pdate the package instead of (i)nstalling it.
RPM_IU=U

# Inspect the file list before creating the package
CK_INSPECT=0
      
# Review the .spec file before creating a .rpm
REVIEW_SPEC=0

# Review the control file before creating a .deb
REVIEW_CONTROL=0
      
# Install the package or just create it?
INSTALL=0

Sonu�

CheckInstall Linux y�netimini daha kolay yapmam�z� sa�layan m�kemmel bir ara�. �zellikle programlar s�k s�k kaynaklar�ndan derlenmeliyse CheckInstall size, sisteminizin kararl�l���n� bozmadan, programlar�n�z� temiz bir �ekilde kald�rma imkan� verir. Bunun d���nda olu�turulan bu paketleri ba�ka makinalarada da tekrar tekrar derlemeye gerek kalmaks�z�n kurabilirsiniz. - tabii ki olas� paket ba��ml�l�klar�n� d���nmek zorundas�n�z. Fakat bu genellikle �zde� makinalar i�in �ok b�y�k problem de�ildir.

Links

[1] http://asic-linux.com.mx/~izto/checkinstall/ [Home of CheckInstall]
[2] http://www.gnu.org/software/autoconf/manual/autoconf-2.57/autoconf.html [GNU Autoconf Online Manual]
[3] http://asic-linux.com.mx/~izto/checkinstall/installwatch.html [Installwatch]
[4] http://asic-linux.com.mx/~izto/checkinstall/download.php [CheckInstall Downloads]
[5] http://asic-linux.com.mx/~izto/checkinstall/docs/RELNOTES [Release Notes]
[6] http://asic-linux.com.mx/~izto/checkinstall/docs/Changelog [Changelog]