Cara Membangun semula Pakej Menggunakan Sistem Membina Linux Arch
- 4117
- 775
- Dale Harris II
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
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?