sudo apt-get install libstdc ++


16

เมื่อฉันพยายามติดตั้งlibstdc++โดยใช้:

sudo apt-get install libstdc++

ฉันได้รับข้อผิดพลาดด้านล่างใน Ubuntu คุณมีความคิดเกี่ยวกับมันหรือไม่?

The following packages have unmet dependencies:
 libstdc++-4.8-doc : Conflicts: libstdc++6-4.4-doc but 4.4.7-8ubuntu1 is to be installed
                     Conflicts: libstdc++6-4.6-doc but 4.6.4-6ubuntu2 is to be installed
                     Conflicts: libstdc++6-4.7-doc but 4.7.3-12ubuntu1 is to be installed
 libstdc++-4.9-doc : Conflicts: libstdc++-4.8-doc but 4.8.5-2ubuntu1~14.04.1 is to be installed
                     Conflicts: libstdc++6-4.4-doc but 4.4.7-8ubuntu1 is to be installed
                     Conflicts: libstdc++6-4.6-doc but 4.6.4-6ubuntu2 is to be installed
                     Conflicts: libstdc++6-4.7-doc but 4.7.3-12ubuntu1 is to be installed
 libstdc++-5-doc : Conflicts: libstdc++-4.8-doc but 4.8.5-2ubuntu1~14.04.1 is to be installed
                   Conflicts: libstdc++-4.9-doc but 4.9.3-8ubuntu2~14.04 is to be installed
                   Conflicts: libstdc++6-4.4-doc but 4.4.7-8ubuntu1 is to be installed
                   Conflicts: libstdc++6-4.6-doc but 4.6.4-6ubuntu2 is to be installed
                   Conflicts: libstdc++6-4.7-doc but 4.7.3-12ubuntu1 is to be installed
 libstdc++6-4.6-dbg : Conflicts: libstdc++6-4.4-dbg but 4.4.7-8ubuntu1 is to be installed
 libstdc++6-4.6-doc : Conflicts: libstdc++6-4.4-doc but 4.4.7-8ubuntu1 is to be installed
 libstdc++6-4.7-dbg : Conflicts: libstdc++6-4.4-dbg but 4.4.7-8ubuntu1 is to be installed
                      Conflicts: libstdc++6-4.6-dbg but 4.6.4-6ubuntu2 is to be installed
 libstdc++6-4.7-doc : Conflicts: libstdc++6-4.4-doc but 4.4.7-8ubuntu1 is to be installed
                      Conflicts: libstdc++6-4.6-doc but 4.6.4-6ubuntu2 is to be installed
 libstdc++6-4.8-dbg : Conflicts: libstdc++6-4.4-dbg but 4.4.7-8ubuntu1 is to be installed
                      Conflicts: libstdc++6-4.6-dbg but 4.6.4-6ubuntu2 is to be installed
                      Conflicts: libstdc++6-4.7-dbg but 4.7.3-12ubuntu1 is to be installed
 libstdc++6-4.8-dbg-armhf-cross : Conflicts: libstdc++6-4.7-dbg-armhf-cross but 4.7.3-11ubuntu1cross1.85 is to be installed
 libstdc++6-4.9-dbg : Conflicts: libstdc++6-4.4-dbg but 4.4.7-8ubuntu1 is to be installed
                      Conflicts: libstdc++6-4.6-dbg but 4.6.4-6ubuntu2 is to be installed
                      Conflicts: libstdc++6-4.7-dbg but 4.7.3-12ubuntu1 is to be installed
                      Conflicts: libstdc++6-4.8-dbg but 4.8.5-2ubuntu1~14.04.1 is to be installed
 libstdc++6-5-dbg : Conflicts: libstdc++6-4.4-dbg but 4.4.7-8ubuntu1 is to be installed
                    Conflicts: libstdc++6-4.6-dbg but 4.6.4-6ubuntu2 is to be installed
                    Conflicts: libstdc++6-4.7-dbg but 4.7.3-12ubuntu1 is to be installed
                    Conflicts: libstdc++6-4.8-dbg but 4.8.5-2ubuntu1~14.04.1 is to be installed
                    Conflicts: libstdc++6-4.9-dbg but 4.9.3-8ubuntu2~14.04 is to be installed
E: Unable to correct problems, you have held broken packages.

เมื่อเร็ว ๆ นี้คุณได้เพิ่ม PPAS ใด ๆ
กราฟิลส์

1
ไม่มีแพคเกจชื่อจริงlibstdc++(อาจเป็นไปได้ว่าคุณกำลังพยายามติดตั้งlibstdc++6หรือไม่เนื่องจาก++ตัวอักขระเมื่อaptไม่พบชื่อที่ตรงกันจะถือว่าชื่อแพคเกจเป็นนิพจน์ทั่วไปดังนั้นในกรณีนี้จึงพยายามติดตั้งแพคเกจที่มีชื่อ การแข่งขันlibstdตามด้วยหนึ่งหรือมากกว่าc- หลายแห่งซึ่งความขัดแย้งที่คุณสามารถดู.
steeldriver

@steeldriver: นั่นเป็นคำตอบที่ชัดเจนและ imho ควรเป็นคำตอบมากกว่าที่จะแสดงความคิดเห็น (แม้ว่ามันจะช่วยให้สามารถอธิบายวิธีการหลีกเลี่ยงการรักษาสตริงเป็น regex) manpage สำหรับaptบอกว่ามันจะรักษาชื่อแพคเกจเป็น regexes ถ้าพวกเขามี., ?หรือ*โดยไม่เอ่ย+ดังนั้นพฤติกรรมที่ไม่คาดว่า
rici

คำตอบ:


12

จริง ๆ แล้วไม่มีแพคเกจที่เรียกว่าlibstdc++(อาจเป็นไปได้ว่าคุณกำลังพยายามติดตั้งlibstdc++6หรือไม่)

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

น่าเสียดายที่ฉันไม่เคยคิดที่จะปิดการทำงานนี้ (ไม่มีสิ่งใดที่ฉันเคยลองในอดีตโดยใช้ตัวละคร Escape ดูเหมือนจะใช้งานได้) - ทางออกเดียวที่ฉันรู้คือระวังให้ชื่อแพคเกจที่แน่นอนซึ่งอักขระ regex อาจตีความผิดและเพื่อให้แน่ใจว่าแคตตาล็อกของแพ็คเกจนั้นทันสมัยเช่น

sudo apt-get update
sudo apt-get install libstdc++6

สิ่งนี้ควรได้รับการยอมรับ เกี่ยวกับการเปิดปิดหนึ่งสามารถเขียนชื่อแทนหรือฟังก์ชั่นที่ตัดชื่อแพคเกจภายใน^PACKAGE$
phil294

11

เรียกใช้คำสั่งเหล่านี้ก่อน

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install build-essential
sudo apt-get install aptitude

แล้วลอง

sudo apt-get install libstdc++6

หรือลองใช้ผลการค้นหานี้และติดตั้งแพคเกจที่ต้องการจากhttp://packages.ubuntu.com/search?keywords=libstdc%2B%2B ที่ระบุไว้


2
1 คำตอบที่ดี แต่ไม่ได้libstdc++รวมอยู่ในbuild-essentialS?
Kev Inski

7
โอ้และทำไมการติดตั้งaptitudeถ้าคุณไม่ได้ใช้มันสำหรับการติดตั้งlibstdc++6?
Kev Inski

2
ขอบคุณสำหรับคำตอบของคุณ Kev ฉันพยายามให้ความเป็นไปได้ในกรณีที่ไม่ประสบความสำเร็จ และความถนัดในการจัดการข้อผิดพลาดของเขา
MAK Ripon

sudo apt-get update apt-get: เกิดข้อผิดพลาดขณะโหลด
mvladk

3
LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9

6
คุณช่วยอธิบายได้ไหมว่าทำไมผู้ใช้ต้องทำสิ่งนี้และแต่ละคำสั่งทำอะไร (ในกรณีที่มีคนอื่นอ่านคำตอบของคุณและตัดสินใจที่จะเพียงแค่คัดลอกวางสำหรับปัญหาที่ผิดหรือเปล่า?) ;-)
Fabby
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.