“ แต่ถูกอ้างถึงโดยแพ็คเกจอื่น” - การค้นหาแพ็คเกจนั้น


24

ไม่ผิดปกติสำหรับผู้ใช้ Ubuntu (หรือ distro อื่น ๆ ที่มีการจัดการแพกเกจ apt) เพื่อพบข้อผิดพลาด:

user@box ~ $ sudo apt-get install x
[sudo] password for user: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package x is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'x' has no installation candidate

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

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

ดังนั้นคำถามของฉันเป็นเรื่องทั่วไปมากขึ้นและถึงแม้ว่าฉันคาดเดาว่ามันมีคำตอบที่ค่อนข้างง่ายและไม่ใช่คำตอบที่น่าตื่นเต้นฉันไม่สามารถคิดวิธีการค้นหาด้วยวิธีเครื่องมือค้นหาแบบทั่วไปดังนั้นฉันจึงหันมาใช้ AskUbuntu: มีคำสั่งหรือตัวเลือก ใช้เพื่อพิจารณาว่าแพ็คเกจใด / แพคเกจใดที่อ้างถึงแพ็คเกจที่ขาดหายไป?

คำตอบ:


13

คุณสามารถค้นหาแพ็คเกจด้วย apt-cache:

apt-cache search x

สิ่งนี้จะส่งออกแพคเกจทั้งหมดที่ในทางใดทางหนึ่งทำให้การอ้างอิงถึง x


2
นั่นฟังดูสมเหตุสมผล ... ยกเว้นว่ามันไม่ได้ผลสำหรับฉัน apt-get install libtinfo6รายงานไม่พร้อมใช้งาน แต่อ้างถึงโดยแพ็คเกจอื่น แต่apt-cache search libtinfo6ไม่ได้ผลลัพธ์ มีวิธีอื่นในการทำสิ่งที่คล้ายกันหรือไม่?
Erhannis

@Erhannis 'terminfo' นำอะไรขึ้นมาบ้างไหม? ฉันคิดว่าบางครั้งข้อผิดพลาดนี้เกิดขึ้นเมื่อมีการเปลี่ยนชื่อแพ็คเกจอย่างสะเพร่า
Arlo James Barnes

ฉันไม่แน่ใจ. ฉันอัปเกรดเป็น Debian เวอร์ชันถัดไปและแพ็กเกจนั้นไม่ได้แสดงข้อผิดพลาดนั้นอีกต่อไป ฉันจะลองterminfoครั้งต่อไปว่ามันจะเกิดขึ้นแม้ว่า; มันเคยเกิดขึ้นมาก่อนและมันอาจจะเกิดขึ้นอีกครั้ง
Erhannis

23

บางครั้งสิ่งนี้เกิดขึ้นเพราะ APT ไม่รู้อะไรเกี่ยวกับสิ่งที่คุณกำลังพูดถึง แต่สามารถแก้ไขได้ด้วยการทำงาน:

sudo apt-get update

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


4
คุณอาจหมายถึงapt-get updateตามด้วยapt-get upgrade -yเพราะ-yข้ามการยืนยันของผู้ใช้ apt-get updateมันทำให้รู้สึกไม่ใช้กับ ถึงอย่างนั้นก็ไม่ได้ตอบคำถามเลย

4
@CelticWarrior: ผมเห็นด้วยกับคำตอบนี้ในหลักการเพราะอัปเดตข้อมูลที่เก็บแพคเกจสามารถแก้ไขปัญหานี้ถ้าใครพยายามที่จะติดตั้งแพคเกจจากที่เพิ่งเพิ่ม PPA apt-get updateและลืมที่จะวิ่ง
David Foerster

7
@ user589808 ฉันไม่คิดว่ามันเป็นคำแนะนำที่ดีมากเลย การอัพเกรด apt-get นั้นไม่จำเป็นและการกดปุ่ม -y ของทุกสิ่งสามารถทำลายสิ่งต่าง ๆ ได้มากกว่าที่จะแก้ไข ดังนั้นเวย์นจึงถูกต้องในไวยากรณ์สวัสดี
สุดเจ๋ง

1
apt-get updateตอบคำถาม AB (แพคเกจที่มีอยู่ใน repo แต่apt-get installและapt-cacheไม่ทราบเกี่ยวกับมัน.)
dcorking

1
สำหรับการมาถึงในภายหลังความคิดเห็นข้างต้นพูดถึงคำตอบนี้ คำตอบปัจจุบันsudo apt-get updateไม่มีข้อโต้แย้งและเป็นทางออกที่ถูกต้องสำหรับฉัน
Daryn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.