การใช้ dpkg เพื่อติดตั้งแพ็คเกจอัพเกรดและอัพเกรด


9

ดังนั้นฉันจึงเล่นกับการติดตั้งแพคเกจออฟไลน์บนเซิร์ฟเวอร์ 12.04 โดยดาวน์โหลดแพคเกจด้วยการดึงข้อมูลและเรียกใช้ URIs โดยใช้คำแนะนำที่นี่: http://www.webupd8.org/2009/11/get-list-of-packages- และ dependencies.html

ผมทำอย่างนี้ด้วยapt-get upgradeและแล้วไปเกี่ยวกับการติดตั้งแพคเกจที่ดาวน์โหลดมาใช้apt-get dist-upgrade dpkg -iดังนั้นกระบวนการดูเหมือนดังนั้น:

  1. รับ URIs
  2. wgetแพ็กเกจไปยังโฟลเดอร์ ( upgradeแพ็กเกจเพื่อ / อัพเกรดและdist-upgradeแพ็กเกจเป็น / dist-upgrade)
  3. เรียกใช้dpkg -i /upgrade/*.debแล้วdpkg -i /dist-upgrade/*.deb

คำถามของฉันคือจะใช้วิธีการติดตั้งด้วยตนเองแพคเกจการปรับปรุงอย่างถูกต้องทุกอย่างที่ได้รับการปรับปรุงให้ผลเช่นเดียวกับถ้าผมต้องการใช้เพียงแค่นี้apt-get upgradeและapt-get dist-upgradeตามปกติ? หรือมีบางอย่างที่apt-getคำสั่งปกติทำที่ไม่ทำด้วยวิธีนี้?

คำตอบ:


15

แทนการใช้ซึ่งเป็นผู้จัดการแพคเกจระดับต่ำคุณต้องการจะดีกว่าการใช้dpkg aptในการติดตั้งไฟล์. deb ใช้aptให้คัดลอกไฟล์ไปยังแคช apt

sudo cp *.deb /var/cache/apt/archives/

จากนั้นทำการอัพเกรดปกติ:

apt-get upgrade

aptคำสั่งจะใช้ไฟล์ในแคชมากกว่าการดาวน์โหลดออกสุทธิเพื่อให้สวยมากมีจุดมุ่งหมายของคุณ


ขอบคุณที่ใช้งานได้ดี แม้ว่าฉันจะยังคงอยากรู้อยากเห็นเกี่ยวกับสิ่งที่aptแตกต่างไปdpkgในกรณีนี้ แต่เดิมฉันเคยaptได้รับ URIs ของแพ็คเกจทั้งหมดรวมถึงการพึ่งพาของพวกเขา? เมื่อพูดถึงการติดตั้งจริง ๆ แล้วดูเหมือนว่าaptจะใช้dpkgเพื่อทำการแกะและติดตั้งแพคเกจความแตกต่างเพียงอย่างเดียวคือการaptตรวจสอบการอ้างอิงก่อน (แต่ครอบคลุมอยู่แล้วเพราะฉันเคยaptดาวน์โหลดแพ็คเกจรวมถึง ตั้งแต่แรก) ถ้าฉันไม่ได้ทำอะไร
R4mzy

ส่วนหนึ่งของเหตุผลที่ฉันถามคือฉันกังวลเกี่ยวกับapt'sพฤติกรรมที่อาจเกิดขึ้นถ้าพูดว่าแพคเกจที่ดาวน์โหลดมานั้นถูกคัดลอกไปยังระบบที่มีการเข้าถึงอินเทอร์เน็ตแล้วaptเห็นว่าบางแพคเกจที่ดาวน์โหลดมานั้น (แต่ใหม่กว่าที่ติดตั้งไว้ในปัจจุบัน) จากนั้นจะพยายามรับแพ็คเกจที่ปรับปรุงเหล่านั้น (ฉันต้องการให้ติดตั้งเฉพาะแพ็คเกจ / เวอร์ชั่นที่ฉันดาวน์โหลด) โดยทั่วไปแล้วจะaptให้ความพึงพอใจกับเวอร์ชั่นออนไลน์ล่าสุดหรือไม่หรือจะให้ความพึงพอใจกับเวอร์ชั่นในท้องถิ่นที่ใหม่กว่า แต่ไม่ใช่ล่าสุด
R4mzy

1
@ R4mzy คุณมีจุดที่ถูกต้องที่นั่น aptจะพยายามรับแพ็คเกจล่าสุดจากอินเทอร์เน็ตแม้ว่าจะมีแพ็คเกจเก่า ๆ คุณอาจจำเป็นต้องเปลี่ยน/etc/apt/sources.listt ตรวจสอบให้แน่ใจว่าได้ติดตั้งแพคเกจท้องถิ่น
sayantankhan

@Sayantankhan คุณสามารถแสดงให้เห็นว่าคำตอบของคุณมีลักษณะอย่างไร? ฉันถามเพราะฉันได้คัดลอกไฟล์. deb ไปยัง/var/cache/apt/archives/แต่sudo apt-get update && sudo apt-get upgradeไม่เห็นหรืออัปเดต / อัปเกรดแพ็คเกจที่ฉันต้องการ ฉันรู้สึกเหมือนฉันต้องการอัปเดตรายการ แต่ไม่แน่ใจว่าจะทำอย่างไร
ทอดด์

1
@Todd ฉันยังไม่ได้ทำเอง แต่นี่เป็นวิธีที่บางคนเอาชนะลำดับความสำคัญของแพกเกจ
sayantankhan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.