เคยติดตั้งโปรแกรมแล้วเจอคำถามนี้ไหม
เวลาติดตั้งโปรแกรมบน Ubuntu หลายคนอาจเคยเจอสถานการณ์แบบนี้
sudo apt install firefox
แต่ระบบกลับติดตั้งผ่าน snap หรือบางโปรแกรมในคู่มือแนะนำว่าให้ใช้
sudo snap install code --classic
คำถามที่ตามมาคือ “แล้วสรุป snap กับ apt ต่างกันอย่างไร และควรใช้อะไรดีกว่า?”
คำตอบแบบตรงไปตรงมาคือ ไม่มีตัวไหนดีที่สุดเสมอไป แต่ขึ้นอยู่กับประเภทของเครื่อง งานที่ทำ และระดับการควบคุมที่เราต้องการ โดยเฉพาะถ้าเป็น Ubuntu Server งาน Production หรือเครื่อง Lab สำหรับสอนนักศึกษา การเลือก package manager ให้เหมาะสมจะช่วยลดปัญหาระยะยาวได้มาก
บทความนี้จะสอนอะไร
บทความนี้จะพาเปรียบเทียบ apt และ snap บน Ubuntu แบบเข้าใจง่าย แต่ลงมือทำได้จริง ครอบคลุมหัวข้อต่อไปนี้
-
aptคืออะไร -
snapคืออะไร -
จุดเด่นและข้อจำกัดของแต่ละแบบ
-
คำสั่งพื้นฐานที่ควรรู้
-
วิธีตรวจสอบว่าโปรแกรมติดตั้งมาจาก apt หรือ snap
-
แนวทางเลือกใช้ใน Desktop, Server, DevOps และงานสอน
-
คำแนะนำแบบสรุปว่า “ควรใช้อะไรดีกว่า”
บทความนี้ทดสอบแนวทางบน Ubuntu Server 26.04 LTS และสามารถปรับใช้กับ Ubuntu Desktop ได้เช่นกัน โดย Ubuntu 26.04 เป็นรุ่น LTS ที่อยู่ในเอกสาร release notes ของ Ubuntu แล้ว
พื้นฐานที่จำเป็นก่อนเริ่ม
สิ่งที่ควรมี
-
Ubuntu Server 26.04 LTS หรือ Ubuntu Desktop รุ่นใกล้เคียง
-
ผู้ใช้ที่มีสิทธิ์
sudo -
อินเทอร์เน็ตสำหรับติดตั้ง package
-
ความเข้าใจพื้นฐานเรื่อง command line
ตรวจสอบเวอร์ชัน Ubuntu
lsb_release -a
# แสดงข้อมูลเวอร์ชันของ Ubuntu ที่ใช้งานอยู่
ตรวจสอบว่า apt ใช้งานได้
apt --version
# ตรวจสอบเวอร์ชันของ apt
ตรวจสอบว่า snap ใช้งานได้
snap version
# ตรวจสอบเวอร์ชันของ snap และ snapd
apt คืออะไร
apt หรือ Advanced Package Tool เป็นระบบจัดการ package แบบดั้งเดิมของ Debian/Ubuntu ใช้สำหรับติดตั้ง อัปเดต ลบ และจัดการ software package ในรูปแบบ .deb โดย Ubuntu Server documentation ระบุว่า command ในกลุ่ม apt ใช้สำหรับติดตั้ง package ใหม่ อัปเกรด package เดิม และอัปเดต package index ของระบบ
พูดให้ง่ายคือ apt เป็นวิธีติดตั้งโปรแกรมแบบ “ผูกกับระบบปฏิบัติการ” มากกว่า โปรแกรมที่ติดตั้งผ่าน apt จะใช้ dependency จาก repository ของ Ubuntu เป็นหลัก และได้รับการดูแลผ่านระบบ package repository ของ distro
ตัวอย่างคำสั่งติดตั้ง Nginx ด้วย apt
sudo apt update
# อัปเดตรายการ package ล่าสุดจาก repository
sudo apt install nginx -y
# ติดตั้ง Nginx จาก Ubuntu repository
ตรวจสอบ package ที่ติดตั้ง
dpkg -l | grep nginx
# แสดง package ที่เกี่ยวข้องกับ nginx
ลบ package
sudo apt remove nginx -y
# ลบตัวโปรแกรม แต่ยังอาจเหลือ configuration บางส่วน
sudo apt purge nginx -y
# ลบตัวโปรแกรมพร้อม configuration ที่เกี่ยวข้อง
⚠️ ข้อควรระวัง: คำสั่ง purge อาจลบไฟล์ configuration ของ package นั้น ควร backup ก่อนใช้กับเครื่อง Production
snap คืออะไร
snap เป็นระบบ package ที่พัฒนาโดย Canonical ใช้แนวคิด self-contained package คือ package หนึ่งตัวสามารถรวม dependency ที่จำเป็นไว้ด้วยกัน ทำให้ติดตั้งและรันได้ใกล้เคียงกันบนหลาย Linux distribution เอกสาร Snap ระบุว่า snap เป็น self-contained application package และ snapd ทำหน้าที่จัดการ installation, confinement และ updates
ตัวอย่างติดตั้งโปรแกรมด้วย snap
sudo snap install hello-world
# ติดตั้ง snap package ตัวอย่างสำหรับทดสอบ
รันโปรแกรม
hello-world
# ทดสอบว่า snap ทำงานได้หรือไม่
ดูรายการ snap ที่ติดตั้ง
snap list
# แสดง snap package ทั้งหมดในเครื่อง
ลบ snap package
sudo snap remove hello-world
# ลบ snap package ออกจากระบบ
เปรียบเทียบ snap vs apt แบบเข้าใจง่าย
1. รูปแบบ package
apt ใช้ package แบบ .deb ซึ่งเป็นรูปแบบหลักของ Debian และ Ubuntu ส่วน snap ใช้ package แบบ snap ที่รวม dependency หลายส่วนไว้ในตัวเอง เพื่อให้รันข้าม distribution ได้สะดวกกว่า
สรุปสั้น ๆ:
-
aptเหมาะกับ package ที่ผูกกับระบบ Ubuntu โดยตรง -
snapเหมาะกับ application ที่ต้องการ version ใหม่ หรืออยากให้ติดตั้งง่ายข้ามระบบ
2. การอัปเดต
apt จะอัปเดตเมื่อผู้ดูแลระบบสั่ง เช่น
sudo apt update
# อัปเดตรายการ package
sudo apt upgrade -y
# อัปเกรด package ที่ติดตั้งไว้
ส่วน snap มีระบบ refresh อัตโนมัติ โดยเอกสาร Snap ระบุว่า snap จะอัปเดตอัตโนมัติ และโดยค่าเริ่มต้น snapd จะตรวจสอบ update วันละ 4 ครั้ง
ตรวจสอบตาราง refresh ของ snap
snap refresh --time
# แสดงเวลาที่ snap จะตรวจสอบและอัปเดต package
สั่ง refresh เอง
sudo snap refresh
# อัปเดต snap package ทั้งหมดทันที
สำหรับเครื่อง Desktop ฟีเจอร์ auto update ถือว่าสะดวกมาก แต่สำหรับ Server บางประเภท ผู้ดูแลระบบอาจต้องการควบคุมรอบการอัปเดตเองมากกว่า
3. ความปลอดภัยและ confinement
snap มีแนวคิด confinement หรือการจำกัดสิทธิ์ของ application เอกสาร Ubuntu Security ระบุว่า confinement level ของ snap ควบคุมระดับการแยก process ของ snap จาก process อื่นในระบบ
ตรวจสอบ interface และสิทธิ์ของ snap
snap connections
# แสดงการเชื่อมต่อ interface ของ snap package ต่าง ๆ
ดูข้อมูล snap package
snap info <package-name>
# แสดงรายละเอียด package, channel, publisher และ confinement
ตัวอย่าง
snap info code
# ตรวจสอบข้อมูล Visual Studio Code ถ้ามีใน Snap Store
ข้อควรจำคือ snap ไม่ได้แปลว่า “ปลอดภัยกว่าเสมอ” แต่มีเครื่องมือช่วยจำกัดสิทธิ์ application มากขึ้น ในขณะที่ apt อาศัย model ความปลอดภัยของระบบ Linux และ repository เป็นหลัก
4. ความเร็วและขนาดพื้นที่
โดยแนวคิดแล้ว apt มักติดตั้ง package ที่ใช้ library ร่วมกับระบบ ทำให้ใช้พื้นที่ซ้ำซ้อนน้อยกว่าในหลายกรณี ส่วน snap มีแนวโน้มใช้พื้นที่มากกว่า เพราะ package อาจรวม dependency ของตัวเองมาด้วย เอกสาร Snap ระบุชัดว่า snap เป็น self-contained package และ bundle dependency เพื่อให้ทำงานได้สม่ำเสมอข้ามระบบ
ตรวจสอบพื้นที่ที่ snap ใช้
du -sh /var/lib/snapd/snaps
# ตรวจสอบขนาดไฟล์ snap package ที่เก็บอยู่ในระบบ
ตรวจสอบพื้นที่ package cache ของ apt
du -sh /var/cache/apt
# ตรวจสอบพื้นที่ cache ของ apt
ล้าง cache ของ apt
sudo apt clean
# ล้าง package cache ที่ apt ดาวน์โหลดไว้
⚠️ ข้อควรระวัง: อย่าลบไฟล์ใน /var/lib/snapd/ ด้วยมือ หากไม่เข้าใจโครงสร้างของ snap เพราะอาจทำให้ package หรือ mount point ผิดปกติได้
ตารางเปรียบเทียบ snap vs apt
| ประเด็น | apt | snap |
|---|---|---|
| รูปแบบ package | .deb |
.snap |
| แหล่ง package | Ubuntu/Debian repository | Snap Store |
| การอัปเดต | ผู้ดูแลระบบสั่งเอง | refresh อัตโนมัติเป็นค่าเริ่มต้น |
| เหมาะกับ Server | เหมาะมาก | ใช้ได้ แต่ควรควบคุมให้ดี |
| เหมาะกับ Desktop App | ใช้ได้ | เหมาะกับหลายโปรแกรมที่ต้องการ version ใหม่ |
| Dependency | ใช้ร่วมกับระบบ | มักรวม dependency มาเอง |
| การควบคุม version | ค่อนข้างผูกกับ repository | เลือก channel ได้ เช่น stable, candidate, beta, edge |
| Isolation | ใช้สิทธิ์ระบบตาม package | มี confinement/interface |
| การใช้งานใน script/server | นิยมมาก | ใช้ได้ แต่ต้องคำนึงถึง auto refresh |
คำสั่ง apt ที่ควรรู้
ค้นหา package
apt search nginx
# ค้นหา package ที่เกี่ยวข้องกับ nginx
ดูรายละเอียด package
apt show nginx
# แสดงรายละเอียด package เช่น version, dependency, repository
ติดตั้ง package
sudo apt install nginx -y
# ติดตั้ง nginx
อัปเดตระบบ
sudo apt update
sudo apt upgrade -y
# อัปเดต package index และอัปเกรด package
ลบ package ที่ไม่จำเป็น
sudo apt autoremove -y
# ลบ dependency ที่ไม่ถูกใช้งานแล้ว
คำสั่ง snap ที่ควรรู้
ค้นหา package
snap find code
# ค้นหา package จาก Snap Store
ดูรายละเอียด package
snap info code
# ดูรายละเอียด package, channel และ confinement
ติดตั้ง package
sudo snap install code --classic
# ติดตั้ง Visual Studio Code แบบ classic confinement ถ้า package กำหนดให้ใช้
ดูรายการ package
snap list
# แสดง snap ที่ติดตั้งทั้งหมด
อัปเดต package
sudo snap refresh
# refresh snap package ทั้งหมด
ย้อนกลับ version ก่อนหน้า
sudo snap revert <package-name>
# ย้อนกลับ snap package ไป revision ก่อนหน้า
⚠️ ข้อควรระวัง: --classic หมายถึง snap package นั้นมีสิทธิ์เข้าถึงระบบกว้างกว่า strict confinement ควรใช้กับ publisher ที่เชื่อถือได้เท่านั้น
ตรวจสอบว่าโปรแกรมติดตั้งมาจาก apt หรือ snap
บางครั้งเราเรียก command แล้วไม่แน่ใจว่าโปรแกรมมาจาก apt หรือ snap ให้ตรวจสอบด้วยคำสั่งต่อไปนี้
which firefox
# ดู path ของ command firefox
ถ้าผลลัพธ์อยู่แถวนี้
/snap/bin/firefox
แปลว่าโปรแกรมมาจาก snap
ถ้าผลลัพธ์อยู่แถวนี้
/usr/bin/nginx
มีโอกาสสูงว่าโปรแกรมมาจาก apt หรือ package ของระบบ
ตรวจสอบด้วย dpkg
dpkg -S /usr/bin/nginx
# ตรวจสอบว่าไฟล์นี้มาจาก deb package ใด
ตรวจสอบด้วย snap
snap list | grep firefox
# ตรวจสอบว่า firefox ติดตั้งเป็น snap หรือไม่
กรณีไหนควรใช้ apt
ใช้ apt เมื่อเป็นงาน Server
สำหรับงาน Server เช่น Nginx, Apache, MariaDB, PostgreSQL, OpenSSH, Fail2ban, UFW, Docker dependency บางส่วน หรือ service ที่ต้องดูแลระยะยาว แนะนำให้เริ่มจาก apt ก่อน เพราะควบคุม version, service, configuration file และ dependency ได้ตรงกับ Ubuntu มากกว่า
ตัวอย่างติดตั้ง Apache
sudo apt update
sudo apt install apache2 -y
# ติดตั้ง Apache Web Server จาก Ubuntu repository
ตรวจสอบ service
systemctl status apache2
# ตรวจสอบสถานะ Apache
ใช้ apt เมื่อเขียนคู่มือหรือ Lab สำหรับนักศึกษา
ถ้าต้องการให้ผู้เรียนทำตามได้ง่ายในห้อง Lab การใช้ apt จะช่วยให้ path, config และ service management เป็นมาตรฐานกว่า เช่น
/etc/nginx/nginx.conf
/etc/apache2/sites-available/
ตำแหน่งเหล่านี้คุ้นเคยกับเอกสาร Linux Server Administration และเหมาะกับการเรียนรู้โครงสร้างระบบจริง
ใช้ apt เมื่อระบบต้องการความเสถียร
ระบบ Production มักต้องการรอบการอัปเดตที่คาดเดาได้ การใช้ apt ร่วมกับ maintenance window, changelog และ backup จะควบคุมได้ง่ายกว่า snap ที่ refresh อัตโนมัติเป็นค่าเริ่มต้น
กรณีไหนควรใช้ snap
ใช้ snap เมื่ออยากได้ application version ใหม่
บางโปรแกรมใน Ubuntu repository อาจเป็น version ที่ค่อนข้างนิ่งตาม release cycle ของ Ubuntu แต่ snap อาจมี channel ให้เลือก เช่น stable, candidate, beta หรือ edge ซึ่งเหมาะกับเครื่อง Desktop, Developer Workstation หรือ Lab ที่ต้องการทดลอง version ใหม่
ดู channel ของ package
snap info <package-name>
# ดูว่ามี channel ใดให้ติดตั้งบ้าง
ติดตั้งจาก channel ที่ต้องการ
sudo snap install <package-name> --channel=stable
# ติดตั้งจาก stable channel
ใช้ snap เมื่อ vendor แนะนำอย่างเป็นทางการ
บาง software ผู้พัฒนาอาจเผยแพร่ snap เป็นช่องทางหลักหรือช่องทางที่ดูแลง่ายกว่า ในกรณีนี้การใช้ snap อาจทำให้ได้ package ที่ใกล้กับ upstream มากขึ้น
ใช้ snap กับ Desktop App หรือ Tool เฉพาะทาง
โปรแกรมประเภท editor, IDE, communication tool, design tool หรือ utility บางชนิดเหมาะกับ snap เพราะติดตั้งง่าย อัปเดตง่าย และไม่ต้องยุ่งกับ dependency ของระบบมากนัก
ตัวอย่างสถานการณ์จริง
สถานการณ์ที่ 1: ติดตั้ง Nginx บน Server
แนะนำใช้ apt
sudo apt update
sudo apt install nginx -y
# เหมาะกับ web server ที่ต้องจัดการ service และ config โดยตรง
เหตุผลคือ Nginx เป็น service หลักของระบบ ต้องการ config path ที่ชัดเจน และควรจัดการผ่าน systemd ตามมาตรฐาน Ubuntu Server
สถานการณ์ที่ 2: ติดตั้ง VS Code บนเครื่อง Desktop
ใช้ได้ทั้งสองแบบ แต่ถ้าต้องการง่ายและเร็ว อาจใช้ snap
sudo snap install code --classic
# ติดตั้ง VS Code ผ่าน snap
แต่ถ้าองค์กรมี policy ควบคุม repository หรือ mirror ภายใน อาจเลือกใช้ .deb ผ่าน repository ของ vendor แทน
สถานการณ์ที่ 3: ติดตั้ง Certbot
บน Ubuntu หลายคู่มืออาจแนะนำ Certbot ผ่าน snap เพราะได้ version ที่อัปเดตกว่าและใกล้กับ upstream มากกว่า แต่สำหรับระบบ Production ควรตรวจสอบ policy ขององค์กรก่อนเสมอ
sudo snap install certbot --classic
# ติดตั้ง Certbot ผ่าน snap
ตรวจสอบ path
which certbot
# ตรวจสอบว่า certbot อยู่ที่ path ใด
แนวทางเลือกใช้แบบมืออาชีพ
สำหรับ Ubuntu Server
คำแนะนำหลักคือ
ใช้ apt เป็นค่าเริ่มต้น
ใช้ snap เฉพาะกรณีที่จำเป็นหรือ vendor แนะนำ
เหมาะกับ service เช่น
-
Nginx
-
Apache
-
MariaDB
-
PostgreSQL
-
OpenSSH
-
UFW
-
Fail2ban
-
Bind DNS
-
Samba
-
NFS
เหตุผลคือดูแลง่าย ควบคุมรอบอัปเดตได้ดี และเอกสารส่วนใหญ่ของ Ubuntu Server อิงกับ package จาก repository
สำหรับ Ubuntu Desktop
คำแนะนำคือ
ใช้ apt กับ system package
ใช้ snap กับ desktop application ที่ต้องการติดตั้งง่ายและอัปเดตเร็ว
เช่น browser, editor, productivity app หรือเครื่องมือสำหรับนักพัฒนา
สำหรับห้องเรียนและ Lab
คำแนะนำคือ
ถ้าสอน Linux Admin ให้ใช้ apt ก่อน
ถ้าสอน application deployment หรือ packaging concept ค่อยเสริม snap
เพราะ apt ช่วยให้ผู้เรียนเข้าใจโครงสร้าง Linux ได้ชัดกว่า เช่น
-
package dependency
-
service management
-
configuration file
-
repository
-
update lifecycle
ทดสอบและ Verify
1. ตรวจสอบ apt package
apt list --installed | grep nginx
# ตรวจสอบว่า nginx ติดตั้งผ่าน apt หรือไม่
2. ตรวจสอบ snap package
snap list
# ดูรายการ snap ทั้งหมดในระบบ
3. ตรวจสอบ path ของ command
which <command>
# ดูว่า command ถูกเรียกจาก path ใด
ตัวอย่าง
which firefox
which nginx
which certbot
4. ตรวจสอบ service
systemctl status nginx
# ตรวจสอบสถานะ service ของ nginx
5. ตรวจสอบ snap refresh
snap refresh --time
# ตรวจสอบรอบการ refresh ของ snap
Best Practice สำหรับ SysAdmin
1. อย่าผสมหลายแหล่งโดยไม่จำเป็น
ถ้า package เดียวกันมีทั้ง apt, snap, .deb จาก vendor และ binary download ควรเลือกแหล่งเดียวให้ชัดเจน ไม่ควรติดตั้งซ้ำหลายช่องทาง เพราะอาจทำให้ path, version และ configuration สับสน
2. ตรวจสอบ publisher ก่อนติดตั้ง snap
snap info <package-name>
# ตรวจสอบ publisher และรายละเอียด package
ควรติดตั้งจาก publisher ที่น่าเชื่อถือเท่านั้น โดยเฉพาะ package ที่ต้องเข้าถึงไฟล์ระบบหรือ network
3. Server ควรมี maintenance window
ถ้าใช้ snap บน Server ควรวางแผนเรื่อง refresh window ให้ดี เพราะ snap มีระบบ refresh อัตโนมัติเป็นค่าเริ่มต้น
4. Backup ก่อนอัปเดต service สำคัญ
ก่อนอัปเดต service เช่น web server, database หรือ reverse proxy ควร backup configuration เสมอ
sudo cp -a /etc/nginx /etc/nginx.backup.$(date +%F)
# สำรอง config nginx พร้อมวันที่
สรุป : snap vs apt ใช้อะไรดีกว่า
ถ้าถามว่า snap vs apt ใช้อะไรดีกว่า คำตอบที่เหมาะกับงานจริงคือ
บน Ubuntu Server ให้ใช้ apt เป็นหลัก เพราะควบคุมง่าย เสถียร เหมาะกับ service และเข้ากับโครงสร้าง Ubuntu โดยตรง
บน Ubuntu Desktop สามารถใช้ snap ได้มากขึ้น โดยเฉพาะ application ที่ต้องการติดตั้งง่าย อัปเดตเร็ว และไม่อยากจัดการ dependency เอง
สำหรับงานสอน Linux Admin ควรเริ่มจาก apt ก่อน เพราะช่วยให้ผู้เรียนเข้าใจพื้นฐาน package management, service, repository และ file system layout ได้ชัดเจนกว่า
จำง่าย ๆ คือ
Server / Production / Lab Admin → apt ก่อน
Desktop App / Tool รุ่นใหม่ → snap ใช้ได้
Vendor แนะนำ snap ชัดเจน → ใช้ snap ได้ แต่ตรวจสอบ policy ก่อน
การเลือก package manager ไม่ใช่เรื่องถูกหรือผิด แต่เป็นเรื่องของ “ความเหมาะสมกับบริบท” หากเลือกถูกตั้งแต่ต้น ระบบจะดูแลง่าย ปลอดภัย และลดปัญหาในระยะยาวได้มาก
—
Write by Dr.Arnut Ruttanatirakul
SysAdmin Knowledge
https://www.sysadmin.in.th
June 20, 2026

