ไม่เหมือน Windows, macOS และ Android ซอฟต์แวร์บน Ubuntu - และ Linux โดยทั่วไป - ไม่ได้เผยแพร่เป็นแพ็กเกจเดียว แทนที่จะเป็นเช่นนั้น เมื่อคุณติดตั้งแอปพลิเคชัน Package Manager ของระบบจะดาวน์โหลดแพ็กเกจหลายตัว รวมถึงแพ็กเกจแอปหลักและ Dependencies ของมัน อย่างไรก็ตาม นี่เป็นจริงเฉพาะการติดตั้งแพ็กเกจแบบดั้งเดิมบน Linux เช่น การใช้ Package Managers
การรู้ว่ามี Dependencies เพิ่มเติมใดบ้างที่ดาวน์โหลดระหว่างการติดตั้ง อาจเป็นประโยชน์สำหผู้ใช้มือใหม่และขั้นสูงเหมือนกัน ดרךนี้ คนจะมีการควบคุมเต็มที่ต่อแพ็กเกจที่ติดตั้งบนระบบของพวกเขา
มา看看วิธีตรวจสอบ Dependencies ของแพ็กเกจบน Ubuntu
Package Dependencies คืออะไร?
Dependencies คือแพ็กเกจสนับสนุนที่จำเป็นสำหการทำงานที่ถูกต้องของแอปพลิเคชันใน Linux ตัวอย่างเช่น ถ้าคุณอยากดาวน์โหลด VLC Media Player บน Ubuntu APT จะติดตั้งแพ็กเกจเพิ่มเติมบางอย่างเช่น libc6 และ gcc นอกเหนือจากแพ็กเกจหลัก "vlc" Dependency อาจมีแพ็กเกจอื่นเป็น Dependencies ของมันด้วย ดังนั้นจึงสร้างโครงสร้างแบบลำดับชั้น
เนื่องจากแพ็กเกจ Linux อาศัยกันเกือบทุกซอฟต์แวร์ต้องการแพ็กเกจเพิ่มเติมที่คุณต้องติดตั้งบนระบบ
แม้ Package Managers อย่าง APT จะทำให้การจัดการและติดตั้ง Dependencies กล่าวๆ เป็นอัตโนมัติ ข้อผิดพลาดก็เกิดขึ้นเมื่อคุณพยายามสร้างแพ็กเกจด้วยตนเองจาก Source อย่างไรก็ตาม คุณแก้ไขข้อผิดพลาดแบบนี้ได้โดยการติดตั้ง Dependency ที่จำเป็นบนระบบของคุณด้วยคำสั่ง apt install
วิธีตรวจสอบ Package Dependencies ใน Linux
โชคดีที่บน Ubuntu มีหลายวิธีในการได้รายการ Dependencies ของแพ็กเกจ APT ตัวจัดการแพ็กเกจเริ่มต้นใน Ubuntu และดิสโทรที่พัฒนาจาก Debian เสนอคำสั่งหลายอย่างเพื่อข้อมูลเกี่ยวกับ Dependency ของแพ็กเกจ
ใช้ APT Package Manager
คุณใช้ APT ใน Ubuntu ได้เพื่อดูรายการ Dependencies ที่เกี่ยวข้องกับแพ็กเกจ ไวยากรณ์พื้นฐานของคำสั่งคือ:
sudo apt depends packagename
ตัวอย่างเช่น เพื่อตรวจสอบ Dependencies สำหแพ็กเกจ rhythmbox:
sudo apt depends rhythmbox
นอกจากรายการ Dependencies แล้ว เอาต์พุทจะรวมแพ็กเกจที่แนะนำและเสนอแนะที่คุณติดตั้งพร้อมกับ rhythmbox ได้
ทางเลือกอื่น คุณใช้คำสั่ง apt-cache เพื่อได้เอาต์พุตเดียวกัน
sudo apt-cache depends rhythmbox
เพื่อข้อมูลเพิ่มเติมเกี่ยวกับแพ็กเกจเฉพาะ ใช้เมธอด show แทน depends
sudo apt show rhythmbox
sudo apt-cache show rhythmbox
เอาต์พุท:
แสดง Dependencies ด้วย dpkg
ถ้าคุณดาวน์โหลดแพ็กเกจ DEB บนระบบและอยากรู้ว่า Dependencies ไหนจะติดตั้งพร้อมกับแพ็กเกจ คุณใช้แฟล็ก -I (i ตัวใหญ่ ไม่ใช่ L ตัวเล็ก) หรือ --info กับคำสั่ง
sudo dpkg -I /path/to/package.deb
sudo dpkg --info /path/to/package.deb
...ที่ /path/to/package.deb คือ Absolute หรือ Relative Path ไปยังไฟล์ DEB
เอาต์พุทจะแสดงขนาดแพ็กเกจ แหล่งที่มา และข้อมูลที่มีประโยชน์อื่นๆ พร้อมรายการ Dependencies
เพื่อได้รายการ Dependencies สำหแพ็กเกจที่ติดตั้งแล้ว ใช้แฟล็ก -s กับ dpkg ตัวอย่าง:
sudo dpkg -s firefox
เอาต์พุท:
ใช้ apt-rdepends
เพื่อเอาต์พุตที่ละเอียดกว่า คุณใช้ยูทิลิตี้ apt-rdepends ได้ เนื่องจากมันไม่มาติดตั้งมาก่อนบนดิสโทร Linux ส่วนใหญ่ คุณต้องติดตั้งด้วยตนเองบน Ubuntu ด้วย APT
sudo apt install apt-rdepends
ใช้รูปแบบคำสั่งต่อไปนี้เพื่อได้ Dependency Tree สำหแพ็กเกจ:
apt-rdepends packagename
ตัวอย่าง:
apt-rdepends vlc
เอาต์พุท:
เอาต์พุทที่สร้างขึ้นทั่วไปจะยาว เพราะ apt-rdepends แสดง Dependency Tree ครบถ้วน หมายความว่าคุณยังได้รายการ Dependencies ของ Dependency ด้วย
คุณยังได้รายการแพ็กเกจที่พึ่งพาแพ็กเกจเฉพาะตัวได้ ตัวอย่างเช่น เพื่อตรวจสอบว่าแพ็กเกจไหนต้องการ libc เป็น Dependency:
apt-rdepends -r libc
เอาต์พุท:
ยูทิลิตี้ Reverse-depends
แม้ฟีเจอร์ Reverse Dependency (แฟล็ก -r) ของ apt-rdepends ทำงานได้ดีกว่าคาดหมาย ยังมีอีกยูทิลิตี้หนึ่งที่คุณใช้สกัด Reverse Dependencies ของแพ็กเกจได้ คำสั่ง Reverse-depends เป็นส่วนของแพ็กเกจ ubuntu-dev-tools และดาวน์โหลดได้ด้วย:
sudo apt install ubuntu-dev-tools
ไวยากรณ์เริ่มต้นของคำสั่งคือ:
reverse-depends options packagename
...ที่ options คือแฟล็กที่คุณใช้กับคำสั่ง และ packagename คือชื่อแพ็กเกจที่คุณต้องการตรวจสอบ Reverse Dependencies
คุณเพิ่มแฟล็กต่างๆ ให้คำสั่งข้างต้นเพื่อปรับแต่งเอาต์พุทได้ นี่คือรายการตัวเลือกที่มีประโยชน์ที่สุด:
- -R: แสดงเฉพาะ Direct Dependencies (ไม่รวม Suggested หรือ Recommended Packages)
- -s: รวม Suggested Packages
- -l: นำเสนอเอาต์พุทในรูปแบบที่สะอาด เหมาะสำหการใช้ในสคริปต์
ในกรณีที่คุณไม่ समझวิธีใช้เครื่องมือและต้องการช่วยเหลือบรรทัดคำสั่ง ใช้แฟล็ก --help หรือ -h
reverse-depends -h
reverse-depends --help
ได้รายการ Dependencies ด้วยการติดตั้ง/ลบจำลอง
สำหผู้ที่อยากได้รายการสั้นของ Dependencies ทั้งหมดที่ยังไม่ได้ติดตั้งบนระบบ คุณรันการติดตั้งจำลอง (หรือการถอนการติดตั้งจำลอง) ของแพ็กเกจเฉพาะได้
เพื่อตรวจสอบ Dependencies ที่แพ็กเกจ PHP ต้องการ ตัวอย่างเช่น ให้รันคำสั่งต่อไปนี้:
sudo apt install -s php
เอาต์พุทจะมีส่วน "The following additional packages will be installed" ชื่อแพ็กเกจทั้งหมดที่ระบุเพิ่มเติมคือ Dependencies ที่ไม่พบบนระบบของคุณ
ถ้าคุณอยากได้รายการ Dependencies สำหแพ็กเกจที่ติดตั้งแล้วบน Ubuntu คุณทำการถอนการติดตั้งจำลองเพื่อตรวจสอบว่าแพ็กเกจเพิ่มเติมไหนจะถูกลบพร้อมกับมัน
sudo apt remove -s packagename
ตัวอย่าง:
sudo apt remove -s rhythmbox
เอาต์พุท:
แพ็กเกจ Linux อาศัยกันซ้ำกัน
เช่นที่คุณสรุปได้อย่างสมเหตุสมผลจากคู่มือนี้ เกือบทุกแพ็กเกจ Linux ขึ้นอยู่กับแพ็กเกจอื่น 原則หลักเบื้องหลังแนวคิดนี้คือบนระบบปฏิบัติการที่พัฒนาจาก Linux แต่ละแพ็กเกจควรทำงานเดียว และทำได้ดี
ถ้าแพ็กเกจพัฒนาขึ้นสำหจัดการบริการเสียง โปรแกรมอื่นๆ จะแค่ระบุแพ็กเกจดังกล่าวเป็น Dependency ของพวกเขา และใช้มันเพื่อตอบสนองความต้องการด้านเสียงของพวกเขา
นอกจากนี้ ถ้าหลายแอปพลิเคชันต้องการแพ็กเกจเดียวกัน มันจะติดตั้งเพียงครั้งเดียวบนระบบ ป้องกันความซ้ำซ้อนของข้อมูลและประหยัดพื้นที่จัดเก็บบนดิสก์ คุณยังได้รายการแพ็กเกจที่ติดตั้งอยู่ทั้งหมดบนระบบของคุณด้วย APT