ขอให้ติดตั้งโปรแกรมหลังจาก“ ไม่ได้ติดตั้งโปรแกรม 'x' ในขณะนี้”


18

หากคุณพยายามรันโปรแกรมที่ไม่ได้ติดตั้งคุณจะได้รับข้อความ

The program 'x' is currently not installed. You can install it by typing: 
sudo apt-get install x

และแทนที่จะเสนอให้คุณติดตั้งโปรแกรมให้คุณคุณต้องพิมพ์คำสั่งจริง พฤติกรรมนี้สามารถเปลี่ยนแปลงได้อย่างไร?

คำตอบ:


17

แพ็คเกจที่รับผิดชอบพฤติกรรมนี้เป็นแพ็คเกจที่ไม่พบคำสั่งติดตั้งคำสั่งที่ไม่พบและมีลักษณะการทำงานที่ต้องการอยู่แล้วแม้ว่าจะปิดใช้งานตามค่าเริ่มต้น คุณสามารถเปิดใช้งานได้โดยเพิ่มบรรทัดต่อไปนี้ใน~/.bashrc

export COMMAND_NOT_FOUND_INSTALL_PROMPT=1

ตอนนี้พฤติกรรมจะเปลี่ยนเป็น

The program 'x' is currently not installed. You can install it by typing:
sudo apt-get install x
Do you want to install it? (N/y)

หมายเหตุ: ถ้าคุณได้รับข้อความเกี่ยวกับงูหลามสุดยอด (เฉพาะAttributeError: 'str' object has no attribute 'decode') นี่คือข้อผิดพลาด 1073919 การแก้ไขพร้อมใช้งานสำหรับ Raring และ Saucy แล้ว อีกทางเลือกหนึ่ง ( ผู้ใช้ขั้นสูงเท่านั้น ) คุณสามารถเปลี่ยนไฟล์/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.pyดู diff ที่แนบมากับ bugreport สำหรับบรรทัดที่ต้องเปลี่ยน

แก้ไข:การแก้ไขได้รับการเผยแพร่ในเวอร์ชั่น 0.3ubuntu7.1 ใน Raring (SRU) และสำหรับ 0.3ubuntu8 ใน Saucy


1

โซลูชันของฉันเป็นลูกผสมระหว่างความปลอดภัยและความสะดวกสบาย:

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

มันเป็นเทอร์มินัลอีมูเลเตอร์ที่คุณป้อนสภาพแวดล้อมที่การเข้าถึงไฟล์แต่ละไฟล์ได้รับการตรวจสอบก่อนถึงมือโดยอัตโนมัติและถ้าไม่มีมันจะค้นหาในฐานข้อมูล (a la apt-file) และดาวน์โหลดและติดตั้งแพ็คเกจที่ต้องการจากนั้นอนุญาตให้โปรแกรมดำเนินการต่อ . คุณควรรันมันในฐานะรูท:

sudo auto-apt

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

นอกจากนี้ยังสามารถใช้เป็นการเปลี่ยน apt-get + apt-file ซึ่งคุณสามารถติดตั้งโปรแกรมเพียงบอกcommandให้ดำเนินการ

คุณต้องเข้าใจว่าคุณไม่ควรเปิดทิ้งไว้เมื่อระบบของคุณไม่ถูกค้นหาเนื่องจากเกือบจะเหมือนกับว่าคุณกำลังใช้ผู้ใช้รูท

หน้าคน: http://derpi.tuwien.ac.at/cgi-bin/man/man2html?1+auto-apt


0

การติดตั้งอัตโนมัติจะเป็นความคิดที่ไม่ดี หากคุณต้องการบันทึกการพิมพ์บางอย่างคุณสามารถใช้

sudo apt-get install !!

ที่!!จะถูกแทนที่ด้วยคำสั่งสุดท้ายจากประวัติศาสตร์ คุณอาจทำให้นามแฝงนี้ได้เช่นกัน แต่ฉันไม่รู้วิธีเพิ่ม!!โดยไม่ทำการประเมิน

มีข้อควรระวังบางอย่างที่กล่าวถึงโดย @ eliah-kagan และ @gertvdijk ในความคิดเห็น บางโปรแกรมไม่มีชื่อแพคเกจเดียวกับไบนารีที่คุณเรียกใช้ นอกจากนี้เมื่อส่งอาร์กิวเมนต์ไปยังไบนารีสิ่งนี้อาจส่งผลให้เกิดผลลัพธ์ที่ไม่คาดคิด


แน่นอนฉันรู้ว่าคำแนะนำของฉันไม่ใช่ทางออกที่ดี แต่สามารถใช้งานได้ "ดีพอ" ตามความต้องการของผู้ใช้
l3dx

5
ชื่อคำสั่ง (ชื่อไฟล์ของไบนารีในระบบ) ไม่จำเป็นต้องเหมือนกับชื่อของแพ็คเกจ
gertvdijk

3
l3dx: แม้ว่าฉันยังคงมีความวิตกกังวลอยู่ (รวมถึงจุดของ @ gertvdijk ที่ชื่อแพ็คเกจและชื่อคำสั่งมักจะแตกต่างกันเช่นเดียวกับความกังวลเกี่ยวกับผลกระทบที่เลวร้ายมากของอาร์กิวเมนต์บรรทัดคำสั่งเพิ่มเติมที่ส่งผ่านไปยังคำสั่งเดิม) . หลังจากการทดสอบเล็กน้อยดูเหมือนว่ามันจะทำงานได้ดีกว่า (ฉันคิดว่า) มันใช้งานได้ในทางทฤษฎี ฉันยังคงแนะนำให้ขยายคำตอบนี้เพื่อความกระจ่างแจ้งเตือนและอาจให้รายละเอียดตัวเลือกอื่น ๆ ไม่ว่าในกรณีใดฉันลงคะแนนนี้ แต่ได้ลบคะแนนโหวตของฉันออก
Eliah Kagan

0

มีสองสามวิธีในการติดตั้งแพ็คเกจที่แนะนำอย่างรวดเร็ว:

  • เพิ่มexport COMMAND_NOT_FOUND_INSTALL_PROMPT=1ในบางที่เช่น~/.bashrc

    นี่เป็นวิธีที่ "เจ๋งที่สุด" แม้ว่าจะเห็นได้ชัดว่าไม่ค่อยปลอดภัย แต่อาจ 90% ของเวลาจะทำให้เกิด "ขอบคุณ" นั่นคือสิ่งที่ฉันอยากให้คุณทำ! คำตอบ

    (ข้อเสียเปรียบส่วนตัวอย่างหนึ่งของวิธีนี้คือฉันดูเหมือนจะหาคำตอบยากที่จะจำ / ค้นหาดังนั้นฉันจึงมักจะไม่ใช้มันจนถึงตอนนี้)

  • หากคุณใช้เทอร์มินัลเริ่มต้นคุณสามารถเลือกบรรทัดและคลิกกลางเพื่อวางลงในบรรทัดคำสั่งโดยตรง (เทอร์มินัลอื่นหรือแอป SSH อาจมีวิธีการที่แตกต่างกัน)

    ในทางปฏิบัติฉันมักจะพบว่ามันเร็วพอและยากกว่าที่จะ "บังเอิญ" เล็กน้อยและโดยไม่ต้องตั้งค่าล่วงหน้าใด ๆ ซึ่งฉันมักจะทำเช่นนั้นแทน

  • มีบางอย่างที่จะกล่าวแม้ว่า - ถ้าคุณสามารถ (หรือต้องการเรียนรู้) พิมพ์อย่างรวดเร็ว - สำหรับการพิมพ์sudo apt install packagenameโดยตรง

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


1
คุณอาจมีความหมายแทน~/.bashrc ~/.bash_rc
edwinksl

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