apt ให้คำเตือน“ อินเทอร์เฟซ CLI ไม่เสถียร”


63

ฉันกำลังเขียนสคริปต์ที่จำเป็นต้องอ่านไฟล์ที่มีข้อมูลของแพคเกจที่ฉันเขียนบรรทัดนี้

apt show $PACKAGE_NAME > pack_info.txt

อย่างไรก็ตามสิ่งนี้จะไม่สร้างpack_info.txtไฟล์และจะให้คำเตือนนี้เสมอ:

คำเตือน: apt ไม่มีส่วนต่อประสาน CLI ที่เสถียร ใช้ด้วยความระมัดระวังในสคริปต์

ในขณะที่ฉันพยายามเปลี่ยนเส้นทางทั้งSTDOUT& STDERRใช้&>และมันทำงานออกเพื่อให้ไฟล์pack_info.txtที่เราต้องการ

ฉันพยายามรับเนื้อหาจากdpkgและสิ่งนี้ก็ทำงานเช่นกัน:

dpkg -s $PACKAGE_NAME > pack_info.txt

อะไรดีที่มันไม่แสดงคำเตือนหรือข้อผิดพลาด

สิ่งที่ไม่ดีคือเราไม่ต้องการใช้ dpkg และต้องการเพียง STDOUT of apt เพื่อเปลี่ยนเส้นทางไปยังไฟล์

ดังนั้นฉันมีสามคำถามที่จะถาม:

  1. เราหมายถึงอะไรอย่างแน่นอนโดย Stable CLI Interface
  2. วิธีการอย่างปลอดภัยและปราศจากข้อผิดพลาดใช้คำสั่งดังกล่าวในสคริปต์? [โปรดอธิบายด้วยตัวอย่าง]
  3. มีวิธีในการเปลี่ยนเส้นทาง STDOUT apt showไปยังไฟล์เท่านั้นหรือไม่

คำตอบ:


80

aptสำหรับเทอร์มินัลและให้เอาต์พุตที่สวยงามในขณะที่apt-getและapt-cacheสำหรับสคริปต์และให้เอาต์พุตที่เสถียรและวิเคราะห์ได้ สคริปต์ที่เทียบเท่ากับapt showคำสั่งของคุณคือ:

apt-cache show $PACKAGE_NAME >pack_info.txt

ตอนนี้เพื่อตอบคำถามของคุณทีละ:

เราหมายถึงอะไรอย่างแน่นอนโดย Stable CLI Interface

aptเอาต์พุตของสคริปต์ไม่สามารถใช้งานได้ดี ตัวอย่างเช่นapt install(เปรียบเทียบกับapt-get install) แสดงแถบความคืบหน้าที่ไร้ประโยชน์สำหรับสคริปต์และสามารถโยนข้อผิดพลาดเมื่อแยกวิเคราะห์ผลลัพธ์ apt show firefoxแสดงคำใบ้สำหรับบันทึกเพิ่มเติมซึ่งยังไม่มีประโยชน์โดยสิ้นเชิงในสคริปต์คุณต้องการให้ส่งออกทุกระเบียนที่นั่นนั่นคือสิ่งที่apt-cache show firefoxทำ เรามาดูสิ่งที่man aptจะพูดเกี่ยวกับที่:

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

คุณสมบัติทั้งหมดของapt (8) มีอยู่ในเครื่องมือ APT เฉพาะเช่นapt-get (8) และapt-cache (8) เช่นกัน apt (8) เพียงแค่เปลี่ยนค่าเริ่มต้นของตัวเลือกบางตัว (ดูapt.conf (5) และเฉพาะขอบเขต Binary) ดังนั้นคุณควรใช้คำสั่งเหล่านี้ (อาจมีการเปิดใช้งานตัวเลือกเพิ่มเติมบางอย่าง) ในสคริปต์ของคุณเนื่องจากพวกเขารักษาความเข้ากันได้ย้อนหลังให้มากที่สุด


วิธีการอย่างปลอดภัยและปราศจากข้อผิดพลาดใช้คำสั่งดังกล่าวในสคริปต์?

เพียงแค่ใช้apt-getหรือตามลำดับแทนธรรมดาapt-cache apt:) ดูคำตอบนี้เพื่อดูรายการเทียบเท่า


มีวิธีการเพียงและเปลี่ยนเส้นทาง STDOUT ของ apt แสดงเป็นไฟล์หรือไม่

คุณไม่ว่าถูกต้องแล้ว: >fileหรือ1>fileเปลี่ยนเส้นทาง stdout, 2>fileเปลี่ยนเส้นทาง stderr และเปลี่ยนเส้นทางทั้ง&>filefile

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