Neler yeni
MEGAForum - Teknoloji Forumu

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı yada giriş yapmalısınız. Forum üye olmak tamamen ücretsizdir.

Pratik Araç ; CheckInstall (Çeviri Yazısı) [Kaynak Koddan Program Kurma]

TRWE_2012

لِيَغْفِرَ لَكَ اللّٰهُ مَا تَقَدَّمَ مِنْ ذَنْبِك
Moderatör
Konum
BERTUNA
  • Üyelik Tarihi
    2 Haz 2020
  • Mesajlar
    5,275
  • MFC Puanı
    15,970
CheckInstall

Özet:


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.

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 yolundadır. 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 oluşturulmuş yada değiştirilmiş tüm dosyaları kağıda dökmek olasılığı da vardır(log dosyası-tmp dizini). Eğer programlar sıklıkla kaynaklardan derleniyorsa, bu zahmetli ve uzun bir süreçtir. CheckInstall aracı ( 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.

Kod:
./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 oluşturmak için kullanır. Bunun dışında configure betiği ilave dosyalar üretir. Özet olarak bunlar:

one or more Makefile(s) in every directory/subdirectory (tr : her dizinde / alt dizinde bir veya daha fazla Makefile (s))
a shell script called config.status (tr : config.status adlı bir kabuk betiği)
a text file config.log (tr : bir metin dosyası config.log)
another shell script normally called config.cache (optional) (tr : normalde config.cache olarak adlandırılan başka bir kabuk betiği (isteğe bağlı) )
various C header files (*.h) with system-specific definitions (optional) (tr : sisteme özgü tanımlarla (isteğe bağlı) çeşitli C başlık dosyaları (* .h))

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; çünkü 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 gerekecektir. (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. Temel başlangıç bilgilerinin yanısıra, kendi configure betiklerini yapma ve kendi makrolarınızı oluşturma 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:

Kod:
./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ı şöyledir:

Kod:
./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 programını kullanır. make install başarıyla tamamlandıktan sonra, CheckInstall bir Slackware-, Debian- yada RPM-Paketi oluşturur 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:

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

Kod:
# 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. Çünkü 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.

CheckInstall 'un kurulumu oldukça basit ve birkaç adımda oluşur. 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 oluşturur. Ş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 oluşturmadan önce, kullandığınız paket yöneticisiyle ilgili bir soruya cevap vermelisiniz ve bilgi alanlarının doğruluğunu kontrol etmelisiniz.

ÖRNEK BİR KAYNAK KODDAN KURULUM

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) kuracaktır. Eğer yeni sürümdeki değişiklikleri merak ediyorsanız, Release Notes 'a (sürüm notları) yada Changelog 'a bir göz atın.

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

Kod:
$ 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 fikirdir. 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 oluşturma ve/veya paketi kurma arasında karar verme imkanı sunar.

Kod:
$ 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 yönetmemizi sağlayan mükemmel bir araçtır.. Ö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.

KAYNAKLAR :

Kod:
[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]
 
Üst Alt