Menggunakan Devtools di Arch Linux

Paket Devtools awalnya dibuat untuk Pengguna Tepercaya untuk membuat paket dengan benar untuk repositori resmi. Namun, itu dapat digunakan oleh pengguna biasa juga untuk membangun paket AUR, atau bahkan paket resmi yang dimodifikasi.

Lihat panduan ini untuk memahami dan menggunakan AUR secara umum, termasuk mendapatkan PKGBUILD. Doc ini hanya menunjukkan langkah-langkah khusus untuk Devtools, jika itu adalah metode yang Anda pilih untuk mengkompilasi sebuah paket.

Devtools memelihara instalasi Arch bersih terpisah, terletak di /var/lib/archbuild/<TARGET>/root, yang hanya berisi grup paket basedan base-devel. Jika instalasi bersih ini tidak ada, maka secara otomatis akan membuatnya. Jika memang ada, maka secara otomatis memperbarui paket apa pun di dalamnya. Ketika Devtools digunakan untuk membangun sebuah paket, itu dimulai dengan salinan instalasi bersih ini, menginstal paket-paket yang diperlukan ke dalam salinan saja, menyalin kode sumber ke dalamnya, melakukan kompilasi dan pengemasan di dalamnya, dan hanya menyalin paket yang dihasilkan, dalam bentuk identik dari apa yang ditemukan di repositori resmi.

Ada keuntungan bagi Devtools daripada berlari makepkglangsung. Salah satu keuntungannya adalah base-develpaket-paket lain yang diperlukan untuk dikompilasi, tetapi tidak dijalankan, paket yang Anda buat tidak pernah berakhir di sistem utama Anda. Itu lebih sedikit paket yang harus ditingkatkan secara berkala, dan memiliki keprihatinan tentang. Meskipun pada dasarnya bermanfaat bagi pengelola paket Arch, proses ini dengan mudah memaparkan bila ada PKGBUILDyang tidak benar, seperti jika ketergantungan dilewatkan dari daftar yang kebetulan telah dipelihara oleh pengelola di sistem utama mereka. Anda juga dapat menggunakan mesin yang lebih cepat dalam membangun paket, dan menyalin paket yang dihasilkan ke mesin yang lebih lambat yang akan menjalankannya, tanpa mencemari instalasi mesin bangunan.

Kerugian utama adalah bahwa root bersih selalu ada, mengambil sekitar 800MB, dan biasanya satu salinan ada mengambil lebih banyak ruang. Catatan, jika /var/lib/archbuild/menggunakan Btrfs, salinan root bersih dimulai dari snapshot Btrfs, sehingga file-file tersebut tidak mengambil dua kali lipat ruang. Root bersih selalu disimpan di sana untuk menghindari menginstal ulang setiap kali paket dibuat.

Kompilasi Menggunakan Devtools

Instal Devtools:

# pacman -S devtools

Untuk membangun sebuah paket, Devtools menyertakan archbuild, tetapi Anda tidak menjalankannya secara langsung. Ini juga termasuk symlinks {extra, gnome-unstable, kde-unstable, staging, testing}-x86_64-build. Symlink yang sedang digunakan untuk menjalankannya akan diperiksa oleh archbuild, untuk menentukan target mana yang ingin Anda gunakan. Dapat dijalankan untuk menggunakan repositori yang tidak stabil / pementasan / pengujian ini, yang mungkin memiliki versi yang lebih baru daripada yang telah dirilis ke repositori resmi. Untuk menggunakan repositori resmi untuk paket non-AUR, dalam direktori dengan PKGBUILD, misalnya direktori yang dibuat oleh git clone, jalankan yang berikut ini:

$ extra-x86_64-build

Catatan: Sisa panduan ini hanya akan merujuk extra-x86_64-build.

Setelah selesai berjalan, berikut ini adalah hasilnya:

  • /var/lib/archbuild/extra-x86_64/root- Chroot bersih , yang merupakan instalasi terkini dengan hanya grup paket basedan base-devel.
  • /var/lib/archbuild/extra-x86_64/<USERNAME>- Ini akan berisi build chroot . Ini adalah salinan chroot bersih dengan semua dependensi yang diperlukan untuk membangun atau menjalankan paket yang sedang dibangun, serta kode sumbernya, hasil kompilasi, dan paket.
  • Direktori tempat Anda akan berisi paket dan membuat file log, serta kode sumber yang diunduh.

Pada akhirnya, Anda mungkin memperhatikan " Checking PKGBUILD", dan " Checking <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz". Setiap baris setelah ini adalah keluaran dari namcap, yang secara otomatis mencari masalah seperti PKGBUILDfile cacat , dependensi termasuk bahwa paket tampaknya tidak digunakan, dependensi tidak termasuk bahwa paket tampaknya digunakan, dan banyak lagi. Positif palsu sering dihasilkan oleh namcap, tetapi merupakan alat yang hebat untuk memberikan sesuatu untuk diselidiki. Jika paket Anda bekerja dengan benar, itu bukan ide yang baik untuk mengingatkan pengelola untuk namcapoutput, kecuali jika Anda sudah melihatnya dan memverifikasi perubahan harus dilakukan.

Anda dapat menggunakan pacmanuntuk menginstal paket, yang akan menginstal semua dependensi yang diperlukan untuk menjalankan paket selama mereka berada di repositori resmi atau repositori lokal.

Gunakan Repositori Lokal seperti yang dijelaskan di sini , atau instal file secara langsung:

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

Jika Anda menjalankan extra-x86_64-buildlagi, sekarang, atau kapan saja nanti dengan paket ini atau yang lain, itu akan memperbarui chroot bersih jika diperlukan, menghapus build chroot dan menjadikannya salinan baru chroot bersih, dan melakukan proses yang sama. Jika direktori Anda masih memiliki kode sumber yang diunduh dari terakhir kali, itu akan menggunakannya. Jika paket tersebut adalah paket AUR pengembangan, itu akan menarik perubahan baru daripada mengkloning kembali.

Secara internal, extra-x86_64-buildberjalan makechrootpkg, yang memanggil secara internal makepkg. Pilihan untuk extra-x86_64-buildmeliputi:

  • -c: Bersihkan chroot, dengan menghapus dan membuat ulang seluruh /var/lib/archbuild/extra-x86_64/direktori, termasuk chroot bersih dan semua direktori chroot build. Ini jarang diperlukan, hanya jika chroot bersih rusak, atau jika Devtool ditingkatkan dengan cara yang merusak kompatibilitas ke belakang.
  • -r <dir>: Gunakan direktori yang berbeda dari yang /var/lib/archbuild/extra-x86_64/mengandung chroot.

Setiap argumen untuk extra-x86_64-buildsetelah --diteruskan ke makechrootpkg, ketika menggunakannya secara internal. Beberapa argumen selalu secara otomatis diteruskan dari extra-x86_64-buildke makechrootpkg. Argumen otomatis ini adalah -r <value given to extra-x86_64-build -r option if given, /var/lib/archbuild/extra-x86_64 otherwise> -c -n. Mereka mengatakan makechrootpkguntuk menghapus build chroot dan membuatnya menjadi salinan baru clean chroot, dan menjalankannya namcappada paket jika berhasil membangun. Opsi yang umum digunakan yang dapat diteruskan makechrootpkgadalah -l <copy name>. Ini adalah nama direktori untuk memberikan build chroot, sebagai ganti <USERNAME>, yang berguna untuk memelihara banyak salinan atau mengkompilasi beberapa paket pada saat yang bersamaan.

Setiap argumen makechrootpkgsetelah --dilewatkan ke makepkg, ketika secara internal menggunakannya untuk membangun paket. Pertama kali makepkgdijalankan oleh makechrootpkg, dilakukan dengan opsi sendiri yang tidak dapat diubah, untuk mengunduh file sumber, jika perlu, dan melakukan pemeriksaan integritas; dengan demikian tidak ada yang bisa diteruskan dalam menjalankan ini. Ini menjalankan makepkgkedua kalinya untuk membangun paket, dan selalu secara otomatis melewati makepkgargumen --syncdeps --noconfirm --log --holdver --skipintegyang memberitahu makepkg, dalam build chroot, secara otomatis menginstal dependensi yang hilang yang diperlukan untuk membangun dan menggunakan paket, tidak untuk meminta konfirmasi selama pacman, log proses build ke teks file tambahan stdout, jangan perbarui kode sumber jika dalam sistem kontrol versi dan tidak melakukan pemeriksaan verifikasi file sumber.

Anda dapat menggabungkan ini bersama-sama dengan menggunakan formulir berikut:

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

Catatan yang /var/lib/archbuilddapat diperlakukan seolah-olah itu adalah direktori sementara. Jika Anda memiliki banyak hard drive Vultr, ada baiknya untuk memasang sistem file RAID0 (stripe) di sini. Jika Anda memiliki banyak RAM, Anda juga dapat memasang sistem file seperti RAM yang didukung tmpfs. Setelah sebuah paket dibuat, itu disalin ke direktori tempat Anda berlari extra-x86_64-builddan jika Anda mau, pada titik ini Anda dapat menghapus /var/lib/archbuild. Proses selanjutnya akan lebih lambat, karena itu perlu membuat root bersih baru. Atau, Anda dapat menghapus /var/lib/archbuild/<USERNAME>untuk mendapatkan kembali ruang ekstra dari build chroot sebelum dihapus secara otomatis oleh menjalankan Devtools berikutnya. Jadi, bahkan jika Anda memiliki sistem file RAID0 yang dipasang di sini gagal, yang paling Anda akan kehilangan adalah kompilasi dalam proses.

File Konfigurasi Devtools

Ada beberapa spesifik yang perlu diperhatikan dengan file konfigurasi Devtools. Mereka berada di /usr/share/devtools/, seperti makepkg-x86_64.confdan pacman-extra.conf:

  • Untuk /etcfile seperti makepkg.confdan pacman.conf, Anda dapat mengeditnya dengan aman, dan ketika paket ditingkatkan, itu tidak akan menimpa perubahan Anda. Sebaliknya itu akan menyimpan file konfigurasi baru (jika mereka berubah dari versi sebelumnya) berakhir dengan .pacnew. Namun, file konfigurasi Devtools di /usr/share/mana tidak dimaksudkan untuk diedit oleh pengguna, jadi ketika Devtools ditingkatkan, itu akan sepenuhnya menimpa perubahan Anda ke file-file ini tanpa memberi tahu Anda. Perubahan pada perilaku ini telah diusulkan dan ditolak, karena ini membantu memastikan paket dikirim ke repositori resmi semua dengan pengaturan kompilasi yang sama.
  • Nilai untuk MAKEFLAGS,, PACKAGERdan {SRC,SRCPKG,PKG,LOG}DESTdiambil dari /etc/makepkg.confbukan /usr/share/devtools/makepkg-x86_64.conf.

Repositori Lokal

Jika Anda membangun paket yang memiliki dependensi pada paket lain yang Anda buat, Anda perlu menggunakan repositori lokal, sehingga ketika pacmandijalankan di dalam build chroot, ia akan menemukan dependensinya.

Untuk menyiapkan repositori lokal, lihat bagian "Repositori Lokal" panduan ini .

Buat target khusus:

# 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 di akhir:

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

Edit /etc/pacman.conf, dan tambahkan berikut ini. Ini memaksa direktori untuk diikat di chroot:

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

Sekarang, daripada menggunakan extra-x86_64-buildgunakan ini:

$ custom-x86_64-build

Jika Anda selalu ingin menggunakan target kustom, Anda dapat menghapus /var/lib/archbuild/extra-x86_64-build/direktori jika ada, karena chroot sekarang akan masuk /var/lib/archbuild/custom-x86_64-build/.

Paket lebih cepat

Catatan mengaktifkan kemasan berulir melibatkan pengeditan /usr/share/devtoolsfile konfigurasi, yang tidak didukung secara resmi, jadi Anda harus melakukan perubahan ini setiap kali Devtools ditingkatkan.

Devtools menggabungkan seluruh paket ke dalam format arsip. Secara default, itu membuat .tar.xzmenggunakan utas tunggal untuk xzkompresi.

Pada sistem multi-CPU, Anda dapat mengizinkan xzuntuk menggunakan banyak utas dengan mengedit /usr/share/devtools/makepkg-x86_64.conf, dan mengubah baris berikut:

COMPRESSXZ=(xz -c -z -)

Untuk mengizinkan sebanyak mungkin utas yang memiliki inti virtual:

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

Untuk mengizinkan penggunaan beberapa inti virtual, tetapi tidak semuanya, sehingga mengurangi dampak pada kinerja sistem secara keseluruhan, tambahkan angka tertentu:

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

Menentukan lebih banyak utas daripada jumlah inti virtual yang Anda miliki akan menurunkan kinerja.

Jika Anda tidak keberatan file paket menjadi (berpotensi jauh) lebih besar, nonaktifkan kompresi dengan mengedit /usr/share/devtools/makepkg-x86_64.conf, dan ubah baris berikut:

PKGEXT='.pkg.tar.xz'

Ubah agar terlihat seperti berikut:

PKGEXT='.pkg.tar'


Leave a Comment

Cara Menginstal PostgreSQL 11.1 Di Arch Linux

Cara Menginstal PostgreSQL 11.1 Di Arch Linux

Prasyarat Server Vultr berjalan terbaru Arch Linux (lihat artikel ini.) Akses Sudo. Perintah yang diperlukan untuk dijalankan karena root diawali oleh #, dan satu

Cara Memasang Nginx 1.14 Di Arch Linux

Cara Memasang Nginx 1.14 Di Arch Linux

Prasyarat Server Vultr berjalan terbaru Arch Linux (lihat artikel ini.) Akses Sudo. Perintah yang harus dijalankan sebagai root diawali oleh #. Th

Cara Memasang MongoDB 4.0 di Arch Linux

Cara Memasang MongoDB 4.0 di Arch Linux

Prasyarat Server Vultr berjalan terbaru Arch Linux (lihat artikel ini) Akses Sudo: Perintah yang diperlukan untuk dijalankan karena root diawali oleh #, dan satu

Cara Memasang MariaDB 10.3 atau MySQL 8.0 di Arch Linux

Cara Memasang MariaDB 10.3 atau MySQL 8.0 di Arch Linux

Prasyarat Server Vultr berjalan terbaru Arch Linux (lihat artikel ini.) Akses Sudo: Perintah yang diperlukan untuk dijalankan karena root diawali oleh #, dan satu

Setup Mumble Server di Arch Linux

Setup Mumble Server di Arch Linux

Tutorial ini menjelaskan cara menyiapkan server Mumble (Murmur) di Arch Linux. Semua yang dilakukan dalam tutorial ini dilakukan sebagai pengguna root. Instalasi a

Cara Memasang Perl 5.28 di Server Web Arch Linux

Cara Memasang Perl 5.28 di Server Web Arch Linux

Prasyarat Server Vultr berjalan terbaru Arch Linux (lihat artikel ini.) Server web yang berjalan, baik akses Apache atau Nginx Sudo: Diperlukan perintah

Instal Arch Linux Dengan Btrfs Snapshotting

Instal Arch Linux Dengan Btrfs Snapshotting

Pendahuluan Arch Linux adalah distribusi serba guna yang terkenal dengan teknologi mutakhir dan konfigurasi yang fleksibel. Dengan snapshot Btrfs, kita dapat mengambil

Menyiapkan Counter-Strike: Global Offensive (CSGO) Server di Arch Linux

Menyiapkan Counter-Strike: Global Offensive (CSGO) Server di Arch Linux

Tutorial ini menjelaskan cara menyiapkan server Counter-Strike: Global Offensive di Arch Linux. Tutorial ini mengasumsikan bahwa Anda masuk dengan penggunaan standar

Menginstal Arch Linux pada Server Vultr

Menginstal Arch Linux pada Server Vultr

Vultr memberi Anda fungsionalitas luar biasa yang memungkinkan Anda menggunakan gambar khusus Anda sendiri di samping templat luar biasa mereka, yang memungkinkan Anda untuk menjalankan

Setup Spigot Server di Arch Linux

Setup Spigot Server di Arch Linux

Tutorial ini menjelaskan cara mengatur server Minecraft menggunakan Spigot di Arch Linux. Tutorial ini mengasumsikan bahwa Anda adalah pengguna normal (bukan-root) dan hav

Menginstal 2019 Arch Linux pada Server Vultr

Menginstal 2019 Arch Linux pada Server Vultr

Pendahuluan Arch Linux memiliki distribusi yang lebih kecil, tetapi masih kuat, daripada distribusi yang lebih populer. Filosofinya sangat berbeda, dengan kelebihan an

Cara Memasang PHP 7.3 pada Server Linux Arch

Cara Memasang PHP 7.3 pada Server Linux Arch

Prasyarat Server Vultr berjalan terbaru Arch Linux (lihat artikel ini.) Server web yang berjalan, baik akses Apache atau Nginx Sudo. Memerlukan perintah

Menggunakan Makepkg di Arch Linux

Menggunakan Makepkg di Arch Linux

Jika Anda menggunakan makepkg secara langsung, itu agak mencemari sistem Anda. Grup paket base-devel harus diinstal. Dengan cara ini, secara default, dependensi diperlukan onl

Cara Menggunakan HTTPS di Arch Linux Webserver

Cara Menggunakan HTTPS di Arch Linux Webserver

Prasyarat Server Vultr yang terbaru Arch Linux (lihat artikel ini.) Server web yang sedang berjalan, baik Apache atau Nginx Sudo access, Memerlukan Perintah t

Paket Bangunan di Arch Linux (Termasuk AUR)

Paket Bangunan di Arch Linux (Termasuk AUR)

Di Arch Linux, repositori resmi adalah: inti, ekstra, dan komunitas. Paket-paket ini sudah dikompilasi, dan mereka diinstal melalui pacman. Untuk th

Cara Memasang Apache 2.4 di Arch Linux

Cara Memasang Apache 2.4 di Arch Linux

Prasyarat Server Vultr berjalan terbaru Arch Linux. Lihat panduan ini untuk informasi lebih lanjut. Akses sudo. Perintah harus dijalankan sebagai root ar

Cara Memasang Python 3.7 Pada Server Webser Arch Linux

Cara Memasang Python 3.7 Pada Server Webser Arch Linux

Prasyarat Server Vultr berjalan terbaru Arch Linux (lihat artikel ini.) Server web yang berjalan, baik akses Apache atau Nginx Sudo: Diperlukan perintah

Menyiapkan Server Team Fortress 2 di Arch Linux

Menyiapkan Server Team Fortress 2 di Arch Linux

Tutorial ini menjelaskan cara mengatur server Team Fortress 2 di Arch Linux. Saya berasumsi bahwa Anda masuk dengan akun pengguna non-root yang memiliki akses sudo

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

6 Hal yang Sangat Menggila dari Nintendo Switch

6 Hal yang Sangat Menggila dari Nintendo Switch

Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.

Janji Teknologi Yang Masih Belum Ditepati

Janji Teknologi Yang Masih Belum Ditepati

Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Baru-baru ini Apple merilis macOS Catalina 10.15.4 pembaruan suplemen untuk memperbaiki masalah tetapi tampaknya pembaruan menyebabkan lebih banyak masalah yang mengarah ke bricking mesin mac. Baca artikel ini untuk mempelajari lebih lanjut