Mock untuk build paket: Perbedaan revisi

Dari IGNwiki
Langsung ke: navigasi, cari

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /var/www/html/igos-nusantara-web/wiki/includes/diff/DairikiDiff.php on line 438
(Modifikasi /etc/mock/site-defaults.cfg)
Baris 1: Baris 1:
Pengembang distro berbasis rpm dapat melakukan build src.rpm ke versi atau platform tertentu. Contoh Pengembang IGOS Nusantara saat ini sedang memakai IGN2009 (berbasis Fedora 11), lalu ada kebutuhan update paket tertentu untuk IGN2008 (berbasis Fedora 7). Akan cukup repot apabila pengembang harus instal ulang IGN2008 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 (berbasis Fedora 15, IGN2009 berbasis Fedora 11), lalu ada kebutuhan update paket tertentu untuk IGN2008 (berbasis Fedora 7). Akan cukup repot 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  
+
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 42: Baris 42:
 
  baseurl=http://192.168.1.100/public/fedora/13/updates
 
  baseurl=http://192.168.1.100/public/fedora/13/updates
 
  """
 
  """
  # Ada tiga double apostrof yg harus tetap ada.
+
  # Ada tiga double apostrof di bagian akhir.
  
 
== Modifikasi /etc/mock/site-defaults.cfg ==
 
== Modifikasi /etc/mock/site-defaults.cfg ==
Baris 71: Baris 71:
 
  $ mock -r ign2010 --no-clean installdeps ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm
 
  $ mock -r ign2010 --no-clean installdeps ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm
  
Dependencies sudah siap untuk build src.rpm menjadi rpm.  
+
Dependencies sudah siap untuk build src.rpm menjadi rpm. Untuk mengubah mengubah 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
  
Baris 86: Baris 86:
  
 
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 ==
 +
$ mock -r <config-name> --install <your packages>
 +
Contoh:
 +
$ mock -r ign2010 --install kernel-devel
  
 
== Build Paket ==
 
== Build Paket ==
Baris 92: Baris 97:
  
 
'''Contoh1''': Paket yang akan di build adalah paketku-1.2-3.src.rpm untuk fedora-13-i386, lakukan:
 
'''Contoh1''': Paket yang akan di build adalah paketku-1.2-3.src.rpm untuk fedora-13-i386, lakukan:
  $ mock -r fedora-13-i386 --rebuild package-1.2-3.src.rpm
+
  $ mock -r fedora-13-i386 --rebuild paketku-1.2-3.src.rpm
  
 
'''Contoh2''': Paket yang akan di build adalah paketku-1.2-3.src.rpm untuk fedora-8-i386, lakukan:
 
'''Contoh2''': Paket yang akan di build adalah paketku-1.2-3.src.rpm untuk fedora-8-i386, lakukan:

Revisi per 17 Agustus 2011 13.20

Pengembang distro berbasis rpm dapat melakukan build src.rpm ke versi atau platform tertentu. Contoh Pengembang IGOS Nusantara saat ini sedang memakai IGN2011 (berbasis Fedora 15, IGN2009 berbasis Fedora 11), lalu ada kebutuhan update paket tertentu untuk IGN2008 (berbasis Fedora 7). Akan cukup repot 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

# yum -y install mock

Atur Konfigurasi

Misal fedora-13-i386.cfg menjadi ign2010.cfg

# cd /etc/mock
# ln -s --force fedora-13-i386.cfg ign2010.cfg

Agar mock 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

$ mock clean
$ mock init

Perintah di atas akan membuat chroot (ada di: /var/lib/mock/<system type>/root)

Modifikasi paket melalui shell

Pasang dependencies

Dependencies suatu paket dapat dipasang. Opsi "--no-clean" diperlukan.

$ mock -r ign2010 --no-clean installdeps ~/rpmbuild/SRPMS/paketku-1.2-3.src.rpm

Dependencies sudah siap untuk build src.rpm menjadi rpm. Untuk mengubah mengubah 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

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

$ 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 fedora-13-i386, lakukan:

$ mock -r fedora-13-i386 --rebuild paketku-1.2-3.src.rpm

Contoh2: Paket yang akan di build adalah paketku-1.2-3.src.rpm untuk fedora-8-i386, lakukan:

$ mock -r fedora-8-i386 --rebuild paketku-1.2-3.src.rpm

Contoh3: 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