Update package ด้วย apt-get

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อ 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


  1. หากต้องการปรับเปลี่ยน 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
  2. ผู้ใช้ในประเทศไทย ให้ชี้ 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
  3. หากอยู่ในมหาวิทยาลัยสงขลานครินทร์ ให้แก้ไขให้ชี้ update repository มาอยู่ที่ http://mirrors.psu.ac.th/pub/ubuntu/ โดยตรง
    เพราะระบบจะได้ไม่ต้องเสียเวลาไปหา DNS ที่ต่างประเทศ
  4. หากต้องผ่าน proxy ให้แก้ไขแฟ้ม /etc/apt/apt.conf
    เพิ่มบรรทัดข้อความตัวอย่างประมาณว่า
    Acquire::http::Proxy "http://cache.psu.ac.th:8080";
  5. สั่งตรวจสอบข้อมูล update ใหม่ด้วยคำสั่ง sudo apt-get update
  6. ต้องผ่านคำสั่ง update ก่อน หากไม่มีข้อผิดพลาดแสดงออกมา
    ให้สั่งปรับปรุงซ่อมแซมด้วยคำสั่ง sudo apt-get upgrade
    หากสั่ง upgrade แล้ว มี error ให้ลองสั่งใหม่ด้วยคำสั่ง sudo apt-get upgrade --fix-missing
  7. หากต้องการ upgrade kernel ด้วย ให้ใช้คำสั่ง sudo apt-get dist-upgrade
  8. หากไม่ต้องการให้รอกด Y ยืนยัน ให้ใช้คำสั่ง sudo apt-get -y dist-upgrade
  9. หากต้องการเลือกใช้ IPv4 หรือ IPv6 ในการอัปเดต
    sudo apt-get -o Acquire::ForceIPv4=true update
    sudo apt-get -o Acquire::ForceIPv4=true upgrade


Error ที่พบ และ วิธีแก้ไข

  1. หากใช้คำสั่ง 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 ดูได้เลย
  2. หากเจอ 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 ใหม่
  3. หากเจอ 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 ใหม่


เรื่องอื่น ๆ

  1. หากใช้รุ่นอื่นๆ ที่ไม่ใช่ 8.04LTS 10.04LTS สามารถแก้ไขไปใช้ server เพื่อปรับปรุงไฟล์ได้จาก http://old-releases.ubuntu.com/ubuntu/ เพื่อปรับปรุงเข้าสู่ LTS