Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

Binary Packages vs Source Packages: ควรใช้แบบไหน?

ไม่ว่าจะ Package Manager ไหน มี 2 วิธีหลักติดตั้งโปรแกรมบน Linux: 1) Pre-built Package (Binary) 2) Compile เองจาก Source Code ตอนนี้ Binary ชนะ Default แต่บางครั้งควรพิจารณา Compile from Source

Binary Packages คืออะไร?

Binary Packages vs Source Packages: ควรใช้แบบไหน?

ติดตั้งโปรแกรม Linux ต่าง Windows แทนที่โหลด Installer จากเว็บ Vendor ไฟล์มาจาก Repository โปรแกรมที่ Tailored ให้ Distro ของคุณ เข้าถึงผ่าน Package Manager หรือ App Store

ไฟล์ใน Repositories อยู่ใน Archive Format Bundle ทุกอย่างใน Single File เพื่อ Easy Access/Distribution Debian ใช้ DEB Format เรียก Bundles นี้ว่า Binary Packages

ต้องโปรแกรมพิเศษ Extract และ Install (Package Manager/App Store) Tools นี้ทำอีก: Track Installed Files, Manage Updates

Packages มาจากไหน?

Software ทั้งหมด = Source Code (Lines of Text) ภาษา C, C++ ไม่สามารถ Bundle Source Code เรียกว่า Package ได้ ต้อง Translate ให้ Computer เข้าใจ/Execute

Process นี้ = Compiling ผลลัพธ์ = Binaries ที่ Computer รันได้ ความแตกต่าง Package และ Software: Software Binaries เก็บใน Package พร้อม Config Files อื่นๆ

Installing "From Source" คืออะไร?

Binary Packages vs Source Packages: ควรใช้แบบไหน?

Install "From Source" = Install โปรแกรมโดยไม่ใช้ Package Manager Compile Source Code เอง Copy Binaries ไปเครื่อง

ส่วนใหญ่ Download Source Code จาก GitHub, GitLab, Bitbucket โปรแกรมใหญ่ Host บน Website โค้ดมัก Zip ใน Archive (เรียกว่า Source Package)

Tools ช่วย Automate Build: Linux Desktop มักเป็น CLI Program make Source Code ภาษาต่างๆ ต้อง Compiler/Commands เฉพาะ make Automate นี้

Make ต้องการ Makefile บอกว่าทำอะไร/Compile อะไร ตอนนี้ Auto-generated โดย CMake ที่นี่คุณเข้ามา: ระบุ Features ที่ต้องการ Compile เข้า Software

ตัวอย่าง Build From Source

คำสั่งด้านล่าง Generate Config File สำหรับ Calligra Office Suite ด้วย CMake ไฟล์สั่ง make Compile แค่ Writer Component:

cmake -DPRODUCTSET=WORDS -DCMAKE_INSTALL_PREFIX=$HOME/kde/inst5 $HOME/kde/src/calligra

จากนั้นรัน make Compile และ Copy Results:

make
make install

Pattern นี้ทั่วไป แต่มีหลายวิธี Install Source Packages Gentoo Linux มี Built-in Way จัดการนี้ -> เร็ว/ง่ายกว่า แต่ Build Binary Packages ต้อง Steps มากกว่านี้

ประโยชน์ของ Binary Packages

ใช้ Linux -> คนอื่น Pre-compile Software ให้แล้ว มากกว่า Source Packages มาก ทำไม?

Binary Versions จัดการง่ายกว่า

Binary Packages vs Source Packages: ควรใช้แบบไหน?

Binary Packages มีมากกว่า Compiled Files: เก็บ Info ทำให้ Package Manager Track Programs ได้ง่าย DEB Files (Debian/Debian-based) เก็บ: Dependencies (Software อื่นที่ต้องการ), Current Version

ติดตั้งง่าย: ไม่ต้องกังวล Dependencies Package Manager อ่านจาก Package เอง Download Dependencies Auto

Install From Source: ยกเว้น Compile เป็น Binary Package เอง คุณ จัดการ Software เอง ต้องจำ Dependencies ติดตั้งเอง

Binary Versions มี Stability ดีกว่า

Maintainers ของ Repositories Test Binaries หา Issues Fix มากที่สุด -> Improved Stability คน Install จาก Source อาจพลาด

Packages ต้อง Follow Strict Rules ให้รันบนระบบได้ Debian/Ubuntu มี Policy Manual Distro อื่นก็มี

บางโปรแกรมต้อง Dependency Versions ต่างกัน Repositories Resolve Conflicts ให้ -> คุณไม่ต้องกังวล

ประโยชน์ของ Compile Source Packages

Install From Source ไม่ใช่ทุกคนต้องทำ ใช้ Binary Packages สะดวกกว่ามาก แต่ยังมี Advantages:

Source Code ให้ Latest Software

Disadvantage ของ Reliability: ใช้เวลา Improve/Fix -> ใช้ Older Versions คนอยาก Latest -> อาจรับ Instability แลกมา

มี Linux OS คุ้มครองความต้องการนี้โดยไม่ Compile แต่มี Drawbacks: Software ที่ไม่ Release Package Versions บ่อย -> ยาก Update ใน Repo มากกว่า Install From Source

เพราะ Binary Packages ทำจาก Official Releases Changes ระหว่าง Versions ไม่นับรวม Compile เอง -> Benefit จาก Changes ทันที

อาจเป็นไปได้ Distro ไม่มี Software ที่อยาก Pre-made -> Install From Source = Only Option

Pick and Choose Features ได้

Binary Packages vs Source Packages: ควรใช้แบบไหน?

Source Packages ให้ Control มากกว่า Binary Repo: Restricted Customization

ตัวอย่าง: FFmpeg Audio/Video Converter CLI Default: Features เยอะมาก บางอย่างไม่เคยใช้ เช่น JACK Audio Support (Production Environments Only)

Compile FFmpeg เอง -> Remove Features ไม่ต้องการ -> Lighter/Tailored ต้องการเฉพาะ Same Applies Heavyweight Programs อื่นๆ

Resources Scarce -> Remove Features = Lighten Load Chrome OS (Low-end Computers) Based on Gentoo Linux Gentoo Source-based Compile มาก -> Systems รันได้ Lighter

ทำไมไม่ใช้ทั้งคู่?

Compile Packages ทุกวันไม่จำเป็น แต่ Good to Keep in Mind Universal Package Formats ใหม่จาก Snap Store, Flathub -> น้อยลงที่ต้อง Build From Source เพื่อ Latest Software