Package Management ด้วย apt และ apt-get บน Linux

Package Manager คือเครื่องมือที่ช่วยให้ Admin ติดตั้ง อัพเดต และลบซอฟต์แวร์บน Linux ได้อย่างสะดวก บน Debian-based Distribution เช่น Ubuntu, Debian และ Linux Mint ใช้ระบบ APT (Advanced Package Tool) ซึ่งมีสองคำสั่งหลักคือ apt-get (คำสั่งดั้งเดิม) และ apt (คำสั่งใหม่ที่เหมาะกับการใช้งาน Interactive)

บทความนี้อธิบายคำสั่ง apt และ apt-get ที่ใช้บ่อยในงานจริง รวมถึงการจัดการ Repository, Dependency และ Best Practices สำหรับ Production Server

apt vs apt-get — ความแตกต่าง

apt เป็น Frontend ที่รวมคำสั่งจาก apt-get และ apt-cache มาไว้ด้วยกัน พร้อม Output ที่อ่านง่ายขึ้นและมี Progress Bar แนะนำให้ใช้ apt สำหรับการใช้งาน Interactive บน Terminal ส่วน apt-get เหมาะกับการเขียน Script และ Automation เพราะ Output มีความสม่ำเสมอกว่าและรองรับทุก Debian version

คำสั่งพื้นฐาน

อัพเดต Package List

ก่อนติดตั้งหรืออัพเกรดทุกครั้ง ต้องรัน update เพื่อดึงรายการล่าสุดจาก Repository มาก่อนเสมอ

# อัพเดต index (ไม่ได้ติดตั้งอะไร — แค่ดึง list มาใหม่)
sudo apt update
sudo apt-get update

ติดตั้ง Package

# ติดตั้งซอฟต์แวร์เดียว
sudo apt install nginx
sudo apt-get install nginx

# ติดตั้งหลายตัวพร้อมกัน
sudo apt install nginx php8.1-fpm mariadb-server

# ติดตั้งโดยไม่ถามยืนยัน (สำหรับ Script)
sudo apt install -y nginx
sudo apt-get install -y nginx

# ติดตั้ง version เฉพาะ
sudo apt install nginx=1.24.0-1

อัพเกรด Package

# อัพเกรดทุกตัวที่มีเวอร์ชันใหม่ (ไม่ลบตัวเดิม)
sudo apt upgrade
sudo apt-get upgrade

# อัพเกรดแบบ Smart — จัดการ Dependency อัตโนมัติ (อาจลบตัวบางตัว)
sudo apt full-upgrade
sudo apt-get dist-upgrade

# อัพเดตและอัพเกรดในคำสั่งเดียว
sudo apt update && sudo apt upgrade -y

ลบ Package

# ลบซอฟต์แวร์แต่เก็บ config file ไว้
sudo apt remove nginx
sudo apt-get remove nginx

# ลบพร้อม config file ทั้งหมด
sudo apt purge nginx
sudo apt-get purge nginx

# ลบ dependency ที่ไม่ได้ใช้แล้วออกด้วย
sudo apt autoremove
sudo apt-get autoremove

# ลบพร้อมทำความสะอาดในครั้งเดียว
sudo apt purge nginx && sudo apt autoremove

ค้นหาและดูข้อมูล

# ค้นหาตามชื่อหรือคำอธิบาย
apt search nginx
apt-cache search nginx

# ดูรายละเอียด
apt show nginx
apt-cache show nginx

# ดูตัวที่ติดตั้งอยู่
dpkg -l | grep nginx
dpkg --get-selections | grep nginx

# ดูว่าไฟล์ไหนอยู่ในตัวไหน
dpkg -L nginx
dpkg -S /usr/sbin/nginx

จัดการ Repository

บางครั้งต้องการซอฟต์แวร์เวอร์ชันใหม่กว่าที่อยู่ใน Official Repository หรือต้องการซอฟต์แวร์จากผู้พัฒนาโดยตรง สามารถเพิ่ม Repository ได้หลายวิธี

# ดู repository ที่ใช้งานอยู่
cat /etc/apt/sources.list
ls /etc/apt/sources.list.d/

# เพิ่ม repository แบบ Modern (ubuntu 22.04+)
sudo add-apt-repository ppa:ondrej/php
sudo apt update

# เพิ่ม repository ด้วย GPG Key (ปลอดภัยกว่า)
curl -fsSL https://example.com/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/example.gpg
echo "deb [signed-by=/etc/apt/keyrings/example.gpg] https://example.com/repo stable main" | \
    sudo tee /etc/apt/sources.list.d/example.list
sudo apt update

ทำความสะอาด Cache

APT เก็บไฟล์ที่ดาวน์โหลดไว้ใน /var/cache/apt/archives/ ซึ่งอาจกินพื้นที่มากหากไม่ทำความสะอาด

# ลบไฟล์เก่าที่ไม่ได้ใช้แล้วออกจาก cache
sudo apt autoclean
sudo apt-get autoclean

# ลบทั้งหมดใน cache (ประหยัด disk space มากที่สุด)
sudo apt clean
sudo apt-get clean

# ดูขนาด cache ก่อนทำความสะอาด
du -sh /var/cache/apt/archives/

Simulate และ Dry Run

ก่อนติดตั้งหรือลบจริง สามารถ Simulate เพื่อดูว่าจะเกิดอะไรขึ้นได้โดยไม่มีผลกระทบจริง

# ดูว่าจะติดตั้งหรือเปลี่ยนแปลงอะไรบ้าง (ไม่ทำจริง)
sudo apt install --simulate nginx
sudo apt-get install --dry-run nginx

# ดู Dependency ที่จะถูกลบ
sudo apt remove --simulate nginx

Lock และ Hold Package

บางครั้งต้องการ Pin ซอฟต์แวร์ให้อยู่ที่ Version เดิมและไม่อัพเกรดโดยอัตโนมัติ เช่น กรณีที่ Version ใหม่มี Breaking Change หรืออยู่ระหว่างทดสอบ

# Lock ไม่ให้อัพเกรด
sudo apt-mark hold nginx

# ดูตัวที่ถูก hold ไว้
sudo apt-mark showhold

# ปลด hold ให้อัพเกรดได้ตามปกติ
sudo apt-mark unhold nginx

Best Practices สำหรับ Production

  • รัน apt update ก่อนเสมอ — ก่อน install หรือ upgrade ทุกครั้ง เพื่อให้แน่ใจว่าได้เวอร์ชันล่าสุด
  • ใช้ -y อย่างระวัง — Flag -y ข้าม Confirmation ทั้งหมด ควรใช้เฉพาะใน Script ที่รู้ผลลัพธ์แน่นอน
  • ทดสอบด้วย –simulate ก่อน — โดยเฉพาะเมื่อจะลบหรืออัพเกรดซอฟต์แวร์ที่มี Dependency ซับซ้อน
  • ใช้ apt purge แทน apt remove — สำหรับ Service ที่ไม่ต้องการแล้ว เพื่อล้าง Config File เก่าออกด้วย
  • ทำความสะอาด Cache สม่ำเสมอ — รัน apt clean หรือ autoclean เพื่อประหยัด Disk Space บน Production Server

สรุป

apt และ apt-get เป็นเครื่องมือหลักในการจัดการซอฟต์แวร์บน Debian-based Systems คำสั่งที่ใช้บ่อยที่สุดคือ apt update, apt install, apt upgrade และ apt remove/purge การเข้าใจความแตกต่างระหว่าง remove กับ purge และการใช้ autoremove เพื่อล้าง Dependency ที่ไม่ต้องการ จะช่วยให้ Server สะอาดและมีประสิทธิภาพมากขึ้น

แนะนำบริการ DE

การทดลองจัดการซอฟต์แวร์และการจัดการ Repository บน Linux ต้องการ Server ที่มีสิทธิ์ root เต็มรูปแบบ Cloud VPS ของ DE ให้ Root Access และสิทธิ์ติดตั้งซอฟต์แวร์ได้อย่างอิสระ เหมาะสำหรับทดลอง apt, ติดตั้ง LAMP/LEMP Stack หรือฝึก Linux Administration บน Server จริง

หากต้องการโฮสต์เว็บไซต์โดยไม่ต้องติดตั้งซอฟต์แวร์หรือจัดการ Dependency เอง Cloud Hosting ของ DE มีซอฟต์แวร์และ Extension พร้อมใช้งานผ่าน Control Panel