Update package ด้วย apt-get
บันทึกนี้ปรับปรุงล่าสุดเมื่อ 21-09-2564
ดูแลโดยวิบูลย์
เขียนครั้งแรกโดย WIPAT
- ต้นแบบทดสอบกับ ubuntu 10.04, 12.04, 14.04, 16.04, 18.04, 20.04
- หากมี firewall ที่ต้อง login authentication ก่อนออกสู่ Internet ทำให้ใช้งาน ubuntu server ไม่ได้ ให้ดาวน์โหลด script นี้ แล้วรัน
wget ftp://ftp.psu.ac.th/pub/autologin/psuautosigned.txt
bash psuautosigned.txt กด Enter
- หากต้องการปรับเปลี่ยน repository
เวอร์ชั่น 10.04
ให้แก้ไขข้อมูลในแฟ้ม /etc/apt/sources.list
เวอร์ชั่น 12.04, 14.04
ให้แก้ไขข้อมูลในแฟ้ม /etc/apt/sources.list.d//official-package-repositories.list
เวอร์ชั่น 16.04, 18.04, 20.04
ให้แก้ไขข้อมูลในแฟ้ม /etc/apt/sources.list - ผู้ใช้ในประเทศไทย ให้ชี้ update repository มาที่ http://th.archive.ubuntu.com/ubuntu/ ได้เลย ระบบจะถูก redirect กลับมาที่ http://mirrors.psu.ac.th/pub/ubuntu/ เอง
เนื่องจาก http://mirrors.psu.ac.th/pub/ubuntu/ เป็น Thailand Offical Mirror ของ ubuntu
ตัวอย่างของเดิมทุกบรรทัดที่เป็น http://us.archive.ubuntu.com/ubuntu/ แก้ไขให้กลายเป็น http://th.archive.ubuntu.com/ubuntu/ ทุกๆบรรทัดเลย
เช่น อาจใช้คำสั่งเพื่อเปลี่ยนทุกบรรทัดที่มีคำว่า /us.archive.ubuntu เป็น th.archive.ubuntu ดังนี้
sed -i 's/\/us.archive/\/th.archive/g' /etc/apt/sources.list
หรือ /archive.ubuntu เป็น th.archive.ubuntu ดังนี้
sed -i 's/\/archive/\/th.archive/g' /etc/apt/sources.list - หากอยู่ในมหาวิทยาลัยสงขลานครินทร์ ให้แก้ไขให้ชี้ update repository มาอยู่ที่ http://mirrors.psu.ac.th/pub/ubuntu/ โดยตรง
เพราะระบบจะได้ไม่ต้องเสียเวลาไปหา DNS ที่ต่างประเทศ - หากต้องผ่าน proxy ให้แก้ไขแฟ้ม /etc/apt/apt.conf
เพิ่มบรรทัดข้อความตัวอย่างประมาณว่า
Acquire::http::Proxy "http://cache.psu.ac.th:8080"; - สั่งตรวจสอบข้อมูล update ใหม่ด้วยคำสั่ง sudo apt-get update
- ต้องผ่านคำสั่ง update ก่อน หากไม่มีข้อผิดพลาดแสดงออกมา
ให้สั่งปรับปรุงซ่อมแซมด้วยคำสั่ง sudo apt-get upgrade
หากสั่ง upgrade แล้ว มี error ให้ลองสั่งใหม่ด้วยคำสั่ง sudo apt-get upgrade --fix-missing - หากต้องการ upgrade kernel ด้วย ให้ใช้คำสั่ง sudo apt-get dist-upgrade
- หากไม่ต้องการให้รอกด Y ยืนยัน ให้ใช้คำสั่ง sudo apt-get -y dist-upgrade
- หากต้องการเลือกใช้ IPv4 หรือ IPv6 ในการอัปเดต
sudo apt-get -o Acquire::ForceIPv4=true update
sudo apt-get -o Acquire::ForceIPv4=true upgrade
Error ที่พบ และ วิธีแก้ไข
- หากใช้คำสั่ง sudo apt-get update แล้วมี error ฟ้องประมาณว่า
E: Archive directory /var/cache/apt/archives/partial is missing.
สาเหตุเกิดจากพื้นที่ /var/cache/apt/archives ถูกลบไป ให้แก้ไขด้วยการทำคำสั่งดังนี้
sudo mkdir -p /var/cache/apt/archives
sudo mkdir -p /var/cache/apt/archives/partial
ทำแค่นี้ แล้วลอง sudo apt-get update ดูได้เลย - หากเจอ error ประมาณตัวอย่างว่า
W: GPG error: servername lucid/ Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY D67FC6EAE2A11821
แสดงว่ามีปัญหาเรื่อง GPG key ให้แก้ไขดังนี้
ใช้คำสั่งประมาณว่า
gpg --keyserver subkeys.pgp.net --recv D67FC6EAE2A11821
gpg --export --armor D67FC6EAE2A11821 | sudo apt-key add -
เสร็จแล้วลองสั่ง sudo apt-get update ใหม่ - หากเจอ error ประมาณตัวอย่างว่า
W: GPG error: http://th.archive.ubuntu.com maverick Release: The following signatures were invalid: BADSIG 40976EAF437D05B5 Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>
สาเหตุจากมีแฟ้มที่เคย apt เก็บไว้เสีย ให้แก้ไขด้วยคำสั่งดังนี้
sudo apt-get clean
sudo mv /var/lib/apt/lists /var/lib/apt/lists.old
sudo mkdir -p /var/lib/apt/lists/partial
sudo apt-get clean
เสร็จแล้วลองสั่ง sudo apt-get update ใหม่
เรื่องอื่น ๆ
- หากใช้รุ่นอื่นๆ ที่ไม่ใช่ 8.04LTS 10.04LTS สามารถแก้ไขไปใช้ server เพื่อปรับปรุงไฟล์ได้จาก http://old-releases.ubuntu.com/ubuntu/ เพื่อปรับปรุงเข้าสู่ LTS