“ ไม่พบแพ็คเกจ” ในขณะที่พยายามติดตั้งแพ็คเกจด้วย APT


209

เมื่อฉันพยายามติดตั้งแพคเกจใด ๆ ผ่านบรรทัดคำสั่งฉันได้รับข้อผิดพลาด

$ sudo apt-get install <package>
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package <package>

ใครสามารถช่วยฉันในเรื่องนี้?


5
สิ่งนี้กำลังจะเกิดขึ้นเร็ว ๆ นี้เนื่องจากเซิร์ฟเวอร์ 18.04 มีเอกภพ, ลิขสิทธิ์และ backport ถูกปิดใช้งานตามค่าเริ่มต้น
wjandrea

1
มีปัญหาเกี่ยวกับ launchpad สำหรับการปรับปรุงคำใบ้ที่มีประโยชน์เมื่อป้อนคำสั่งไม่ได้ติดตั้งหรือไม่? (เพียงบอกเป็นนัยว่ามันอยู่ในพื้นที่เก็บข้อมูลที่ไม่ได้เปิดใช้งานจะมีประโยชน์มาก)
Thorbjørn Ravn Andersen

นี่คือสิ่งที่ฉันได้รับผลกระทบอย่างมากเมื่อฉันสร้างตู้คอนเทนเนอร์โดยปกติจะมีทั้งนักเทียบท่าและภาวะเอกฐาน ในภาชนะบรรจุที่เป็นเอกเทศคุณมีตัวเลือกบูตที่แตกต่างกันในหมู่พวกเขาเป็นและdebootstrap dockerด้วยเหตุผลบางอย่างถ้าผมใช้debootstrapในการเริ่มต้นที่มีฐานอูบุนตูภาพ (เช่นxenial) apt-getผมตีข้อผิดพลาดนี้ที่แพคเกจบางอย่างไม่สามารถจะพบกับ การแก้ปัญหาจบลงด้วยการเปลี่ยนไปใช้dockerBootStrap จากนั้นจะทำงานอีกครั้ง
user5359531

นี่เป็นการหยุดความคืบหน้าของฉันในช่วงสองสามวันที่ผ่านมาและมันไม่ได้เกิดจากเอกภพ, ลิขสิทธิ์หรือ backport ถูกปิดการใช้งานตามที่ wjandrea แนะนำ
Jackalope

@Jackalope sudo apt updateแล้วบางทีชื่อแพคเกจไม่ถูกต้องหรือคุณจำเป็นต้องใช้ ใช้apt-cache searchตามด้วยคำค้นหาเพื่อค้นหาชื่อแพ็คเกจที่ถูกต้อง
mchid

คำตอบ:


155

ก่อนอื่นให้ตรวจสอบว่ามีแพ็คเกจจริงหรือไม่:

  1. ไปที่packages.ubuntu.comด้วยเว็บเบราว์เซอร์
  2. เลื่อนลงไปที่ "ค้นหาแพ็คเกจไดเรกทอรี"
  3. ป้อนแพคเกจที่คุณพยายามติดตั้งในช่อง "คำหลัก"

    เปิดใช้งาน "แสดงเฉพาะการจับคู่ที่ตรงกันเท่านั้น:"

    เปลี่ยน "การกระจาย" เป็นอูบุนตูที่คุณใช้งานอยู่

    ป้อนคำอธิบายรูปภาพที่นี่

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

หากพบผลลัพธ์มีแพ็คเกจอยู่และคุณสามารถดำเนินการตามขั้นตอนเหล่านี้ได้:

  1. เปิดแหล่งที่มาของซอฟต์แวร์ (หรือซอฟต์แวร์ & การอัปเดตใน 13.04+) โดยค้นหาใน Dash
  2. เปิดแท็บ "ซอฟต์แวร์ Ubuntu"
  3. ตรวจสอบให้แน่ใจว่าช่องทำเครื่องหมาย 4 ช่องแรกบนแท็บนี้เปิดใช้งาน:

    ป้อนคำอธิบายรูปภาพที่นี่

  4. อัพเดตรายการแพ็กเกจจากนั้นทดสอบด้วยคำสั่งเหล่านี้:

    sudo apt-get update
    sudo apt-get install <TEST_PACKAGE>
    

44
ฉันพบว่าวิเรียบง่ายsudo apt-get updateเพียงพอที่จะแก้ไขให้ฉันได้ ไมล์สะสมของคุณอาจแตกต่างกันไป
Edward Falk

1
sudo apt-get updateใช้ได้กับฉันบน Ubuntu บน Windows 10 (สิ่งนี้สำคัญเพราะ UI ที่อ้างอิงในครึ่งหลังของคำตอบนี้ไม่มีอยู่ในระบบนั้น)
James

1
ภาพหน้าจอซอฟต์แวร์และการอัปเดตช่วยฉัน !!
Kalpesh Soni

อย่าลืมที่จะค้นหาlaunchpad.netเช่นกัน!
Jonathan

1
ฉันใช้เซิร์ฟเวอร์จากเชลล์และไม่สามารถเปิด GUI ได้ เป็นไปได้หรือไม่ที่จะแก้ไขด้วยบรรทัดคำสั่งเท่านั้น?
Ulysses Alves

81

มีคำถามมากมายเกี่ยวกับหัวข้อนี้ ที่นี่ฉันให้คำตอบพื้นฐาน / ทั่วไป

เมื่อapt-get installไม่สามารถค้นหาแพ็คเกจแพ็คเกจที่คุณต้องการติดตั้งจะไม่พบในที่เก็บที่คุณเพิ่มไว้ (ที่อยู่ใน/etc/apt/sources.listและใต้/etc/apt/sources.list.d/)

ขั้นตอน (ทั่วไป) ต่อไปนี้ช่วยในการแก้ปัญหานี้:

  1. ตรวจสอบให้แน่ใจว่าคุณได้เปิดใช้งานที่เก็บ Ubuntu:

    ต้องการเปิดใช้งานที่เก็บทั้งหมด ( main, universe, restricted, multiverse) ใช้คำสั่งต่อไปนี้:

    sudo add-apt-repository main
    sudo add-apt-repository universe
    sudo add-apt-repository restricted
    sudo add-apt-repository multiverse
    

    เยี่ยมชมวิธีใช้สำหรับข้อมูลเพิ่มเติม

  2. สำหรับการค้นหา PPA สำหรับแพ็คเกจเพิ่มเติม:

    • ไปที่อูบุนตูแพคเกจการค้นหา (อธิบายไว้แล้วในคำตอบนี้ )
    • สำหรับที่เก็บข้อมูลภายนอกให้ไปที่การอัปเดต Ubuntuและจอภาพปุ่มค้นหา หรือเยี่ยมชม สัญญาซื้อขายไฟฟ้า
    • หรือค้นหาในLaunchpad ppa
    • ค้นหา ppa ที่เหมาะสมตามรุ่นของ Ubuntu
  3. เพิ่ม PPA (โดยบรรทัดคำสั่ง) :

    ใช้คำสั่งนี้:

    sudo add-apt-repository ppa:<repository-name>
    

    เยี่ยมชมความช่วยเหลือของชุมชน Ubuntuสำหรับข้อมูลเพิ่มเติม

  4. อย่าลืมอัปเดต (ทำให้เข้าใจการเปลี่ยนแปลงของคุณ):

    จำเป็นต้องรันคำสั่งนี้หลังจากเปลี่ยนที่เก็บ:

    sudo apt-get update
    

    การเลือกเซิร์ฟเวอร์ดาวน์โหลดที่ดีที่สุดอาจช่วยให้การอัปเดตเร็วขึ้น

  5. ในที่สุดติดตั้งแพคเกจ:

    sudo apt-get install <package>
    

    อ้างถึงแพคเกจการจัดการโดย commandline

    เพิ่มเติม / เคล็ดลับ : คุณสามารถหาที่ถูกต้องแพคเกจชื่อ (เช่นชื่อในพื้นที่เก็บข้อมูล) apt-cache search <package-name>โดยใช้



หมายเหตุ : หากแพ็กเกจไม่พร้อมใช้งานบนที่เก็บวิธีใด ๆ กว่าที่คุณต้องรอจนกว่าจะพร้อมใช้งาน (ในกรณีของเวอร์ชันใหม่ / ที่อัพเดต) หรือใช้กระบวนการติดตั้งอื่นที่ไม่ใช่apt-getเช่นรวบรวมจากแหล่งดาวน์โหลดไบนารีที่ปฏิบัติการได้เป็นต้น


3
อาจเป็นไปได้ว่าผู้ใช้กำลังค้นหาlibnameเมื่อlibname2อยู่ใน Debian / Ubuntu
saiarcot895

3
อันดับแรกขึ้นอยู่กับแพคเกจและคุณกำลังทำข้อสันนิษฐาน ขั้นแรกให้คุณสมมติว่า OP ได้ระบุชื่อแพ็คเกจที่ถูกต้องตามที่ระบุโดย saiarcot895 ประการที่สองที่คุณสมมติว่ามีแพ็คเกจนี้ โดยทั่วไปจะเป็นการดีที่สุดที่จะระบุปัญหาก่อน จากนั้นถ้าเป็นไปได้ติดตั้งจากที่เก็บทั้งหมด ppa เป็นตัวเลือกที่สองยกเว้นว่ามีความต้องการเฉพาะ หากแพ็กเกจไม่ได้อยู่ในที่เก็บหรือ ppa อาจจำเป็นต้องรวบรวมจากแหล่งที่มา คุณมีข้อมูลไม่เพียงพอ
Panther

@ saiarcot895 @ bodhi.zazen: คำตอบที่แก้ไขแล้วพร้อมการจัดหาapt-cache searchเพื่อค้นหาชื่อแพ็กเกจที่ถูกต้องจากที่เก็บ
Pandya

คำตอบที่ยอดเยี่ยมชายคนหนึ่งที่ควรจะเป็นผู้ชนะ
sdream

9

xbmcมีให้ใช้งานในที่เก็บจักรวาลเท่านั้นตั้งแต่ Ubuntu 12.04 (แม่นยำ) หากคุณมี Ubuntu รุ่นเก่ากว่าคุณจะต้องอัปเกรดหรือรับ xbmc จากที่อื่น

หากคุณมี Ubuntu 12.04 ตรวจสอบให้แน่ใจว่าคุณได้เปิดที่เก็บข้อมูลจักรวาลแล้ว คุณสามารถดูว่าที่เก็บข้อมูลใดที่คุณเปิดใช้งานในไฟล์/etc/apt/sources.list(และในไฟล์ในไดเรกทอรี/etc/apt/sources.list.d) ตรวจสอบว่าไฟล์นี้มีบรรทัดที่เหมือนกัน

deb http://al.archive.ubuntu.com/ubuntu/ precise universe

หรือ

deb http://zw.archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse

หากคุณพบสายเหมือน

deb http://mn.archive.ubuntu.com/ubuntu/ precise main restricted

และไม่มีบรรทัดที่มีuniverseเพิ่มuniverseที่ส่วนท้ายของบรรทัดนั้นหรือแยกบรรทัดด้วยprecise universeตามที่แสดงด้านบน

หากคุณต้องการแก้ไข/etc/apt/sources.listให้เรียกใช้sudo apt-get updateหลังจากนั้นลองติดตั้งอีกครั้ง ถ้าแพคเกจยังคงไม่พบโพสต์เนื้อหาที่สมบูรณ์ของและการส่งออกของ/etc/apt/sources.listsudo apt-get update


@EliahKagan ฉันไม่คิดว่าคำตอบของฉันอาจตีความได้ว่าฉันพยายามอธิบายให้ชัดเจน ทำไมไม่alและzw? (ผมพยายามที่จะเลือกกระจกที่เหมาะสมสำหรับ OP เมื่อพวกเขาให้เบาะแส แต่ที่นี่ผมไม่มีความคิด.)
กิลส์

5

ฉันใหม่กับ Ubuntu แต่ฉันกำลังเขียนสิ่งนี้เนื่องจากฉันค้นพบวิธีแก้ไขปัญหาเพื่อหลีกเลี่ยงข้อผิดพลาด "ไม่สามารถค้นหาแพคเกจ" มีสามสถานการณ์ที่สิ่งนี้อาจเกิดขึ้นกับความตกใจ

  1. หลังจากติดตั้ง Ubuntu หากคุณไม่อัปเดตแล้วตามด้วยการอัปเกรดอาจเกิดขึ้นได้
  2. หากมีความอุดมสมบูรณ์ของการปรับปรุงซอฟต์แวร์ที่จะเกิดขึ้นในอนาคตให้แน่ใจว่าทุกโปรแกรมปรับปรุงความปลอดภัยที่สำคัญ / แนะนำการปรับปรุงจะปิดโดยพิมพ์คำว่า " การปรับปรุงผู้จัดการ " ในการกด+AltF2
  3. ปัญหาที่หนึ่งและสองสามารถเกิดขึ้นได้แม้หลังจากอัพเดตหรือล้างการอัพเดตทั้งหมด แต่การแก้ปัญหาที่เป็นนิรันดร์: ลองจุดที่ 1 และ 2 จากนั้นพิมพ์sudo apt-get killmanagerหากไม่ได้ทำงานไม่มีปัญหาดำเนินการพิมพ์แล้วพิมพ์sudo apt-get updatesudo apt-get upgrade

ตอนนี้คุณควรจะสามารถติดตั้งซอฟต์แวร์ใด ๆ ผ่านทางเทอร์มินัล


หากคุณยังคงได้รับข้อผิดพลาดในบรรทัด "sudo apt-get update" ลองใช้ "sudo apt-get upgrade" มันจะใช้ได้ .. Guys !! โปรดตรวจสอบให้แน่ใจว่าคุณใช้คำสั่งทั้งหมดด้วยตัวอักษรตัวเล็กเช่น "sudo" แทน "Sudo"
Shaan Sundar

5

ในกรณีที่พยายามติดตั้งไฟล์:

sudo apt-get install libstdc++.so.6

แทนแพ็คเกจ คุณได้รับข้อความแสดงข้อผิดพลาด:

E: Unable to locate package libstdc++.so.6
E: Couldn't find any package by regex 'libstdc++.so.6'

เนื่องจากคุณพยายามติดตั้งไฟล์libstdc++.so.6ที่คุณไม่สามารถติดตั้งได้เนื่องจากไฟล์นั้นอยู่ในแพ็คเกจเดเบียน

คุณสามารถใช้apt-fileเพื่อค้นหาแพ็คเกจที่มีไฟล์นั้น หากต้องการติดตั้งให้พิมพ์:

sudo apt-get install apt-file

จากนั้นคุณต้องอัปเดตดัชนี

sudo apt-file update

หลังจากนั้นคุณสามารถค้นหาแพ็คเกจที่มีไฟล์libstdc++.so.6:

sudo apt-file find libstdc++.so.6

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

libstdc++6: /usr/lib/x86_64-linux-gnu/libstdc++.so.6

จากนั้นคุณสามารถติดตั้งแพ็คเกจที่ต้องการlibstdc++6:

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