මෘදුකාංග ස්ථාපනය(මූල කේත ආකාරයෙන් බෙදා හ&#
මේ ලියමන ටිකක් අමාරුකාර ලියවිල්ලක්. මේ කාරණාව මේ විධියට තනි ලියමනකින් පැහැදිලි කරන්න අමාරුයි. අනෙක එක එක උදාහරණයෙන් උදාහරණයට පිළිවෙලේ වෙනස්කම් තියෙනවා. මම කියන්නේ මම සාමාන්යයෙන් වැඩ කරන පිළිවෙල ගැන.
පරිගණක මෘදුකාංගයක් කියන්නේ පරිගණකයට ලබා දිය යුතු උපදෙස්, විධානවල එකතුවෙන් සකස් කළ විධිමත් අනුපිළිවෙලවලක් කියලා සරලව හදුන්වන්න පුළුවනි (මම වැරදි නම් කරුණාකර මාව නිවැරදි කරන්න
). මේ මෘදුකාංගය ක්රමලේඛණ භාෂාවක් (Java, C++, Python, etc...) මගින් කේතනය කරලා පසුව පරිගණකයට තේරුම් ගත හැකි ආකාරයට -- ඒ කියන්නේ යන්ත්ර භාෂාවට පෙරළා සකස් කළ පරිගණක ගොනුවක් හෝ ගොනු කීපයක එකතුවක් ලෙස පසුව සකස් කළාම තමයි ඒක භාවිතයට ගන්න පුළුවන් වෙන්නෙ. මේ ආකාරයට යන්ත්ර භාෂාවට පෙරළිම තාක්ෂණිකව හඳුන්වන්නේ compile කිරීම (අපි මෙයට සම්පාදනය යයි කියමු) ලෙස. සම්පාදනය කළ මෘදුකාංගයක් නැවත මූල කේතය බවට පෙරලන්න හැකියාවක් නැහැ. හැකියාවක් තිබුණත් එය පහසු වැඩක් නෙවෙයි.
ඉතින් මෘදුකාංග නිර්මාණය කරන අය කරන්නේ තමන් දන්න ක්රමලේඛණ භාෂාවක් මගින් කේතනය කරලා පසුව එය සම්පාදනය කරලා සම්පාදිත ගොනු (binaries) මෘදුකාංගය ලෙස බෙදා හැරීම. මෘදුකාංග දෙවර්ගයක් තියෙනවා... සවෘත මෘදුකාංග (closed source) සහ විවෘත මෘදුකාංග (open source) කියලා. සංවෘත මෘදුකාංග වල මූල කේතය පරිශීලකයාට ලබා දෙන්නෙ නෑ. ඒක ඒ මෘදුකාංගය පිළිබඳ හිමිකම් තියෙන සමාගමේ/ ආයතනයේ ව්යාපාරික රහසක් වශයෙන් තබා ගැනෙනවා. මීට සුප්රසිද්ධ උදාහරණයක් ලෙස Microsoft Windows හඳුන්වන්න පුළුවන්. නමුත් විවෘත මෘදුකාංග වල මූල කේතය පරිශීලකට ලබා දෙනවා. උදාහරණය ලිනක්ස්. මේ දෙවර්ගයටම උදාහරණ තව ඕනේ තරම් දෙන්න පුළුවන්. ඒ වගේම මේ දෙවර්ගයෙම වාසි/ අවාසිත් තියෙනවා. නමුත් ඒ ගැන නෙමෙයි මම අද කතා කරන්නෙ.
ඒත් සමහර විවෘත මෘදුකාංග බෙදාහරින්නේ මූල කේත ආකාරයෙන්ම පමණයි. සම්පාදනය කළ ගොනු හෝ ස්වයං ස්ථාපන ගොනු ආකාරයට ඒවායේ බෙදාහැරීමක් සිද්ධ වෙන්නෙ නැහැ. මේ සඳහා මම දැක්ක හොඳම සහ නරකම උදාහරණය තමයි Gentoo Linux. හොඳයි කිව්වේ මම දැනට ලිනක්ස් ගැන, කර්නල් එක ගැන දැනට ලබපු හොඳම අත්දැකීම් ටික ගත්තේ Gentoo වලින් නිසා.
නරකයි කිව්වේ ඒක ස්ථාපනය කරගන්න දවසක්ම කට්ට කන්න වුණු නිසා. 
මම Gentoo ගැන කිව්වම බය වෙන්න එපා... මේ කියන්නෙ මෙහෙයුම් පද්ධතියක් ස්ථාපනය වගේ පතරංග වැඩක් ගැන නෙමෙයි. C/ C++ මූල කේත ලෙස බෙදා හරින, එදිනෙදා පාවිච්චි වෙන භාවිත යෙදුමක් (application software package) ස්ථාපනය කරගන්න ක්රමය ගැන.
වැඩේට කලින් පරිගණකයෙ තිබිය යුතු අත්යාවශ්ය මූලික මෘදුකාංග කීපයක්ම තියෙනවා. සාමාන්යයෙන් මෙහෙයුම් පද්ධතිය අඩංගු සංයුක්ත තැටියේ මේ මෘදුකාංග අඩංගුයි. මේ ඒවායින් ප්රමුඛම මෘදුකාංග දෙක.
1. GNU C Compiler (gcc)
2. GNU Make (make)
මේවා දැනට ස්ථාපනය කර නැත්නම් ස්ථාපනයට,
# apt-get install gcc make (Debian/ Ubuntu මත)
# yum install gcc make (Fedora/ CentOS/ RedHat මත)
සාමාන්යයෙන් මේ මූල කේත බෙදාහරින්නේ .tar/ .tar.gz හෝ .tar.bz2 ආකාරයෙ හැකිළවූ (archive) ගොනු ලෙස. මුලින්ම ඒ ගොනුව භාගත කරගෙන අන්තර්ගත ගොනු ටික unpack කර ගන්න ඕනේ.
ඒ ගොනුව .tar වර්ගයෙ එකක් නම්,
$ tar xvf filename.tar
.tar.gz එකක් නම්,
$ tar xvfz filename.tar
.tar.bz2 එකක් නම්,
$ tar xvfj filename.tar.bz2
... යනාදී වශයෙන් අදාළ විධාන ටර්මිනල් එකේදි පාවිච්චි කරලා unpack කරගන්න පුළුවන්.
උදාහරණයක් ලෙස අපි ලිනක්ස් සඳහා NMAP ස්ථාපනය ගනිමු. NAMP කියන්නේ පරිගණක ජාල වල ආරක්ෂාව පිළිබඳ විගණන කටයුතු (security auditing) වලට යොදා ගන්න මෘදුකාංගයක්. මුලින්ම මේ වෙබ් පිටුවට ගිහින් අදාළ ගොනුව (nmap-5.00.tar.bz2) බාගන්න.
දැන්,
$ tar xvfj nmap-5.00.tar.bz2
දැන් nmap-5.00 නමින් ඩිරෙක්ටරියක් නිර්මාණය වෙලා ඇති. ඒක ඇතුළට යන්න.
$ cd nmap-5.00
$ ls
ls විධානය දුන්නාම ඒකෙ ඇතුළෙ තියෙන අන්තර්ගතය පෙන්වනවා. මෙහෙම ලොකු ලැයිස්තුවක් ආවට බය වෙන්න එපා, ලැයිස්තුවෙන්ම ගොනු දෙකයි තුනයි අපට වැදගත්
shaakunthala@shaakunthala-laptop:~/Desktop/nmap-5.00$ ls -a
. nmap_config.h.in nse_pcrelib.h
.. nmap_dns.cc nsock
acinclude.m4 nmap_dns.h osscan2.cc
aclocal.m4 nmap_error.cc osscan2.h
CHANGELOG nmap_error.h osscan.cc
charpool.cc nmap.h osscan.h
charpool.h nmap-mac-prefixes output.cc
config.guess NmapOps.cc output.h
config.sub NmapOps.h portlist.cc
configure nmap-os-db portlist.h
configure.ac NmapOutputTable.cc portreasons.cc
COPYING NmapOutputTable.h portreasons.h
COPYING.OpenSSL nmap-protocols protocols.cc
depcomp nmap-rpc protocols.h
docs nmap_rpc.cc README-WIN32
FingerPrintResults.cc nmap_rpc.h scan_engine.cc
FingerPrintResults.h nmap-service-probes scan_engine.h
global_structures.h nmap-services scripts
HACKING nmap_tty.cc service_scan.cc
idle_scan.cc nmap_tty.h service_scan.h
idle_scan.h nmap_winconfig.h services.cc
INSTALL nse_binlib.cc services.h
libdnet-stripped nse_binlib.h shtool
liblua nse_bit.cc Target.cc
libpcap nse_bit.h TargetGroup.cc
libpcre nse_debug.cc TargetGroup.h
ltmain.sh nse_debug.h Target.h
MACLookup.cc nse_fs.cc targets.cc
MACLookup.h nse_fs.h targets.h
macosx nselib tcpip.cc
main.cc nse_main.cc tcpip.h
Makefile.in nse_main.h timing.cc
missing nse_main.lua timing.h
mswin32 nse_nmaplib.cc traceroute.cc
nbase nse_nmaplib.h traceroute.h
ncat nse_nsock.cc utils.cc
ndiff nse_nsock.h utils.h
nmap-5.00-1.spec nse_openssl.cc zenmap
nmap_amigaos.h nse_openssl.h zenmap-5.00-1.spec
nmap.cc nse_pcrelib.cc
shaakunthala@shaakunthala-laptop:~/Desktop/nmap-5.00$
මේ ලියමන ටිකක් අමාරුකාර ලියවිල්ලක්. මේ කාරණාව මේ විධියට තනි ලියමනකින් පැහැදිලි කරන්න අමාරුයි. අනෙක එක එක උදාහරණයෙන් උදාහරණයට පිළිවෙලේ වෙනස්කම් තියෙනවා. මම කියන්නේ මම සාමාන්යයෙන් වැඩ කරන පිළිවෙල ගැන.

පරිගණක මෘදුකාංගයක් කියන්නේ පරිගණකයට ලබා දිය යුතු උපදෙස්, විධානවල එකතුවෙන් සකස් කළ විධිමත් අනුපිළිවෙලවලක් කියලා සරලව හදුන්වන්න පුළුවනි (මම වැරදි නම් කරුණාකර මාව නිවැරදි කරන්න
). මේ මෘදුකාංගය ක්රමලේඛණ භාෂාවක් (Java, C++, Python, etc...) මගින් කේතනය කරලා පසුව පරිගණකයට තේරුම් ගත හැකි ආකාරයට -- ඒ කියන්නේ යන්ත්ර භාෂාවට පෙරළා සකස් කළ පරිගණක ගොනුවක් හෝ ගොනු කීපයක එකතුවක් ලෙස පසුව සකස් කළාම තමයි ඒක භාවිතයට ගන්න පුළුවන් වෙන්නෙ. මේ ආකාරයට යන්ත්ර භාෂාවට පෙරළිම තාක්ෂණිකව හඳුන්වන්නේ compile කිරීම (අපි මෙයට සම්පාදනය යයි කියමු) ලෙස. සම්පාදනය කළ මෘදුකාංගයක් නැවත මූල කේතය බවට පෙරලන්න හැකියාවක් නැහැ. හැකියාවක් තිබුණත් එය පහසු වැඩක් නෙවෙයි.ඉතින් මෘදුකාංග නිර්මාණය කරන අය කරන්නේ තමන් දන්න ක්රමලේඛණ භාෂාවක් මගින් කේතනය කරලා පසුව එය සම්පාදනය කරලා සම්පාදිත ගොනු (binaries) මෘදුකාංගය ලෙස බෙදා හැරීම. මෘදුකාංග දෙවර්ගයක් තියෙනවා... සවෘත මෘදුකාංග (closed source) සහ විවෘත මෘදුකාංග (open source) කියලා. සංවෘත මෘදුකාංග වල මූල කේතය පරිශීලකයාට ලබා දෙන්නෙ නෑ. ඒක ඒ මෘදුකාංගය පිළිබඳ හිමිකම් තියෙන සමාගමේ/ ආයතනයේ ව්යාපාරික රහසක් වශයෙන් තබා ගැනෙනවා. මීට සුප්රසිද්ධ උදාහරණයක් ලෙස Microsoft Windows හඳුන්වන්න පුළුවන්. නමුත් විවෘත මෘදුකාංග වල මූල කේතය පරිශීලකට ලබා දෙනවා. උදාහරණය ලිනක්ස්. මේ දෙවර්ගයටම උදාහරණ තව ඕනේ තරම් දෙන්න පුළුවන්. ඒ වගේම මේ දෙවර්ගයෙම වාසි/ අවාසිත් තියෙනවා. නමුත් ඒ ගැන නෙමෙයි මම අද කතා කරන්නෙ.
ඒත් සමහර විවෘත මෘදුකාංග බෙදාහරින්නේ මූල කේත ආකාරයෙන්ම පමණයි. සම්පාදනය කළ ගොනු හෝ ස්වයං ස්ථාපන ගොනු ආකාරයට ඒවායේ බෙදාහැරීමක් සිද්ධ වෙන්නෙ නැහැ. මේ සඳහා මම දැක්ක හොඳම සහ නරකම උදාහරණය තමයි Gentoo Linux. හොඳයි කිව්වේ මම දැනට ලිනක්ස් ගැන, කර්නල් එක ගැන දැනට ලබපු හොඳම අත්දැකීම් ටික ගත්තේ Gentoo වලින් නිසා.
නරකයි කිව්වේ ඒක ස්ථාපනය කරගන්න දවසක්ම කට්ට කන්න වුණු නිසා. 
මම Gentoo ගැන කිව්වම බය වෙන්න එපා... මේ කියන්නෙ මෙහෙයුම් පද්ධතියක් ස්ථාපනය වගේ පතරංග වැඩක් ගැන නෙමෙයි. C/ C++ මූල කේත ලෙස බෙදා හරින, එදිනෙදා පාවිච්චි වෙන භාවිත යෙදුමක් (application software package) ස්ථාපනය කරගන්න ක්රමය ගැන.
වැඩේට කලින් පරිගණකයෙ තිබිය යුතු අත්යාවශ්ය මූලික මෘදුකාංග කීපයක්ම තියෙනවා. සාමාන්යයෙන් මෙහෙයුම් පද්ධතිය අඩංගු සංයුක්ත තැටියේ මේ මෘදුකාංග අඩංගුයි. මේ ඒවායින් ප්රමුඛම මෘදුකාංග දෙක.
1. GNU C Compiler (gcc)
2. GNU Make (make)
මේවා දැනට ස්ථාපනය කර නැත්නම් ස්ථාපනයට,
# apt-get install gcc make (Debian/ Ubuntu මත)
# yum install gcc make (Fedora/ CentOS/ RedHat මත)
සාමාන්යයෙන් මේ මූල කේත බෙදාහරින්නේ .tar/ .tar.gz හෝ .tar.bz2 ආකාරයෙ හැකිළවූ (archive) ගොනු ලෙස. මුලින්ම ඒ ගොනුව භාගත කරගෙන අන්තර්ගත ගොනු ටික unpack කර ගන්න ඕනේ.
ඒ ගොනුව .tar වර්ගයෙ එකක් නම්,
$ tar xvf filename.tar
.tar.gz එකක් නම්,
$ tar xvfz filename.tar
.tar.bz2 එකක් නම්,
$ tar xvfj filename.tar.bz2
... යනාදී වශයෙන් අදාළ විධාන ටර්මිනල් එකේදි පාවිච්චි කරලා unpack කරගන්න පුළුවන්.
උදාහරණයක් ලෙස අපි ලිනක්ස් සඳහා NMAP ස්ථාපනය ගනිමු. NAMP කියන්නේ පරිගණක ජාල වල ආරක්ෂාව පිළිබඳ විගණන කටයුතු (security auditing) වලට යොදා ගන්න මෘදුකාංගයක්. මුලින්ම මේ වෙබ් පිටුවට ගිහින් අදාළ ගොනුව (nmap-5.00.tar.bz2) බාගන්න.
දැන්,
$ tar xvfj nmap-5.00.tar.bz2
දැන් nmap-5.00 නමින් ඩිරෙක්ටරියක් නිර්මාණය වෙලා ඇති. ඒක ඇතුළට යන්න.
$ cd nmap-5.00
$ ls
ls විධානය දුන්නාම ඒකෙ ඇතුළෙ තියෙන අන්තර්ගතය පෙන්වනවා. මෙහෙම ලොකු ලැයිස්තුවක් ආවට බය වෙන්න එපා, ලැයිස්තුවෙන්ම ගොනු දෙකයි තුනයි අපට වැදගත්
shaakunthala@shaakunthala-laptop:~/Desktop/nmap-5.00$ ls -a
. nmap_config.h.in nse_pcrelib.h
.. nmap_dns.cc nsock
acinclude.m4 nmap_dns.h osscan2.cc
aclocal.m4 nmap_error.cc osscan2.h
CHANGELOG nmap_error.h osscan.cc
charpool.cc nmap.h osscan.h
charpool.h nmap-mac-prefixes output.cc
config.guess NmapOps.cc output.h
config.sub NmapOps.h portlist.cc
configure nmap-os-db portlist.h
configure.ac NmapOutputTable.cc portreasons.cc
COPYING NmapOutputTable.h portreasons.h
COPYING.OpenSSL nmap-protocols protocols.cc
depcomp nmap-rpc protocols.h
docs nmap_rpc.cc README-WIN32
FingerPrintResults.cc nmap_rpc.h scan_engine.cc
FingerPrintResults.h nmap-service-probes scan_engine.h
global_structures.h nmap-services scripts
HACKING nmap_tty.cc service_scan.cc
idle_scan.cc nmap_tty.h service_scan.h
idle_scan.h nmap_winconfig.h services.cc
INSTALL nse_binlib.cc services.h
libdnet-stripped nse_binlib.h shtool
liblua nse_bit.cc Target.cc
libpcap nse_bit.h TargetGroup.cc
libpcre nse_debug.cc TargetGroup.h
ltmain.sh nse_debug.h Target.h
MACLookup.cc nse_fs.cc targets.cc
MACLookup.h nse_fs.h targets.h
macosx nselib tcpip.cc
main.cc nse_main.cc tcpip.h
Makefile.in nse_main.h timing.cc
missing nse_main.lua timing.h
mswin32 nse_nmaplib.cc traceroute.cc
nbase nse_nmaplib.h traceroute.h
ncat nse_nsock.cc utils.cc
ndiff nse_nsock.h utils.h
nmap-5.00-1.spec nse_openssl.cc zenmap
nmap_amigaos.h nse_openssl.h zenmap-5.00-1.spec
nmap.cc nse_pcrelib.cc
shaakunthala@shaakunthala-laptop:~/Desktop/nmap-5.00$
Last edited:

