Cara Membangun semula Pakej Menggunakan Sistem Membina Linux Arch

Cara Membangun semula Pakej Menggunakan Sistem Membina Linux Arch

The Abs atau Sistem membina gerbang adalah sistem bangunan pakej yang berasal dari pengedaran arch linux: dengan itu, kita dapat dengan mudah membina pakej yang dapat dipasang dengan Pacman, Pengurus Pakej Pengedaran, bermula dari kod sumber. Yang harus kita lakukan ialah menentukan arahan di dalam a Pkgbuild fail dan kemudian membina pakej menggunakan Makepkg alat. Dalam tutorial ini, kita akan melihat cara menyesuaikan dan membina semula pakej yang sudah ada.

Dalam tutorial ini anda akan belajar:

  • Apakah sistem binaan gerbang
  • Cara memuat turun fail sumber pakej yang ada
  • Cara mengubahsuai pkgbuild
  • Cara membina pakej menggunakan Makepkg utiliti

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Arch Linux
Perisian ASP, MakePKG, Base-Devel
Yang lain Kebenaran Root untuk memasang kebergantungan membina dan runtime
Konvensyen # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak

Membina semula pakej

Sebagai contoh untuk tutorial ini kita akan membina semula hplip pakej. Pakej ini mengandungi perisian sumber terbuka yang diperlukan untuk menggunakan beberapa pencetak HP di Linux. Mengenai pengagihan seperti Debian dan Fedora, kami mempunyai pilihan untuk memasang hplip pakej yang mengandungi hanya utiliti dan pemacu baris arahan, dan secara pilihan hplip-gui, yang termasuk juga alat grafik yang boleh digunakan untuk membuat persediaan dan mengawal pencetak. Sejak saya menggunakan Sistem-Config-Printer alat untuk mengawal pencetak sedia ada dan saya tidak mahu mempunyai alat yang tidak perlu dan bertindih pada sistem saya, saya perlu mengubah bagaimana perisian dibina dan dibungkus di Arch Linux: inilah yang akan kita lakukan dalam tutorial ini.

Pemasangan perisian

Sebagai langkah pertama kita perlu memasang beberapa pakej: Base-devel dan ASP. Yang pertama adalah kumpulan pakej yang mengandungi banyak utiliti penting untuk menyusun perisian seperti Fakeroot, GCC dan buat. Yang kedua adalah alat untuk mendapatkan fail sumber untuk pakej linux arch yang ada. Untuk memasangnya, kami gunakan Pacman:

$ sudo pacman -s asas -devel ASP 

Seperti yang telah disebutkan, kami juga memerlukan Makepkg yang sudah dipasang sejak ia disertakan Pacman sendiri. Sebaik sahaja kami memasang semua pakej yang diperlukan, kami dapat meneruskan ke Makepkg konfigurasi.

Konfigurasi makePKG

Lalai, seluruh sistem Makepkg Fail konfigurasi adalah /etc/makepkg.Conf; Kami akan menyalinnya ke ~/.Makepkg.Conf, Untuk membuat konfigurasi khusus pengguna, kita boleh tweak tanpa perlu menggunakan keistimewaan pentadbiran (~/.config/pacman/makepkg.Conf juga boleh digunakan). Beberapa pembolehubah yang ketara mungkin mahu tweak dalam fail adalah seperti berikut:

Pembolehubah Gunakan Nilai asal
Cppflags Bendera untuk digunakan untuk preprocessors C -D_fortify_source = 2
Cflags Bendera untuk digunakan untuk pengkompil c -Mac = x86-64 -mtune = generik -o2 -pipe -fno -plt
Cxxflags Bendera untuk digunakan untuk pengkompil C ++ -Mac = x86-64 -mtune = generik -02 -pipe -fno -plt
Builddir Direktori untuk digunakan untuk bangunan pakej /tmp/makepkg
Integrity_check Pemeriksaan integriti untuk digunakan MD5
Pkgdest Direktori di mana semua pakej akan diletakkan . (direktori kerja)
Srcdest Direktori di mana data sumber akan disimpan ./src

Sebaik sahaja kami tweak konfigurasi kami untuk lebih sesuai dengan keperluan kami, kami dapat meneruskan dan memuat turun fail sumber untuk pakej Arch Linux yang ingin kami ubah, dalam hal ini, seperti yang kami katakan sebelumnya, hplip.

Memuat turun fail sumber pakej

Untuk memuat turun fail sumber untuk pakej yang ingin kami ubah, kami mesti menggunakan ASP alat yang kami pasang sebelum ini. Dalam kes ini kita menjalankan:

$ ASP checkout hplip 


Selepas beberapa saat hplip Direktori harus dibuat di direktori kerja kami. Di dalamnya, kita akan menemui dua subdirektori: repos yang mengandungi subdirektori sendiri, dinamakan sempena nama repositori dan seni bina sistem, dan batang, yang mengandungi garis utama pembangunan Svn repositori.

HPLIP/ ├── Repos │ └── extra-x86_64 │ ├── 0022-ADD-in-include-cups-ppd.H-in-various-places-as-cups-2.2.patch │ ├ ├── 0023-fix-pengendalian-unicode-filenames-in-sixext.py.patch │ ├── 0025-remove-all-imageprocessor-functionality-which-is-clo.patch │ ├── disable_upgrade.patch │ ├── hplip-revert-plugins.patch │ ├ ├── pkgbuild │ ├── python3.diff │ └── Gzip boleh dihasilkan.Patch └── Trunk ├── 0022-ADD-in-include-ppd.H-in-various-places-as-cups-2.2.Patch ├── 0023-fix-handling-of-unicode-filenames-in-Sixext.py.Patch ├── 0025-remove-all-imageprocessor-functionality-which-is-clo.patch ├── disable_upgrade.Patch ├── HPLIP-Revert-Plugins.patch ├── pkgbuild ├── python3.Diff └── Reproducible-gzip.patch 

Kita boleh mengubah suai hplip/repos/extra-x86_64/pkgbuild fail.

Mengubah fail pkgbuild

The Pkgbuild Fail adalah skrip bash yang mengandungi arahan bangunan untuk pakej Arch Linux. Dalam kes ini, apa yang kita perlukan untuk mengubah suai dalam fail adalah kandungan membina fungsi yang mengandungi arahan digunakan untuk mengkonfigurasi dan menyusun fail sumber, dalam kes ini hplip. Dalam fungsi kita dapat melihat bahawa ./konfigurasikan Skrip dilancarkan dengan bendera berikut:

[...] ./Konfigurasi --Prefix =/usr \ --enable-qt5 \ --disable-qt4 \ --enable-hpcups-install \ --enable-cups-drv-install \ --enable-pp-build [...] 

Oleh kerana saya tidak mahu aplikasi grafik dibina, dan saya ingin memasang minimum yang diperlukan untuk pencetak saya berfungsi dengan betul, saya tidak memerlukan sokongan untuk qt5, jadi saya dapat mengeluarkan --Enable-qt5 pilihan (saya boleh menggunakan --disable-qt5 atau --Enable-qt5 = no Sebaliknya, tetapi ini akan berlebihan kerana bendera dilumpuhkan secara lalai, seperti yang dapat kita baca dengan melancarkan ./Konfigurasi -Help dalam direktori sumber hplip). Saya kemudian perlu menggunakan --Lumpuhkan-Gui-Build bendera untuk melumpuhkan GUI membina dan menggunakan --Membolehkan-lite-membina bendera untuk mendapatkan binaan lite dengan hanya komponen yang diperlukan untuk membina dan mengimbas (pencetak termasuk juga pengimbas). Hasil akhir adalah seperti:

[...] ./konfigurasi --prefix =/usr \ --disable-qt4 \ --enable-hpcups-install \ --enable-cups-drv-install \ --enable-pp-build \ --disable-gui-build \- -enable-lite-build [...] 


Sejak kita melumpuhkan QT5 sokongan, kita juga boleh mengeluarkan python-pyqt5 dari senarai kebergantungan yang diperlukan untuk membina perisian, yang disenaraikan di makedepends Array bash on line 15 fail:

makedepends = ('python-pyqt5 "sane" rpcbind "cawan" libusb') 

Sekarang kita mengubah suai Pkgbuild, Kami boleh meneruskan langkah seterusnya dan membina pakej kami menggunakan Makepkg.

Bina pakej

Sekali kita Pkgbuild Fail sudah siap, kami boleh membina pakej yang diubah suai kami menggunakan Makepkg utiliti. Sebelum kita melakukannya, kita perlu perkara lain: Oleh kerana tandatangan fail sumber yang dimuat turun untuk perisian yang ingin kita bina diperiksa secara automatik terhadap kunci GPG, kita perlu mengatakan kunci kepada gpg keyring kita, jika tidak, proses binaan akan gagal. Dalam kes ini untuk mengimport kunci yang akan kami jalankan:

$ GPG -Keyserver Keyserver.Ubuntu.com - -RECV 73D770CDA59047B9 

Kita harus dimaklumkan bahawa kunci berjaya diimport:

GPG: Kunci 73D770CDA59047B9: Kunci Awam "HPLIP (HP Linux Imaging and Printing)" GPG yang diimport: Jumlah Bilangan Diproses: 1 GPG: Diimport: 1 

Kunci yang dikenal pasti oleh 73D770CDA59047B9 adalah kunci yang digunakan untuk menandatangani hplip Sumber Tarball. Sekiranya anda ingin mengetahui lebih lanjut mengenai mengesahkan tandatangan GPG, anda boleh melihat cara kami mengesahkan integriti artikel pengedaran ISO pengedaran linux yang saya tulis mengenai subjek.

Setelah siap, kami bergerak ke dalam direktori di mana Pkgbuild disimpan
dan jalankan arahan berikut:

$ Makepkg --Lean --syncdeps -rmdeps 

Mari kita lihat dengan cepat pilihan yang kami gunakan digunakan semasa menggunakan Makepkg alat. Dengan --Bersih pilihan (-c) kita boleh membuat supaya fail dan direktori sisa dikeluarkan selepas binaan pakej yang berjaya. Kami juga menggunakan --SyncDeps (-s): Apabila pilihan ini digunakan runtime yang hilang dan membina kebergantungan pakej dipasang menggunakan Pacman. Akhirnya, kami menggunakan --rmdeps pilihan (-r): Ini akan menyebabkan kebergantungan yang dipasang sebelum ini dipasang setelah binaan selesai.

Sekiranya kita telah melakukan binaan pakej, dan kita mahu menjalankan semula proses yang kita juga perlu menggunakan --kuasa (-f) pilihan, sejak Makepkg Biasanya enggan membina pakej yang sudah ada dalam direktori yang sama).

Sebaik sahaja kami melancarkan arahan di atas, penyusunan fail sumber dan penciptaan pakej akan bermula. Kami akan diminta untuk mengesahkan bahawa kami mahu memasang kebergantungan yang hilang:

==> Membuat Pakej: HPLIP 1: 3.20.6-2 (Tue 18 Ogos 2020 10:29:43 pagi CEST) ==> Memeriksa Runtime Dependencies ... ==> Memasang Ketergantungan Hilang ... [sudo] Kata Laluan untuk Egdoc: Menyelesaikan ketergantungan ... Mencari pakej yang bertentangan ... pakej (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-kecil-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 Jumlah Saiz Dipasang: 61.76 MIB :: Teruskan dengan pemasangan? [Y/n] y [...] ==> Memeriksa kebergantungan binaan ... ==> Memasang kebergantungan yang hilang ... menyelesaikan kebergantungan ... mencari pakej yang bertentangan ... pakej (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 Jumlah Saiz Dipasang: 26.50 MIB :: Teruskan dengan pemasangan? [Y/n] y [...] 

Setelah binaan selesai, kami akan diminta untuk mengesahkan bahawa kami ingin mengeluarkan pakej yang dipasang sebelumnya. Pada ketika ini, jika semuanya berjalan seperti yang diharapkan, kita harus mencari pakej yang dibuat dalam direktori yang kami tentukan di dalam Makepkg fail konfigurasi (The Pkgdest direktori). Secara lalai pakej dibuat di direktori kerja. Dalam kes ini, HPLIP-1: 3.20.6-2-x86_64.pkg.tar.zst Pakej telah dijana; kita boleh memasangnya menggunakan Pacman:

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


Mengendalikan konflik pada peningkatan sistem

Oleh kerana kami menjana pakej tersuai berdasarkan pengubahsuaian yang kami buat di dalam Pkgbuild fail, masalah timbul: Apabila sistem akan dikemas kini, versi baru pakej standard boleh dipasang, dengan itu menimpa pengubahsuaian yang kami buat. Bagaimana kita dapat mengelakkannya? Penyelesaian yang lebih mudah adalah untuk membuat pakej yang kita mengubah suai ahli kumpulan tertentu (katakan kita mahu menyebutnya "diubah suai"), dan kemudian mengarahkan Pacman untuk mengelakkan menaik taraf anggotanya. Untuk melakukan ini kita mesti mengubah suai Pkgbuild Sekali lagi dan tambahkan garis ini:

kumpulan = ('diubah suai') 

Pada ketika ini kita mesti membina semula pakej. Setelah selesai kita mesti mengubah suai /etc/pacman.Conf fail dan tambahkan kumpulan ke senarai yang diabaikan. Baris untuk mengubah suai adalah 26:

AbaikanGroup = diubahsuai 

The Pacman Pengurus Pakej akan melangkau peningkatan pakej, jadi kita mesti melakukannya secara manual apabila diperlukan.

Kesimpulan

Dalam artikel ini kita melihat bagaimana kita boleh menggunakan Abs, sistem membina gerbang untuk mengubahsuai dan membina semula pakej yang ada untuk menyesuaikannya dengan keperluan khusus kami. Kami melihat cara memuat turun fail sumber pakej, cara mengubah suai a Pkgbuild, dan bagaimana membina semula pakej menggunakan Makepkg utiliti. Untuk meneroka subjek dengan lebih baik, anda boleh melihat Makepkg Manpage dan rujuk halaman wiki sistem binaan gerbang.

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Fail Konfigurasi Linux: 30 teratas yang paling penting
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Bolehkah linux mendapat virus? Meneroka kelemahan Linux ..
  • Perkara yang perlu dilakukan setelah memasang Ubuntu 22.04 Jur -ubur Jammy ..
  • Sistem Hung Linux? Cara melarikan diri ke baris arahan dan ..
  • Pasang Arch Linux di Workstation VMware
  • Muat turun linux
  • Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?