Mock untuk build paket: Perbedaan revisi
(→Atur Konfigurasi) |
|||
(13 revisi antara oleh pengguna yang sama tidak ditampilkan) | |||
Baris 1: | Baris 1: | ||
− | Mock dipakai untuk build paket | + | Pengembang distro berbasis rpm dapat melakukan build src.rpm ke versi atau platform tertentu. Contoh Pengembang IGOS Nusantara saat ini sedang memakai IGN2011, lalu ada kebutuhan update paket tertentu untuk IGN2008. Akan cukup sulit apabila pengembang harus instal ulang IGN2008 untuk build paket. |
+ | |||
+ | Mock dipakai untuk build paket src.rpm menjadi rpm ke versi tertentu. Misal dari IGN2009 dapat melakukan build paket untuk IGN2008, atau bahkan build paket untuk CentOS. Mock sangat memudahkan proses build. Saat melakukan build, mock akan membuat lingkungan/environment chroot. | ||
== Pasang Mock == | == Pasang Mock == | ||
Baris 5: | Baris 7: | ||
== Atur Konfigurasi == | == Atur Konfigurasi == | ||
− | Misal fedora- | + | Misal fedora-13-i386.cfg menjadi ign2010.cfg |
# cd /etc/mock | # cd /etc/mock | ||
− | # | + | # cp fedora-13-i386.cfg ign2010.cfg |
− | + | Atur mock supaya memakai repositori lokal, lakukan penyesuaian: | |
'''SEMULA''': | '''SEMULA''': | ||
Baris 15: | Baris 17: | ||
[fedora] | [fedora] | ||
name=fedora | name=fedora | ||
− | mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora- | + | mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-13&arch=i386 |
failovermethod=priority | failovermethod=priority | ||
[updates-released] | [updates-released] | ||
name=updates | name=updates | ||
− | mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released- | + | mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f13&arch=i386 |
failovermethod=priority | failovermethod=priority | ||
Baris 32: | Baris 34: | ||
'''MENJADI''' (misal) | '''MENJADI''' (misal) | ||
# repos | # repos | ||
− | [ | + | [f13-all] |
− | name= | + | name=f13-all |
− | baseurl=http://192.168.1.100/public/fedora/ | + | baseurl=http://192.168.1.100/public/fedora/13/all |
− | [ | + | [f13-updates] |
− | name= | + | name=f13-updates |
− | baseurl=http://192.168.1.100/public/fedora/ | + | baseurl=http://192.168.1.100/public/fedora/13/updates |
""" | """ | ||
− | # Ada tiga double apostrof | + | # Ada tiga double apostrof di bagian akhir. |
+ | |||
+ | == Modifikasi /etc/mock/site-defaults.cfg == | ||
+ | Tambahkan pada bagian bawah site-defaults.cfg | ||
+ | |||
+ | # Setup various rpm macros to use | ||
+ | config_opts['macros']['%packager'] = 'Nana Suryana <nana@suryana.or.id>' | ||
+ | config_opts['macros']['%debug_package'] = '%{nil}' | ||
== Tambah pengguna ke grup mock == | == Tambah pengguna ke grup mock == | ||
Baris 52: | Baris 61: | ||
== Inisialisasi mock == | == Inisialisasi mock == | ||
+ | Inisialisasi akan menghasilkan /var/lib/mock/<system type>/root | ||
$ mock clean | $ mock clean | ||
$ mock init | $ mock init | ||
− | |||
− | |||
== Modifikasi paket melalui shell== | == Modifikasi paket melalui shell== | ||
− | === Pasang dependencies === | + | === Cara1: shell untuk build dari berkas spec === |
− | Dependencies suatu paket | + | ==== Pasang dependencies ==== |
− | $ mock --no-clean installdeps ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm | + | Dependencies suatu paket dipasang dengan "installdeps" dan memakai opsi "--no-clean" sehingga siap melakukan build src.rpm menjadi rpm: |
+ | $ mock -r ign2010 --no-clean installdeps ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm | ||
− | + | Untuk memodifikasi berkas spec pasang paket nano, caranya: | |
$ mock-helper yum --installroot /var/lib/mock/<system type>/root install nano | $ mock-helper yum --installroot /var/lib/mock/<system type>/root install nano | ||
− | === Masuk shell === | + | ==== Masuk shell ==== |
$ mock shell | $ mock shell | ||
Setelah masuk shell lakukan: | Setelah masuk shell lakukan: | ||
Baris 71: | Baris 80: | ||
nano paketku.spec # lakukan perubahan spec | nano paketku.spec # lakukan perubahan spec | ||
rpmbuild -bb paketku.spec | rpmbuild -bb paketku.spec | ||
+ | |||
+ | === Cara2: shell untuk build dari berkas src.rpm === | ||
+ | ==== Salin src.rpm ke mock ==== | ||
+ | Misal menyalin ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm ke direktori /tmp yang ada di mock | ||
+ | $ mock -r ign2010 --copyin ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm /tmp | ||
+ | Masuk shell dan melakukan build: | ||
+ | $ mock -r ign2010 --shell | ||
+ | $ cd | ||
+ | $ rpmbuild --rebuild /tmp/paketku-1.2-3.src.rpm | ||
== Modifikasi paket tanpa shell == | == Modifikasi paket tanpa shell == | ||
Baris 77: | Baris 95: | ||
Berkas src.rpm yang dihasilkan ada di ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm | Berkas src.rpm yang dihasilkan ada di ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm | ||
+ | |||
+ | == Pasang paket ke dalam mock == | ||
+ | Paket yang tidak ada dalam repositori dan diperlukan paket lain yang ada di dalam mock dapat dipasang dengan cara: | ||
+ | $ mock -r <config-name> --install <your packages> | ||
+ | Contoh: | ||
+ | $ mock -r ign2010 --install kernel-devel | ||
== Build Paket == | == Build Paket == | ||
Baris 82: | Baris 106: | ||
$ mock -r <configfile> --rebuild ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm | $ mock -r <configfile> --rebuild ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm | ||
− | '''Contoh1''': Paket yang akan di build adalah paketku-1.2-3.src.rpm untuk | + | '''Contoh1''': Paket yang akan di build adalah paketku-1.2-3.src.rpm untuk ign2010, lakukan: |
− | $ mock --rebuild | + | $ mock -r ign2010 --rebuild paketku-1.2-3.src.rpm |
− | '''Contoh2 | + | '''Contoh2''': Memakai beberapa parameter |
− | + | $ mock -r ign2010 \ | |
− | + | ||
− | + | ||
− | $ mock -r | + | |
--verbose \ | --verbose \ | ||
--resultdir=/home/igos/var/rpm/mock/"%(dist)s"/"%(target_arch)s"/ \ | --resultdir=/home/igos/var/rpm/mock/"%(dist)s"/"%(target_arch)s"/ \ | ||
--no-clean --no-cleanup-after \ | --no-clean --no-cleanup-after \ | ||
--rebuild paketku-1.2-3.src.rpm | --rebuild paketku-1.2-3.src.rpm | ||
+ | |||
+ | == Hasil Rebuild == | ||
+ | Paket hasil rebuild ada di direktori /var/lib/mock/$CONFIG/result: | ||
+ | |||
+ | $ ls -1 /var/lib/mock/$CONFIG/result | ||
+ | build.log | ||
+ | paketku-1.2-3.noarch.rpm | ||
+ | paketku-1.2-3.src.rpm | ||
+ | root.log | ||
+ | state.log |
Revisi terkini pada 17 Agustus 2011 14.50
Pengembang distro berbasis rpm dapat melakukan build src.rpm ke versi atau platform tertentu. Contoh Pengembang IGOS Nusantara saat ini sedang memakai IGN2011, lalu ada kebutuhan update paket tertentu untuk IGN2008. Akan cukup sulit apabila pengembang harus instal ulang IGN2008 untuk build paket.
Mock dipakai untuk build paket src.rpm menjadi rpm ke versi tertentu. Misal dari IGN2009 dapat melakukan build paket untuk IGN2008, atau bahkan build paket untuk CentOS. Mock sangat memudahkan proses build. Saat melakukan build, mock akan membuat lingkungan/environment chroot.
Daftar isi
Pasang Mock
# yum -y install mock
Atur Konfigurasi
Misal fedora-13-i386.cfg menjadi ign2010.cfg
# cd /etc/mock # cp fedora-13-i386.cfg ign2010.cfg
Atur mock supaya memakai repositori lokal, lakukan penyesuaian:
SEMULA:
# repos [fedora] name=fedora mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-13&arch=i386 failovermethod=priority [updates-released] name=updates mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f13&arch=i386 failovermethod=priority [local] name=local baseurl=http://kojipkgs.fedoraproject.org/repos/dist-f11-build/latest/i386/ cost=2000 enabled=0 """
MENJADI (misal)
# repos [f13-all] name=f13-all baseurl=http://192.168.1.100/public/fedora/13/all [f13-updates] name=f13-updates baseurl=http://192.168.1.100/public/fedora/13/updates """ # Ada tiga double apostrof di bagian akhir.
Modifikasi /etc/mock/site-defaults.cfg
Tambahkan pada bagian bawah site-defaults.cfg
# Setup various rpm macros to use config_opts['macros']['%packager'] = 'Nana Suryana <nana@suryana.or.id>' config_opts['macros']['%debug_package'] = '%{nil}'
Tambah pengguna ke grup mock
Pengguna yang akan melakukan build paket harus dimasukkan ke grup mock. Misal memasukkan pengguna dengan nama "igos"
# usermod -a -G mock igos
Ganti user ke igos untuk menjalankan mock
# su - igos $ whoami igos
Inisialisasi mock
Inisialisasi akan menghasilkan /var/lib/mock/<system type>/root
$ mock clean $ mock init
Modifikasi paket melalui shell
Cara1: shell untuk build dari berkas spec
Pasang dependencies
Dependencies suatu paket dipasang dengan "installdeps" dan memakai opsi "--no-clean" sehingga siap melakukan build src.rpm menjadi rpm:
$ mock -r ign2010 --no-clean installdeps ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm
Untuk memodifikasi berkas spec pasang paket nano, caranya:
$ mock-helper yum --installroot /var/lib/mock/<system type>/root install nano
Masuk shell
$ mock shell
Setelah masuk shell lakukan:
cd /builddir/build/SPECS nano paketku.spec # lakukan perubahan spec rpmbuild -bb paketku.spec
Cara2: shell untuk build dari berkas src.rpm
Salin src.rpm ke mock
Misal menyalin ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm ke direktori /tmp yang ada di mock
$ mock -r ign2010 --copyin ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm /tmp
Masuk shell dan melakukan build:
$ mock -r ign2010 --shell $ cd $ rpmbuild --rebuild /tmp/paketku-1.2-3.src.rpm
Modifikasi paket tanpa shell
Paket yang akan dibuild dengan mock dapat disesuaikan lebih dulu. Setelah pengaturan selesai, buat src.rpm:
$ rpmbuild -bs ~/rpmbuild/SPECS/paketku.spec
Berkas src.rpm yang dihasilkan ada di ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm
Pasang paket ke dalam mock
Paket yang tidak ada dalam repositori dan diperlukan paket lain yang ada di dalam mock dapat dipasang dengan cara:
$ mock -r <config-name> --install <your packages>
Contoh:
$ mock -r ign2010 --install kernel-devel
Build Paket
Sintak:
$ mock -r <configfile> --rebuild ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm
Contoh1: Paket yang akan di build adalah paketku-1.2-3.src.rpm untuk ign2010, lakukan:
$ mock -r ign2010 --rebuild paketku-1.2-3.src.rpm
Contoh2: Memakai beberapa parameter
$ mock -r ign2010 \ --verbose \ --resultdir=/home/igos/var/rpm/mock/"%(dist)s"/"%(target_arch)s"/ \ --no-clean --no-cleanup-after \ --rebuild paketku-1.2-3.src.rpm
Hasil Rebuild
Paket hasil rebuild ada di direktori /var/lib/mock/$CONFIG/result:
$ ls -1 /var/lib/mock/$CONFIG/result build.log paketku-1.2-3.noarch.rpm paketku-1.2-3.src.rpm root.log state.log