Pembungkusan RPM. Bahagian 2: teori fail SPEC

Keajaiban RPM adalah bahawa semua arahan untuk membina pakej disertakan dalam fail SPEC tunggal. Sudah tentu, pertama anda harus memahaminya, dan kadang-kadang tidak mudah ...

Apakah fail SPEC?

Pada dasarnya, fail itulah yang menunjukkan cara membina, memasang dan menyahpasang pakej.

Petunjuk yang akan kami berikan dibahagikan kepada beberapa peringkat, yang seterusnya adalah makro. Ini adalah peringkat asas yang terdapat:

  1. % persediaan: Sumber dibongkar dan ditambal.
  2. % membina: Binari disusun.
  3. % cek: Disahkan bahawa ia telah disusun dengan betul.
  4. % memasang: Bor pemasangan dijalankan.
  5. % fail: Senaraikan semua fail yang akan muncul dalam pakej. Ia juga sering digunakan untuk memberikan atribut. Sekiranya ada fail yang tidak disenaraikan, ia tidak akan dibina.

Sebilangan SPEC mungkin tidak mempunyai beberapa tahap. Mereka tidak wajib.

Terdapat tahap lain yang disebut skrip. mereka istimewa kerana tidak dilaksanakan ketika pakej itu dibina, tetapi ketika dipasang atau dinyahpasang. Anda bahkan boleh menjadualkan pemicu untuk dijalankan apabila pakej lain dipasang. Ini adalah salah satu kelebihan hebat yang dimiliki RPM berbanding fail DEB.

Kekacauan besar dengan RPM ialah mempunyai sintaks yang sama untuk semuanya. Maksudnya, semua kata khas ini didahului dengan tanda persen (%) adalah makro RPM, tetapi terdapat semua jenis makro:

  • Fungsi (% setup,% configure,% patch…)
  • Pemboleh ubah yang telah ditentukan (% _bindir,% dist…)
  • Pemboleh ubah yang ditentukan dalam SPEC itu sendiri (% buildroot,% name,% version ...)
  • Bahagian statik (% keterangan,% changelog ...)
  • Tahap (% membina,% memasang…)
  • Pencetus (% triggerin,% triggerpostun…)
  • Skrip (% pretrans,% postun ...)

Untuk mengetahui bagaimana makro tertentu digunakan, satu-satunya cara adalah rujuk dokumentasi. Sebenarnya anda selalu boleh menggunakan muslihat lain seperti lihat bagaimana SPEC dibuat dari pakej yang serupa dengan anda, atau kaedah percubaan dan kesilapan. Sepasang arahan praktikal:

rpmbuild --showrc # Tunjukkan semua makro anda
rpmbuild --eval = "% macro_name" # Tunjukkan makro yang diperluas

Makro adalah sama jika mereka mempunyai tanda kurung di sekitarnya. Sekiranya terdapat tanda tanya selepas tanda kurung, ia akan menjadi kosong jika tidak ada apa-apa untuk dikembangkan. Sebagai contoh, 1% {? Dist} akan berkembang menjadi 1.fc16 di Fedora 16, tetapi di distro lain ia akan kekal seperti 1.

Makro berkembang walaupun dalam komen. Untuk mengelakkannya merebak, gunakan dua peratus berturut-turut. Sebagai contoh, Persediaan %% akan seperti % persediaan secara harfiah dengan mengembangkan.

Memuaskan selera anda

Kami sudah memasuki ansuran kedua tutorial ini dan anda masih tidak tahu apa yang akan kami kemas, jadi berikut adalah video untuk membuka mulut anda:

Permainan yang akan kami bungkus adalah sangat ketagihan. Saya cadangkan untuk tidak menyelesaikan tutorial sekiranya anda tidak mempunyai masa setelah membuang beberapa jam hidup anda bermain ini ...

< < Baca bahagian pertama tutorial pembungkusan RPM