ฉันจะรับโค้ดทางออก 'verbose' apt-get ได้อย่างไร


12

ฉันจะรับรหัสทางออก 'verbose' เพื่อapt-getให้ข้อผิดพลาดเช่นนี้ได้อย่างไร

Package google-chrome is a virtual package provided by:
  google-chrome-stable 29.0.1547.76-r223446
  google-chrome-beta 30.0.1599.47-1
You should explicitly select one to install.

E: Package 'google-chrome' has no installation candidate

มีรหัสทางออกที่แตกต่างจากข้อผิดพลาดในการดาวน์โหลดเช่นนี้

Err http://dl.google.com/linux/chrome/deb/ stable/main google-chrome-stable amd64 29.0.1547.76-r223446
  Something wicked happened resolving 'dl.google.com:http' (-11 - System error)

ปัจจุบันข้อผิดพลาดทั้งสองออกจากด้วย 100

โดยทั่วไปฉันต้องการให้ข้อผิดพลาดในการดาวน์โหลดออกด้วยรหัสอื่นนอกเหนือจากข้อผิดพลาดอย่างแรก หากเป็นไปได้ฉันต้องการให้ข้อผิดพลาดแต่ละอย่างมีรหัสทางออกที่แตกต่างกัน แต่ตัวอย่างข้างต้นคือจำนวนขั้นต่ำที่ฉันต้องการ ฉันจะทำสิ่งนี้ในการติดตั้ง Ubuntu วานิลลาโดยไม่ต้องมีซอฟต์แวร์เพิ่มเติม (ยกเว้นaptitude)


คุณสามารถตัดคำสั่ง apt-get ในสคริปต์ที่แยกวิเคราะห์เอาต์พุต หรือว่านับเป็น "ซอฟต์แวร์เพิ่มเติม" นอกจากนี้เพื่อตรวจหาข้อผิดพลาดในการดาวน์โหลดให้พิจารณาดำเนินการapt-get --download-onlyก่อน
Jos

อ่านั่นสมเหตุสมผลแล้ว บางทีคุณสามารถตรวจสอบการมีอยู่ของ package X ก่อนโดยทำเช่นนั้นapt-cache policy X?
Jos

อีกครั้งคุณจะต้อง grep ผลลัพธ์ ฉันคิดว่าการทำapt-cache policy google-chromeไม่ได้ทำให้คุณมีคำว่า "ผู้สมัคร" ในขณะที่apt-cache policy google-chrome-stableจะ
Jos

ตกลง. ฉันจะย้ายการสนทนานี้เพื่อแชทและป้อนคำแนะนำนี้เป็นคำตอบ (บางส่วน)
Jos

คำตอบ:


1

ไม่ใช่คำตอบที่สมบูรณ์ แต่คุณสามารถทดสอบการมีอยู่ของแพ็กเกจก่อนด้วยการทำapt-cache policy Xและพิมพ์ผลลัพธ์ของ "Candidate (none)" หรือ "ไม่พบแพ็คเกจ X" เป็นต้น


โหวตขึ้นตอนนี้ แต่อย่างที่คุณบอกว่ามันเป็นบางส่วน อย่าลังเลที่จะลบความคิดเห็นทั้งหมดของคุณว่าเป็นคำตอบแล้ว ขอบคุณสำหรับความช่วยเหลือของคุณ
kiri

15

ฉันเชื่อว่านี่ไม่ใช่กรณีของ XY และคุณเพียงต้องการที่จะสามารถแก้ไขข้อบกพร่อง apt-get โดยทั่วไปพูด ภายใต้สมมติฐานดังกล่าวนี่คือคำตอบของฉัน

จากman apt.conf:

ตัวเลือกการดีบัก

ตัวเลือกการเปิดใช้งานในส่วน Debug :: จะทำให้ข้อมูลการดีบักถูกส่งไปยังสตรีมข้อผิดพลาดมาตรฐานของโปรแกรมที่ใช้ไลบรารี apt หรือเปิดใช้งานโหมดโปรแกรมพิเศษที่มีประโยชน์สำหรับการดีบักพฤติกรรมของ apt เป็นหลัก

ดังนั้นคุณจะต้องเปิดใช้งานกฎสำหรับพฤติกรรมการดีบักแต่ละรายการของapt-get:

  • Debug :: pkgProblemResolver : เปิดใช้งานเอาต์พุตเกี่ยวกับการตัดสินใจที่ทำโดย dist-upgrade, upgrade, install, remove, purge
  • Debug :: NoLocking : ปิดใช้งานการล็อกไฟล์ทั้งหมด สิ่งนี้สามารถใช้เพื่อรันการดำเนินการบางอย่าง (ตัวอย่างเช่น apt-get -s install) ในฐานะผู้ใช้ที่ไม่ใช่รูท
  • Debug :: pkgDPkgPM : พิมพ์บรรทัดคำสั่งจริงทุกครั้งที่ apt เรียก dpkg (1)

3 รายการแรกเป็นหน้าแรกที่แนะนำโดยคนแรกจะช่วยให้คุณแก้ไขข้อผิดพลาดแรกที่คุณแสดง สำหรับวินาทีคุณอาจต้อง:

  • Debug :: Acquire :: http : พิมพ์ข้อมูลที่เกี่ยวข้องกับการดาวน์โหลดแพ็คเกจโดยใช้ HTTP นอกจากนี้ยังมีhttps, ,ftpcdrom

หน้าคนที่มีอื่น ๆ man apt.conf | grep -A5 -i debugอีกมากมายคุณสามารถแสดงรายการได้อย่างง่ายดายโดยใช้

ทั้งหมดนี้ควรเขียนโดยใช้ไวยากรณ์ที่ถูกต้องและยอมรับค่าบูลีน:

Debug::*::*  "true";

หรือถ้าคุณต้องการใช้หลายบรรทัด:

Debug {
  Acquire {
    http "true";
    ftp "true";
  };
  NoLocking "true";
};

หากคุณต้องการใช้สำหรับ apt-get เท่านั้นคุณสามารถใช้สวิตช์-o/ --option:

sudo apt-get -o Debug::pkgProblemResolver=true -o Debug::Acquire::http=true -f install 

อีกวิธีหนึ่งคือการสร้างไฟล์กำหนดค่าส่วนบุคคลของคุณและโหลดด้วยปุ่ม-c/ --config-fileswitch:

sudo apt-get -c debug-apt.conf install hello

เกี่ยวกับการเปลี่ยนรหัสออกผมเชื่อว่าคุณไม่สามารถทำได้จนกว่าคุณจะเปลี่ยนรหัสต้นฉบับ apt-getเป็นซอฟต์แวร์ที่ล้ำสมัยเนื่องจากมีวิธีการขั้นสูงในการดีบักกระบวนการโดยไม่จำเป็นต้องอาศัยรหัสทางออก


ฉันพยายามวางคำสั่งเหล่านี้ในสคริปต์ที่สามารถทำงานแบบอัตโนมัติได้ ฉันจะใช้สิ่งนี้ในสคริปต์ทุบตีเพื่อค้นหาว่าเกิดข้อผิดพลาดครั้งแรกได้อย่างไร
kiri

ฉันต้องการทำเช่นนี้เฉพาะในกรณีที่ระบุapt-getไม่ใช่ตลอดเวลา
kiri

@ minerz029 คุณสามารถใช้-oตัวเลือกเพื่อเรียกใช้คำสั่ง ad-hoc อัปเดตคำตอบของฉัน
Braiam

เกี่ยวกับความคิดเห็นแรกคุณควรทำสิ่งที่ฉลาดด้วยการแยกวิเคราะห์ผลลัพธ์ ฉันไม่มีความคิดที่ไม่มีสายตาวิธีที่คุณจะทำเช่นนั้นได้
Braiam

จริง ๆ แล้วฉันได้รับมันเพื่อทำงานกับ grepping ผลลัพธ์ของapt-cache policy PACKAGEตามที่ Jos กล่าว ผมพยายามที่จะตรวจสอบว่าแพคเกจติดตั้งเป็นผมอาจจะไม่ได้ถามคำถามขวาของฉัน แต่นี้เป็นคำตอบที่ดี
ฮาราคีรี
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.