Dalam komputasi, ekspresi reguler adalah pola tertentu yang menyediakan ringkas dan fleksibel sarana untuk "cocok" (sebutkan dan mengakui) string teks, seperti karakter tertentu, kata-kata, atau pola karakter. Singkatan umum untuk "regular expression" meliputi regex dan regexp.
Konsep ekspresi reguler pertama kali dipopulerkan oleh utilitas yang disediakan dengan distribusi Unix, khususnya editor ed dan grep filter [rujukan?] Sebuah ekspresi reguler menyediakan tata bahasa untuk bahasa formal, spesifikasi ini dapat diinterpretasikan oleh prosesor ekspresi reguler , yang merupakan program yang baik berfungsi sebagai generator parser atau meneliti teks dan mengidentifikasi substring yang menjadi anggota yang ditentukan (sekali lagi, formal) bahasa. Secara historis, konsep ekspresi reguler dikaitkan dengan formalisme Kleene tentang set biasa, diperkenalkan pada tahun 1950.
Berikut ini adalah contoh spesifikasi yang dapat dinyatakan sebagai ekspresi reguler:
Urutan karakter "mobil" muncul berturut-turut, seperti dalam "mobil", "kartun", atau "bikarbonat"
Kata "mobil" ketika muncul sebagai kata terisolasi (dan dibatasi dari kata lain, biasanya melalui karakter spasi)
Kata "mobil" bila didahului dengan kata "motor" (dan dipisahkan oleh pembatas bernama, atau beberapa.)
Kalimat biasa digunakan oleh banyak teks editor, utilitas, dan bahasa pemrograman untuk mencari dan memanipulasi teks berdasarkan pola. Beberapa bahasa ini, termasuk Perl, Ruby, AWK, dan Tcl, mengintegrasikan ekspresi reguler ke dalam sintaks bahasa inti itu sendiri. Bahasa pemrograman lain seperti. Bahasa NET, Java, Python dan C + + (karena C + +11) bukannya memberikan ekspresi reguler melalui perpustakaan standar. Bagi banyak bahasa lainnya, seperti Object Pascal (Delphi), C dan versi sebelumnya dari C + +, perpustakaan non-core yang tersedia.
Sebagai contoh sintaks, ekspresi reguler \ bex dapat digunakan untuk mencari semua contoh string "mantan" yang terjadi setelah "batas kata". Jadi \ bex akan menemukan pencocokan string "mantan" di dua lokasi yang mungkin, (1) pada awal kata-kata, dan (2) antara dua karakter dalam string, di mana yang pertama adalah bukan karakter kata dan yang kedua adalah kata karakter. Misalnya, dalam kasus (1), string "Teks untuk ahli", \ bex cocok dengan "mantan" dalam "ahli" tapi tidak dalam "Teks" (karena "mantan" terjadi di dalam kata dan tidak segera setelah kata batas). Demikian pula, dalam kasus (2), string "& ahli", \ bex cocok dengan "mantan" dalam "ahli" karena batas kata di '&'.
Banyak sistem komputasi modern memberikan karakter wildcard dalam pencocokan nama file dari sistem file. Ini adalah kemampuan inti dari banyak kerang perintah-line dan juga dikenal sebagai globbing. Wildcard berbeda dari ekspresi reguler secara umum mengungkapkan hanya bentuk terbatas pola.
Banyak sistem komputasi modern memberikan karakter wildcard dalam pencocokan nama file dari sistem file. Ini adalah kemampuan inti dari banyak kerang perintah-line dan juga dikenal sebagai globbing. Wildcard berbeda dari ekspresi reguler secara umum mengungkapkan hanya bentuk terbatas pola.
Sejarah
Pada April 1991, Linus
Torvalds, seorang mahasiswa berusia 21 tahun dari Universitas Helsinski, Finlandia
mulai memikirkan sesuatu ide sederhana untuk suatu Sistem
Operasi. Ia memulai dengan task switcher dalam Bahasa Rakitan x86 pada Intel 80386
dan sebuah driver Terminal. Pada 25 Agustus 1991, Torvalds memposting sebuah
pesan di comp.os.minix, sebuah newsgroup di Usenet:
Setelah itu,
banyak orang berkontribusi pada proyek ini. Pada awalnya, komunitas MINIX berkontribusi kode
dan ide pada Kernel Linux. Pada saat itu, Proyek GNU
telah membuat banyak komponen yang diperlukan untuk sebuah sistem operasi
gratis, tapi, kernel mereka, GNU Hurd, pada saat itu masih
belum sempurna dan belum tersedia. Sistem operasi BSD pada waktu itu juga
belum membebaskan diri dari masalah legalitas. Meskipun pada versi awal
fungsinya masih sangat terbatas, pengembang dan pengguna Linux berkembang
cepat.
Pada September
1991, Linux versi 0.01 telah dirilis di server FTP ftp.funet.fi milik
Finnish University and Research Network (FUNET). Rilis pertama tersebut
memiliki 10,239 baris kode. Pada Oktober 1991, Linux versi 0.02 dirilis.
Pada Desember
1991, Linux 0.11 dirilis, versi ini adalah versi pertama yang di host oleh
Linus Torvalds sendiri. Linuz 0.11 dapat di kompilasi oleh komputer yang
menjalankan Linux 0.11. Saat ia merilis versi 0.12 di bulan Februari 1992,
Torvalds mengadopsi GNU General Public License (GPL), dan
berhenti menggunakan lisensi yang ia buat sendiri, yang tidak boleh
didistribusikan secara komersil.
Newsgroup dengan
nama alt.os.linux juga dibuat, dan pada 19 Januari 1992, post pertama
pada alt.os.linux dibuat.[9]
Pada 31 Maret 1992, alt.os.linux berubah menjadi comp.os.linux.
X Window
System juga segera di port ke Linux. Pada Maret 1992, Linux
versi 0.95 adalah versi pertama yang bisa menjalankan X. Lompatan versi yang
jauh ini (dari 0.1x ke 0.9x) karena Torvalds merasa fitur-fiturnya sudah
lumayan lengkap dan ia menganggap sudah layak untuk langsung ke versi 1.0.
Namun, ternyata langkah ini terlalu berlebihan, karena dari tahun 1993 sampai
awal 1994, muncul 15 versi perkembangan Linux 0.99.
Pada 14 Maret
1994, Linux 1.0.0 dirilis, dengan 176,250 barus kode. Pada Maret 1995, Linux
1.2.0 dirilis (310,950 baris kode).
Versi 2 Linux,
dirilis pada 9 Juni 1996, dan diikuti oleh perubahan versi besar dibawah versi
kepala 2:
- 25 Januari 1999 - Linux 2.2.0 dirilis (1,800,847 baris kode).
- 18 Desember 1999 - patch IBM mainframe untuk versi 2.2.13 diterbitkan, yang memperbolehkan Linux dijalankan di mesin bisnis.
- 4 Januari 2001 - Linux 2.4.0 dirilis (3,377,902 baris kode).
- 17 Desember 2003 - Linux 2.6.0 dirilis (5,929,913 baris kode).
Mulai 2004,
proses rilis diubah dan kernel baru mulai dirilis rutin setiap 2-3 bulan,
dengan nomor 2.60, 2.6.1, sampai 2.6.39.
Pada 21 Juli 2011
Linus Torvalds mengumumkan rilis Linux 3.0. Lompatan versi ini bukan karena
perubahan teknologi besar-besaran dibandingkan dengan Linux 2.6.39;[12]
tetapi menandakan ulang tahun ke 20 kernel linux. Proses waktu rilis tetap
sama.
Per tahun 2012,
Linux 3.2 telah memiliki 14,998,651 baris kode.
Konfigurasi Kernel
Source kernel
yang sudah di download biasanya di unpack di direktori /usr/src/.
tar -zxvf linux-2.0.34.tar.gz
Perintah tersebut
akan menguraikan file-file ke dalam direktori /usr/src/linux. Bila perlu
sempatkan membaca file /usr/src/linux/README.
Konfigurasi
dimulai dari direktori /usr/src/linux. Ada tiga cara:
- make config, berupa text base interface, cocok untuk user yang memiliki terminal model lama dan tidak memiliki seting termcap.
- make menuconfig, berupa text base juga tapi memiliki puldown menu berwarna, digunakan untuk user yang memiliki standar console.
- make xconfig, interface menggunakan layar grafik penuh, untuk user yang sudah memiliki X Window.
Bila berhasil
layar Linux Kernel Configuration akan ditampilkan setelah perintah
diatas dijalankan. Ada sekitar 14 menu pilihan dimulai dari Code maturity
level options sampai Kernel hacking. Masing-masing memiliki sub-menu
bila dipilih dan pilihan yes(y), module(m) atau no(no). Setiap
pilihan untuk dimuat/kompile ke dalam kernel atau y akan memperbesar ukuran
kernel nantinya. Jadi pilih feature-feature yang sering di gunakan yang
di muat ke dalam kernel atau jadikan module untuk feature yang
tidak sering di gunakan, misalnya PPP support.
Setelah semua
pilihan dianggap sesuai, konfigurasi di simpan dengan memilih save
sebelum keluar dari layar menu konfigurasi. Konfigurasi akan disimpan dalam
sebuah file. Langkah selanjutnya adalah kompilasi atau dikenal dengan building
the kernel.
Tetap di direktori /usr/src/linux, jalankan perintah:
Sebelum kernel modul di instalasi, sebaiknya backup dulu modul lama. Modul ada di direktori /lib/modules, rename modul dengan nama lain:
Selanjutnya, kembali lagi ke /usr/src/linux dan jalankan perintah di bawah untuk menginstalasi modul ke kernel:
File patch hanya bekerja untuk mengupgrade satu versi kernel dibawahnya. Misalnya, versi kernel 2.0.27 hanya bisa diupgrade dengan file patch 2.0.28 menjadi kernel 2.0.28. Begitu pula bila kernel 2.0.27 tersebut ingin diupgrade menjadi kernel 2.0.30 maka diperlukan file patch 2.0.28, 2.0.29 dan 2.0.30. Perhatikan, kernel 2.0.27 tidak bisa langsung dipatch menjadi 2.0.30 tanpa melalui file patch 2.0.28, 2.0.29 dan 2.0.30.
File-file patch tersebut juga tersedia pada direktori yang sama di FTP dan Website yang biasa menyediakan source kernel.
File-file patch tersedia dalam format .gz, setelah di download, pindahkan file patch ini ke direktori /usr/src. Pastikan source kernel versi lama sudah di instalasi juga. Pada direktori yang lama jalankan perintah:
Kompilasi Kernel
Siapkan kesabaran, terutama bagi user yang melakukan kompilasi kernel di mesin yang memiliki prosesor lambat dan sedikit memori. Kompilasi bisa memakan waktu 10 menit pada mesin dengan prosesor Pentium yang cepat hingga sampai 1,5 jam pada mesin Intel 386. Waktu kompilasi juga bertambah bila sistem digunakan untuk menjalankan proses lain pada saat itu.Tetap di direktori /usr/src/linux, jalankan perintah:
make dep; make clean; make zImage
Perintah
pertama, make dep, membaca file konfigurasi dan membentuk dependency
tree. Proses ini mengecek apa yang di kompile dan apa yang tidak di
kompile. Selanjutnya, make clean, menghapus seluruh jejak kompilasi yang
pernah dilakukan sebelumnya. Ini memastikan agar tidak ada feature versi
lama yang tersisa. Terakhir, make zImage, adalah kompilasi sesungguhnya.
Bila tidak ada pesan kesalahan, akan terbentuk kernel yang terkompresi dan siap
di instalasi.Kompile Modul
Sebelum instalasi kernel, modul-modul yang berhubungan perlu di kompile juga dengan:make modules
Pastikan
tidak ada kesalahan.Instalasi Kernel
Cek lokasi kernel, biasanya nama kernel dimulai dengan vmlinuz, biasanya ada di direktori /boot. Atau buka file /etc/lilo.conf untuk memastikannya. Setelah itu copy file /usr/src/linux/arch/i386/boot/zImage ke direktori /boot dengan nama lain contohnya:cp /usr/src/linux/arch/i386/boot/zImage /boot/vmlinuz-2.0.34-baru
Catatan: bila tidak
ditemukan file zImage, berarti masih ada kesalahan dalam kompilasi.Sebelum kernel modul di instalasi, sebaiknya backup dulu modul lama. Modul ada di direktori /lib/modules, rename modul dengan nama lain:
cd /lib/modules
mv 2.0.34 2.0.34-backup
Keuntungan
membackup modul ini adalah bila ternyata nanti modul baru tidak berjalan
baik, maka modul lama bisa digunakan lagi dengan menghapus modul baru dan merename
modul backup menjadi 2.0.34 kembali.Selanjutnya, kembali lagi ke /usr/src/linux dan jalankan perintah di bawah untuk menginstalasi modul ke kernel:
make modules_install
Akhirnya, edit /etc/lilo untuk
menentukan kernel yang akan di pakai dan jangan lupa menjalankan lilo:lilo
Selesai, reboot
sistem dan lihat hasilnya.Patch Kernel
Setiap di keluarkannya kernel versi baru juga di keluarkan sebuah file patch. File patch ini jauh lebih kecil dari file source kernel sehingga jauh lebih cepat bila digunakan untuk upgrade kernel.File patch hanya bekerja untuk mengupgrade satu versi kernel dibawahnya. Misalnya, versi kernel 2.0.27 hanya bisa diupgrade dengan file patch 2.0.28 menjadi kernel 2.0.28. Begitu pula bila kernel 2.0.27 tersebut ingin diupgrade menjadi kernel 2.0.30 maka diperlukan file patch 2.0.28, 2.0.29 dan 2.0.30. Perhatikan, kernel 2.0.27 tidak bisa langsung dipatch menjadi 2.0.30 tanpa melalui file patch 2.0.28, 2.0.29 dan 2.0.30.
File-file patch tersebut juga tersedia pada direktori yang sama di FTP dan Website yang biasa menyediakan source kernel.
File-file patch tersedia dalam format .gz, setelah di download, pindahkan file patch ini ke direktori /usr/src. Pastikan source kernel versi lama sudah di instalasi juga. Pada direktori yang lama jalankan perintah:
gzip -cd patch-2.0.28.gz | patch -p0
Setelah itu
periksa apakah ada file yang berakhiran .rej di direktori
/usr/src/linux. Bila ditemukan file seperti itu maka patch yang
dilakukan tidak berhasil, periksa kembali apakah file patch yang dipakai
sudah benar. Beberapa file patch menurut berita kadang-kadang memang tidak
sesuai untuk sebuah source kernel, terutama source kernel yang
telah di modifikasi oleh developer untuk kepentingan distribusi Linux.
Saya tidak tahu pasti mengenai hal ini.
Tidak ada komentar:
Posting Komentar