Cara membangun kembali paket menggunakan sistem build arch linux
- 2385
- 305
- Hector Kuhic
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
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?