Cara membangun kembali paket menggunakan sistem build arch linux

Cara membangun kembali paket menggunakan sistem build arch linux

Itu Abs atau Sistem pembuatan lengkung adalah sistem pembangunan paket yang asli dari distribusi Arch Linux: dengan itu, kita dapat dengan mudah membangun paket yang dapat diinstal dengan Pacman, Manajer Paket Distribusi, mulai dari kode sumber. Yang harus kita lakukan adalah menentukan instruksi di dalam a Pkgbuild file dan kemudian buat paket menggunakan makePkg alat. Dalam tutorial ini kita akan melihat cara menyesuaikan dan membangun kembali paket yang sudah ada.

Dalam tutorial ini Anda akan belajar:

  • Apa sistem pembuatan lengkungan
  • Cara mengunduh file sumber paket yang ada
  • Cara memodifikasi pkgbuild
  • Cara membangun paket menggunakan makePkg kegunaan

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Arch Linux
Perangkat lunak ASP, makePkg, tingkat dasar
Lainnya Izin root untuk menginstal dependensi build dan runtime
Konvensi # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Membangun kembali paket

Sebagai contoh untuk tutorial ini kita akan membangun kembali hplip kemasan. Paket ini berisi perangkat lunak open source yang diperlukan untuk menggunakan beberapa printer HP di Linux. Pada distribusi seperti Debian dan Fedora, kami memiliki pilihan untuk menginstal hplip paket yang hanya berisi utilitas dan driver baris perintah, dan opsional hplip-gui, yang mencakup juga alat grafis yang dapat digunakan untuk mengatur dan mengontrol printer. Karena saya menggunakan System-Config-printer Alat untuk mengontrol printer yang ada dan saya tidak ingin memiliki alat yang tidak perlu dan tumpang tindih pada sistem saya, saya perlu mengubah cara perangkat lunak dibangun dan dikemas di Arch Linux: inilah yang akan kami lakukan dalam tutorial ini.

Instalasi Perangkat Lunak

Sebagai langkah pertama kita perlu menginstal beberapa paket: DASAR-DEVEL Dan asp. Yang pertama adalah grup paket yang berisi banyak utilitas penting untuk menyusun perangkat lunak seperti Fakeroot, GCC Dan membuat. Yang kedua adalah alat untuk mengambil file sumber untuk paket Linux Arch yang ada. Untuk menginstalnya, kami menggunakan Pacman:

$ sudo Pacman -s basis -devel asp 

Seperti yang telah disebutkan, kami juga akan membutuhkan makePkg yang sudah terpasang sejak dilengkapi Pacman diri. Setelah kami memasang semua paket yang dibutuhkan, kami dapat melanjutkan ke makePkg konfigurasi.

Konfigurasi Makepkg

Default, seluruh sistem makePkg file konfigurasi adalah /etc/makePkg.conf; Kami akan menyalin ini ~/.makePkg.conf, Untuk membuat konfigurasi khusus pengguna, kami dapat mengubah tanpa perlu menggunakan hak administratif (~/.Config/Pacman/Makepkg.conf juga bisa digunakan). Beberapa variabel nyata yang mungkin ingin diubah dalam file adalah sebagai berikut:

Variabel Menggunakan Nilai default
CPPFLAGS Bendera untuk digunakan untuk preprocessor C -D_forttify_source = 2
Cflags Bendera untuk digunakan untuk kompiler C -March = x86-64 -mtune = generik -o2 -pipe -fno -plt
Cxxflags Bendera untuk digunakan untuk kompiler C ++ -March = x86-64 -mtune = generik -02 -pipe -fno -plt
Builddir Direktori untuk digunakan untuk membangun paket /tmp/makePkg
Integrity_check Pemeriksaan integritas untuk digunakan md5
Pkgdest Direktori di mana semua paket akan ditempatkan . (Direktori Bekerja)
Srcdest Direktori tempat data sumber akan disimpan ./src

Setelah kami mengubah konfigurasi kami untuk lebih sesuai dengan kebutuhan kami, kami dapat melanjutkan dan mengunduh file sumber untuk paket Arch Linux yang ingin kami modifikasi, dalam hal ini, seperti yang kami katakan sebelumnya, hplip.

Mengunduh file sumber paket

Untuk mengunduh file sumber untuk paket yang ingin kami modifikasi, kami harus menggunakan asp Alat yang kami instal sebelumnya. Dalam hal ini kami menjalankan:

$ Asp checkout hplip 


Setelah beberapa detik hplip Direktori harus dibuat di direktori kerja kami. Di dalamnya, kami akan menemukan dua subdirektori: repo yang berisi subdirektori sendiri, dinamai sesuai nama repositori dan arsitektur sistem, dan belalai, yang berisi garis utama pengembangan Svn gudang.

HPLIP/ ├── Repos │ └── Extra-X86_64 │ ├── 0022-add-include-cups-ppd.h-in-various-places-as-cups-2.2.tambalan │ ├── 0023-fix-handling-of-unicode-filenames-in-sixext.py.tambalan │ ├── 0025-remove-all-imageprocessor-functionality-which-is-clo.tambalan │ ├── Disable_Upgrade.tambalan │ ├── hplip-revert-plugins.tambalan │ ├── pkgbuild │ ├── python3.Diff │ └── Reproducible-Gzip.tambalan └── trunk ├── 0022-tambah-termasuk-cup-ppd.h-in-various-places-as-cups-2.2.Patch ├── 0023-fix-handling-of-unicode-filenames-in-sixext.py.tambalan ├─ 0025-remove-semua-imageprosesor-fungsionalitas yang-adalah-clo-clo.Patch ├── Disable_Upgrade.Patch ├── Hplip-Revert-Plugins.tambalan ├── pkgbuild ├── python3.Diff └── Gzip yang dapat direproduksi.tambalan 

Kami dapat memodifikasi HPLIP/REPOS/Extra-X86_64/PKGBUILD mengajukan.

Memodifikasi file pkgbuild

Itu Pkgbuild File adalah skrip bash yang berisi instruksi bangunan untuk paket Arch Linux. Dalam hal ini, apa yang perlu kita ubah dalam file adalah konten dari membangun fungsi yang berisi perintah yang digunakan untuk mengonfigurasi dan mengkompilasi file sumber, dalam hal ini hplip. Dalam fungsi kita dapat melihat bahwa ./Mengkonfigurasi Script diluncurkan dengan bendera berikut:

[…] ./configure --prefix =/usr \ --enable-qt5 \--disisable-qt4 \ --enable-hpcups-install \ --enable-cups-drv-install \ --enable-pp-build […] 

Karena saya tidak ingin aplikasi grafis dibangun, dan saya ingin menginstal minimum yang diperlukan agar printer saya berfungsi dengan benar, saya tidak perlu dukungan untuk QT5, jadi saya dapat menghapus --aktifkan-QT5 opsi (saya bisa menggunakan --Nonaktifkan-QT5 atau --aktifkan-qt5 = no Sebaliknya, tetapi ini akan berlebihan karena bendera dinonaktifkan secara default, seperti yang dapat kita baca dengan meluncurkan ./Konfigurasikan --help Di direktori sumber HPLIP). Saya kemudian perlu menggunakan --Nonaktifkan-Gui-Build bendera untuk menonaktifkan GUI build dan menggunakan --aktifkan-lite-build Bendera untuk mendapatkan build lite dengan hanya komponen yang diperlukan untuk membangun dan memindai (printer juga mencakup pemindai). Hasil akhirnya adalah sesuatu seperti:

[…] ./configure --prefix =/usr \--dishable-qt4 \ --enable-hpcups-install \ --enable-cups-drv-install \ --enable-pp-build \--diskon-gui-build \- -enable-lite-build […] 


Sejak kami dinonaktifkan qt5 dukungan, kami juga dapat menghapus Python-pyqt5 Dari daftar dependensi yang diperlukan untuk membangun perangkat lunak, yang tercantum di Makedepends Bash Array On Line 15 file:

makedepends = ('python-pyqt5 "ware" rpcbind "cangkir" libusb') 

Sekarang kami memodifikasi Pkgbuild, Kami dapat melanjutkan ke langkah berikutnya dan membangun paket kami menggunakan makePkg.

Bangun paket

Sekali kami Pkgbuild File sudah siap, kami dapat membuat paket yang dimodifikasi kami menggunakan makePkg kegunaan. Sebelum kita melakukannya, kita perlu ke hal lain: karena tanda tangan dari file sumber yang diunduh untuk perangkat lunak yang ingin kita bangun diperiksa secara otomatis terhadap kunci GPG, kita perlu mengatakan kunci untuk keyring GPG kami, jika tidak, proses pembuatan akan gagal. Dalam hal ini untuk mengimpor kunci yang akan kami jalankan:

$ gpg --keyserver keyserver.Ubuntu.com ---RECV 73D770CDA59047B9 

Kita harus diberi tahu bahwa kuncinya berhasil diimpor:

GPG: Kunci 73D770CDA59047B9: Kunci publik "HPLIP (HP Linux Imaging and Printing)" Diimpor GPG: Total Nomor yang Diproses: 1 GPG: Diimpor: 1 

Kunci yang diidentifikasi oleh 73D770CDA59047B9 adalah kunci yang digunakan untuk menandatangani hplip Sumber Tarball. Jika Anda ingin tahu lebih banyak tentang memverifikasi tanda tangan GPG, Anda dapat melihat bagaimana cara memverifikasi integritas artikel gambar ISO distribusi Linux yang saya tulis tentang subjek tersebut.

Setelah siap, kami pindah ke dalam direktori tempat Pkgbuild tersimpan
dan jalankan perintah berikut:

$ makePkg --Clean --syncdeps --rmdeps 

Mari kita lihat sekilas opsi yang kami gunakan digunakan saat memohon makePkg alat. Dengan --membersihkan pilihan (-C) Kita dapat membuat agar file dan direktori tersisa dihapus setelah paket yang berhasil membangun. Kami juga menggunakan --SYNCDEPS (-S): Ketika opsi ini digunakan, runtime yang hilang dan membangun ketergantungan paket diinstal menggunakan Pacman. Akhirnya, kami menggunakan --rmdeps pilihan (-R): Ini akan menyebabkan dependensi yang dipasang sebelumnya diinstal setelah build selesai.

Jika kami telah melakukan pembuatan paket, dan kami ingin menjalankan kembali proses, kami juga perlu menggunakan --memaksa (-F) opsi, sejak makePkg biasanya menolak untuk membangun paket yang sudah ada di direktori yang sama).

Setelah kami meluncurkan perintah di atas, kompilasi file sumber dan pembuatan paket akan dimulai. Kami akan diminta untuk mengkonfirmasi kami ingin menginstal dependensi yang hilang:

==> Membuat Paket: HPLIP 1: 3.20.6-2 (Sel 18 Agustus 2020 10:29:43 AM CEST) ==> Memeriksa dependensi runtime… ==> Menginstal dependensi yang hilang ... [sudo] Kata sandi untuk EGDOC: Menyelesaikan dependensi ... mencari paket yang bertentangan ... paket (18) jbig2dec -0.18-1 LIBIDN-1.36-1 Perl-alien-Build-2.29-1 Perl-ALIEN-LIBXML2-0.16-2 Perl-Capture-Tiny-0.48-4 Perl-Clone-0.45-2 Perl-DBI-1.643-2 Perl-FFI-CHECKLIB-0.27-2 Perl-File-Chdir-0.1011-4 Perl-File-WHICH-1.23-4 Perl-Path-Tiny-0.112-2 Perl-xml-libxml-2.0205-2 Perl-xml-namespacesupport-1.12-4 Perl-XML-SAX-1.02-1 Perl-XML-SAX-BASE-1.09-4 foomatic-db-engine-4: 20200206-1 Ghostscript-9.52-1 NET-SNMP-5.8-6 Total Ukuran Terpasang: 61.76 MIB :: Lanjutkan dengan instalasi? [Y/n] y […] ==> Memeriksa dependensi waktu pembuatan… ==> Menginstal dependensi yang hilang… menyelesaikan dependensi… mencari paket yang bertentangan ... paket (6) GD-2.3.0-1 libgphoto2-2.5.25-1 LibieEE1284-0.2.11-9 libxpm-3.5.13-2 RPCBIND-1.2.5-3 Sane-1.0.30-1 Total Ukuran Terpasang: 26.50 MIB :: Lanjutkan dengan instalasi? [Y/n] y […] 

Setelah build selesai, kami akan diminta untuk mengkonfirmasi bahwa kami ingin menghapus paket yang diinstal sebelumnya. Pada titik ini, jika semuanya berjalan seperti yang diharapkan, kita harus menemukan paket yang dibuat di direktori yang kami tentukan di makePkg file konfigurasi ( Pkgdest direktori). Secara default paket dibuat di direktori kerja. Dalam hal ini, HPLIP-1: 3.20.6-2-x86_64.pkg.ter.zst Paket dihasilkan; Kami dapat menginstalnya menggunakannya Pacman:

$ sudo pacman -u hplip -1: 3.20.6-2-x86_64.pkg.ter.zst 


Menangani konflik pada peningkatan sistem

Karena kami menghasilkan paket khusus berdasarkan modifikasi yang kami buat di dalam Pkgbuild file, muncul masalah: Ketika sistem akan diperbarui, versi baru dari paket standar dapat diinstal, sehingga menimpa modifikasi yang kami buat. Bagaimana kita bisa menghindari ini? Solusi yang lebih sederhana adalah membuat paket kami memodifikasi anggota grup tertentu (katakanlah kami ingin menyebutnya "dimodifikasi"), dan kemudian menginstruksikan Pacman untuk menghindari meningkatkan anggotanya. Untuk melakukan ini kita harus memodifikasi Pkgbuild lagi dan tambahkan baris ini:

grup = ('dimodifikasi') 

Pada titik ini kita harus membangun kembali paket. Setelah selesai kita harus memodifikasi /etc/pacman.conf mengajukan dan menambahkan grup ke daftar yang diabaikan. Garis untuk memodifikasi adalah 26:

Abaikan kelompok = dimodifikasi 

Itu Pacman Manajer paket akan melewatkan peningkatan paket, jadi kami harus melakukannya secara manual saat dibutuhkan.

Kesimpulan

Dalam artikel ini kita melihat bagaimana kita bisa menggunakan Abs, sistem pembuatan lengkungan untuk memodifikasi dan membangun kembali paket yang ada untuk menyesuaikannya dengan kebutuhan spesifik kami. Kami melihat cara mengunduh file sumber paket, cara memodifikasi a Pkgbuild, dan cara membangun kembali paket menggunakan makePkg kegunaan. Untuk lebih mengeksplorasi subjek, Anda dapat melihat makePkg PRANPAGE DAN KONSULT.

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • File Konfigurasi Linux: 30 Teratas Paling Penting
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Can Linux mendapatkan virus? Menjelajahi kerentanan Linux…
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 22.04 Jammy Jellyfish…
  • Sistem Linux Hung? Cara melarikan diri ke baris perintah dan…
  • Instal Arch Linux di VMware Workstation
  • Unduh Linux
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?