Menggunakan Devtools di Arch Linux

Pakej Devtools pada asalnya dibuat untuk Pengguna Dipercayai untuk membuat pakej untuk repositori dengan betul. Walau bagaimanapun, ia boleh digunakan oleh pengguna biasa dan juga untuk membina pakej AUR, atau bahkan pakej rasmi diubahsuai.

Rujuk kepada panduan ini untuk memahami dan menggunakan AUR pada amnya, termasuk mendapatkan PKGBUILD. Dokumen ini hanya menunjukkan langkah-langkah khusus untuk Devtools, jika kaedah yang anda pilih untuk menyusun pakej.

Devtools mengekalkan pemasangan Arch bersih yang berasingan, terletak di /var/lib/archbuild/<TARGET>/root, yang hanya mengandungi kumpulan pakej basedan base-devel. Jika pemasangan bersih ini tidak wujud, ia secara automatik menciptanya. Sekiranya ada, ia secara automatik mengemas kini sebarang pakej di dalamnya. Apabila Devtools digunakan untuk membina pakej, ia bermula dengan salinan pemasangan bersih ini, memasang pakej yang diperlukan ke dalam salinan sahaja, menyalin kod sumber ke dalamnya, melakukan penyusun dan pembungkusan di dalamnya, dan hanya menyalin pakej yang dihasilkan, dalam bentuk yang sama dari apa yang terdapat dalam repositori rasmi.

Terdapat kelebihan kepada Devtools kerana makepkgterus berjalan . Satu kelebihannya ialah base-develdan pakej-pakej lain yang diperlukan untuk dikompilasi, tetapi tidak dijalankan, pakej yang anda buat tidak pernah digulung dalam sistem utama anda. Itulah pakej yang kurang perlu ditingkatkan secara berkala, dan mempunyai kebimbangan. Walaupun pada dasarnya manfaat untuk penyelenggara pakej Arch, proses ini mudah didedahkan apabila PKGBUILDtidak benar, seperti jika ketergantungan tidak terjawab dari daftar yang penyelenggara itu terjadi telah dipasang di sistem utama mereka. Anda juga boleh menggunakan mesin yang lebih cepat pada pakej bangunan, dan menyalin pakej yang dihasilkan ke mesin yang lebih perlahan yang akan dijalankan, tanpa mencemarkan pemasangan mesin bangunan.

Kelemahan utama adalah bahawa akar bersih sentiasa ada, mengambil kira-kira 800MB, dan biasanya satu salinan di sana mengambil lebih banyak ruang. Perhatikan, jika /var/lib/archbuild/menggunakan Btrfs, salinan akar yang bersih bermula sebagai snapshot Btrfs, jadi fail tersebut tidak mengambil dua kali ganda ruang. Akar bersih sentiasa disimpan di sana untuk mengelakkan pemasangan semula setiap kali pakej dibuat.

Menyusun Menggunakan Devtools

Pasang Devtools:

# pacman -S devtools

Untuk membina pakej, Devtools termasuk archbuild, tetapi anda tidak menjalankannya secara langsung. Ia juga termasuk symlinks of {extra, gnome-unstable, kde-unstable, staging, testing}-x86_64-build. Symlink yang sedang digunakan untuk menjalankannya akan diperiksa oleh archbuild, untuk menentukan sasaran yang anda ingin gunakan. Ia boleh berlari untuk menggunakan repositori yang tidak stabil / pementasan / ujian ini, yang mungkin mempunyai versi yang lebih baru daripada yang telah dikeluarkan ke repositori rasmi. Untuk menggunakan repositori rasmi untuk pakej bukan-AUR, dalam direktori dengan PKGBUILD, misalnya direktori yang dibuat oleh git clone, jalankan yang berikut:

$ extra-x86_64-build

Nota: Sisa panduan ini hanya akan dirujuk extra-x86_64-build.

Setelah selesai berjalan, berikut akan menjadi hasilnya:

  • /var/lib/archbuild/extra-x86_64/root- Satu chroot yang bersih , yang merupakan pemasangan terkini dengan hanya kumpulan pakej basedan base-devel.
  • /var/lib/archbuild/extra-x86_64/<USERNAME>- Ini akan mengandungi chroot bina . Ini adalah salinan chroot yang bersih dengan sebarang kebergantungan yang diperlukan untuk membina atau menjalankan pakej yang dibina, serta kod sumbernya, hasil kompilasi, dan pakej.
  • Direktori yang anda ada akan mengandungi pakej dan membina fail log, serta mana-mana kod sumber yang dimuat turun.

Pada akhirnya, anda mungkin melihat " Checking PKGBUILD", dan " Checking <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz". Mana-mana baris selepas ini adalah output dari namcap, yang secara automatik mencari masalah seperti PKGBUILDfail malformed , dependencies termasuk bahawa pakej tidak kelihatan menggunakan, dependencies tidak termasuk pakej yang tampaknya digunakan, dan banyak lagi. Positif palsu sering dihasilkan oleh namcap, tetapi merupakan alat yang baik untuk memberikan sesuatu untuk disiasat. Sekiranya pakej anda berfungsi dengan betul, itu bukan idea yang baik untuk memaklumkan penyenggara kepada namcapoutput, melainkan jika anda telah melihatnya dan mengesahkan perubahan harus dibuat.

Anda boleh gunakan pacmanuntuk memasang pakej, yang akan memasang sebarang kebergantungan yang diperlukan untuk menjalankan pakej selagi mereka berada dalam repositori rasmi atau repositori tempatan.

Gunakan Repositori Tempatan seperti yang dijelaskan di sini , atau pasang failnya secara langsung:

# pacman -U <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz

Sekiranya anda menjalankan extra-x86_64-buildlagi, sekarang, atau bila-bila masa kemudian dengan ini atau paket lain, ia akan mengemas kini chroot bersih jika diperlukan, hapus chroot build dan jadikannya salinan baru dari chroot bersih, dan lakukan proses yang sama. Sekiranya direktori anda masih mempunyai kod sumber yang dimuat turun dari kali terakhir, ia akan menggunakannya. Sekiranya pakej itu adalah pakej AUR pengembangan, ia akan menarik perubahan baru daripada diklon semula.

Secara dalaman, extra-x86_64-buildberjalan makechrootpkg, yang memanggil secara dalaman makepkg. Pilihan untuk extra-x86_64-buildmerangkumi yang berikut:

  • -c: Bersihkan chroots, dengan membuang dan mencipta semula keseluruhan /var/lib/archbuild/extra-x86_64/direktori, termasuk chroot yang bersih dan semua direktori chroot bina. Ini jarang diperlukan, hanya jika chroot bersih rosak, atau jika Devtools ditingkatkan dengan cara yang mematahkan keserasian ke belakang.
  • -r <dir>: Gunakan direktori yang berbeza daripada /var/lib/archbuild/extra-x86_64/mengandungi chroots.

Apa-apa hujah extra-x86_64-buildselepas --itu diserahkan kepada makechrootpkg, apabila menggunakannya secara dalaman. Beberapa hujah-hujah yang sentiasa secara automatik dipindahkan dari extra-x86_64-buildke makechrootpkg. Hujah-hujah automatik ini -r <value given to extra-x86_64-build -r option if given, /var/lib/archbuild/extra-x86_64 otherwise> -c -n. Mereka memberitahu makechrootpkguntuk menghapuskan chroot binaan dan menjadikannya salinan segar chroot yang bersih, dan untuk menjalankan namcappakej jika ia berjaya membina. Pilihan yang biasa digunakan yang boleh diluluskan makechrootpkgadalah -l <copy name>. Ini adalah nama direktori untuk memberi chroot binaan, bukannya <USERNAME>, yang berguna untuk mengekalkan beberapa salinan atau menyusun pelbagai pakej pada masa yang sama.

Sebarang hujah untuk makechrootpkgselepas --diluluskan untuk makepkg, apabila dalaman menggunakannya untuk membina pakej. Kali pertama makepkgdijalankan makechrootpkg, ia dilakukan dengan pilihannya sendiri yang tidak dapat ditukar, untuk memuat turun fail sumber, jika diperlukan, dan melakukan pemeriksaan integriti; oleh itu tidak ada yang dapat diteruskan dalam jangka masa ini. Ia berjalan makepkguntuk kali kedua untuk membina pakej, dan selalu secara automatik melepasi makepkghujah-hujah --syncdeps --noconfirm --log --holdver --skipintegyang memberitahu makepkg, di dalam chroot binaan, secara automatik memasang kebergantungan yang hilang yang diperlukan untuk membina dan menggunakan pakej, tidak meminta konfirmasi semasa pacman, log proses binaan ke teks file sebagai tambahan stdout, jangan perbarui kod sumber jika dalam sistem kontrol versi dan tidak melakukan pemeriksaan pengesahan file sumber.

Anda boleh menghubungkannya dengan menggunakan borang berikut:

$ extra-x86_64-build <DEVTOOLS-OPTIONS> -- <MAKECHROOTPKG-OPTIONS> -- <MAKEPKG-OPTIONS>

Perhatikan bahawa /var/lib/archbuildboleh diperlakukan seolah-olah itu adalah direktori sementara. Jika anda mempunyai pemacu keras Vultr yang banyak, adalah berguna untuk melancarkan sistem fail RAID0 (stripe) di sini. Sekiranya anda mempunyai banyak RAM, anda juga boleh memasang sistem fail yang disokong RAM seperti tmpfs. Setelah pakej dibina, ia disalin ke direktori yang anda jalankan extra-x86_64-builddan jika anda mahu, pada ketika ini anda boleh memadam /var/lib/archbuild. Pelaksanaan seterusnya akan lebih perlahan, kerana ia perlu membuat akar bersih baru. Sebagai alternatif, anda boleh memadam /var/lib/archbuild/<USERNAME>untuk mendapatkan kembali ruang tambahan dari chroot build sebelum ia dihapuskan secara automatik oleh menjalankan Devtools seterusnya. Oleh itu, walaupun sistem RAID0 dipasang di sini gagal, yang paling banyak anda akan kehilangan adalah penyusunan dalam proses.

Fail Konfigurasi Devtools

Terdapat beberapa perkara yang perlu diperhatikan dengan fail konfigurasi Devtools. Mereka terletak di /usr/share/devtools/, seperti makepkg-x86_64.confdan pacman-extra.conf:

  • Untuk /etcfail seperti makepkg.confdan pacman.conf, anda boleh mengeditnya dengan selamat di tempatnya, dan apabila pakej ditingkatkan, ia tidak akan menimpa perubahan anda. Sebaliknya ia akan menyimpan fail konfigurasi baru (jika mereka berubah dari versi terdahulu) yang berakhir dengan .pacnew. Walau bagaimanapun, fail konfigurasi Devtools /usr/share/tidak bertujuan untuk diedit pengguna, jadi apabila Devtools dinaik taraf, ia akan menggantikan semua perubahan anda kepada fail-fail ini tanpa menyedarkan anda. Perubahan terhadap tingkah laku ini telah diusulkan dan ditolak, kerana ini membantu memastikan pakej dihantar ke repositori rasmi semuanya dengan tetapan kompilasi yang sama.
  • Nilai untuk MAKEFLAGS, PACKAGERdan {SRC,SRCPKG,PKG,LOG}DESTdiambil daripada /etc/makepkg.confbukan /usr/share/devtools/makepkg-x86_64.conf.

Repositori Tempatan

Jika anda sedang membina pakej yang mempunyai kebergantungan pada pakej lain yang telah anda bina, anda perlu menggunakan repositori setempat, supaya apabila pacmanberjalan di dalam chroot binaan, ia menemukan dependensi.

Untuk menyediakan repositori tempatan, rujuk bahagian "Repositori Tempatan" panduan ini .

Buat sasaran tersuai:

# ln -s archbuild /usr/bin/custom-x86_64-build
# cp /usr/share/devtools/pacman-{extra,custom}.conf

Edit /usr/share/devtools/pacman-custom.conf, dan tambahkan yang berikut pada akhir:

[archLocalRepo]
SigLevel = Optional TrustAll
Server = file:///archLocalRepo

Edit /etc/pacman.conf, dan tambahkan yang berikut. Ini memaksa direktori untuk mengikat dipasang di chroot:

CacheDir    = /var/cache/pacman/pkg/ /archLocalRepo/

Kini, bukannya menggunakan extra-x86_64-buildini:

$ custom-x86_64-build

Sekiranya anda sentiasa mahu menggunakan sasaran tersuai, anda boleh memadam /var/lib/archbuild/extra-x86_64-build/direktori jika ia wujud, kerana chroots kini akan masuk /var/lib/archbuild/custom-x86_64-build/.

Pakej Lebih Cepat

Nota membolehkan pembungkusan berulir melibatkan penyuntingan /usr/share/devtoolsfail konfigurasi, yang tidak disokong secara rasmi, jadi anda perlu melakukan perubahan ini setiap kali Devtools ditingkatkan.

Devtools menggabungkan keseluruhan pakej ke dalam format arkib. Secara lalai, ia .tar.xzmenggunakan benang tunggal untuk xzpemampatan.

Pada sistem multi CPU, anda boleh membenarkan xzpenggunaan beberapa utas dengan mengedit /usr/share/devtools/makepkg-x86_64.conf, dan mengubah baris berikut:

COMPRESSXZ=(xz -c -z -)

Untuk membenarkan seberapa banyak utas yang anda miliki inti maya:

COMPRESSXZ=(xz -c -z - --threads=0)

Untuk membenarkan penggunaan beberapa teras maya, tetapi tidak semuanya, untuk mengurangkan kesan terhadap prestasi keseluruhan sistem, tambahkan nombor tertentu:

COMPRESSXZ=(xz -c -z - --threads=21)

Menentukan lebih banyak benang daripada bilangan teras maya yang anda akan menurunkan prestasi.

Jika anda tidak keberatan fail pakej sedang (berpotensi banyak) lebih besar, matikan pemampatan dengan mengedit /usr/share/devtools/makepkg-x86_64.conf, dan ubah baris berikut:

PKGEXT='.pkg.tar.xz'

Tukarnya untuk kelihatan seperti berikut:

PKGEXT='.pkg.tar'


Leave a Comment

Sediakan Pelayan Counter-Strike: Global Offensive (CSGO) di Arch Linux

Sediakan Pelayan Counter-Strike: Global Offensive (CSGO) di Arch Linux

Tutorial ini menerangkan cara menyediakan Counter-Strike: Pelayan Serangan Global di Arch Linux. Tutorial ini menganggap bahawa anda log masuk dengan penggunaan biasa

Cara Memasang MongoDB 4.0 pada Arch Linux

Cara Memasang MongoDB 4.0 pada Arch Linux

Prasyarat Pelayan Vultr yang berjalan sehingga Arch Linux terkini (lihat artikel ini) Akses Sudo: Perintah yang diperlukan untuk dijalankan sebagai root diawali oleh #, dan satu

Sediakan Mumble Server pada Arch Linux

Sediakan Mumble Server pada Arch Linux

Tutorial ini menerangkan cara menyediakan pelayan Mumble (Murmur) di Arch Linux. Semua yang dilakukan dalam tutorial ini dilakukan sebagai pengguna root. Pemasangan sebuah

Memasang Arch Linux Pada Pelayan Vultr

Memasang Arch Linux Pada Pelayan Vultr

Vultr menyediakan fungsi hebat untuk membolehkan anda menggunakan gambar tersuai anda sendiri selain templatnya yang sangat baik, yang membolehkan anda menjalankan

Sediakan Pelayan Team Fortress 2 di Arch Linux

Sediakan Pelayan Team Fortress 2 di Arch Linux

Tutorial ini menerangkan cara menyediakan pelayan Team Fortress 2 di Arch Linux. Saya menganggap bahawa anda log masuk dengan akaun pengguna bukan root yang mempunyai akses sudo

Cara Memasang Perl 5.28 pada Pelayan Web Arch Linux

Cara Memasang Perl 5.28 pada Pelayan Web Arch Linux

Prasyarat Pelayan Vultr berjalan dengan up to date Arch Linux (lihat artikel ini.) Pelayar web yang menjalankan, sama ada akses Apache atau Nginx Sudo: Perintah memerlukan

Sediakan Spigot Server pada Arch Linux

Sediakan Spigot Server pada Arch Linux

Tutorial ini menerangkan cara menyediakan pelayan Minecraft menggunakan Spigot di Arch Linux. Tutorial ini menganggap bahawa anda adalah pengguna biasa (bukan root) dan mempunyai

Bagaimana untuk Memasang PHP 7.3 pada Webserver Arch Linux

Bagaimana untuk Memasang PHP 7.3 pada Webserver Arch Linux

Prasyarat Pelayan Vultr berjalan dengan up to date Arch Linux (lihat artikel ini.) Pelayar web yang menjalankan, sama ada akses Apache atau Nginx Sudo. Perintah memerlukan

Membangunkan Pakej pada Arch Linux (Termasuk AUR)

Membangunkan Pakej pada Arch Linux (Termasuk AUR)

Di Arch Linux, repositori rasmi adalah: teras, tambahan dan komuniti. Pakej-pakej ini telah disusun, dan mereka dipasang melalui pacman. Untuk th

Pasang Arch Linux Dengan Btrfs Snapshotting

Pasang Arch Linux Dengan Btrfs Snapshotting

Preface Arch Linux adalah sebaran tujuan umum yang terkenal dengan teknologi canggih dan konfigurasi yang fleksibel. Dengan snapshot Btrfs, kita dapat mengambil

Cara Menggunakan HTTPS pada Arch Linux Webserver

Cara Menggunakan HTTPS pada Arch Linux Webserver

Prasyarat Pelayan Vultr berjalan dengan up to date Arch Linux (lihat artikel ini.) Pelayar web yang berjalan, sama ada Apache atau Nginx Sudo akses Perintah yang diperlukan

Cara Pasang Nginx 1.14 Pada Arch Linux

Cara Pasang Nginx 1.14 Pada Arch Linux

Prasyarat Pelayan Vultr berjalan dengan up to date Arch Linux (lihat artikel ini.) Akses Sudo. Perintah yang diperlukan untuk dijalankan sebagai root adalah diawali oleh #. Th

Memasang 2019 Arch Linux pada Pelayan Vultr

Memasang 2019 Arch Linux pada Pelayan Vultr

Pengenalan Arch Linux mempunyai lebih kecil, tetapi masih kuat, berikutan daripada pengedaran yang lebih popular. Falsafahnya agak berbeza, dengan kelebihannya

Menggunakan Makepkg di Arch Linux

Menggunakan Makepkg di Arch Linux

Jika anda menggunakan makepkg secara langsung, ia mencemarkan sistem anda. Kumpulan pakej base-devel mesti dipasang. Dengan cara ini, secara lalai, kebergantungan diperlukan onl

Bagaimana Untuk Memasang Python 3.7 Pada Webserver Arch Arch Linux

Bagaimana Untuk Memasang Python 3.7 Pada Webserver Arch Arch Linux

Prasyarat Pelayan Vultr berjalan dengan up to date Arch Linux (lihat artikel ini.) Pelayar web yang menjalankan, sama ada akses Apache atau Nginx Sudo: Perintah memerlukan

Cara Memasang MariaDB 10.3 atau MySQL 8.0 pada Arch Linux

Cara Memasang MariaDB 10.3 atau MySQL 8.0 pada Arch Linux

Prasyarat Pelayan Vultr berjalan dengan up to date Arch Linux (lihat artikel ini.) Akses Sudo: Perintah yang diperlukan untuk dijalankan sebagai root diawali oleh #, dan satu

Cara Memasang Apache 2.4 pada Arch Linux

Cara Memasang Apache 2.4 pada Arch Linux

Prasyarat Pelayan Vultr berjalan dengan up to date Arch Linux. Lihat panduan ini untuk mendapatkan maklumat lanjut. Akses Sudo. Perintah perlu dijalankan sebagai root ar

Cara Pasang PostgreSQL 11.1 Di Arch Linux

Cara Pasang PostgreSQL 11.1 Di Arch Linux

Prasyarat Pelayan Vultr berjalan dengan up to date Arch Linux (lihat artikel ini.) Akses Sudo. Perintah yang dikehendaki dijalankan sebagai root dipersetujui oleh #, dan satu

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut