วิธีการแก้ไข“ การติดตั้งหลามเสียหาย”?


36

ฉันอัพเกรดจาก 13.10 เป็น 14.04 (ตอนนี้เสถียรในไม่กี่ชั่วโมง) โดยใช้do-release-upgradeและพบปัญหาต่อไปนี้:

Can not upgrade 

Your python install is corrupted. Please fix the '/usr/bin/python' symlink.

ฉันแก้ไขปัญหาหลังจากเลอะเทอะไปหน่อยดังนั้นฉันต้องการแบ่งปันวิธีแก้ปัญหาของฉันที่นี่ หวังว่านี่จะช่วยคนได้

คำตอบ:


52

ปัญหาของฉันกลับกลายเป็นว่าเป็นเพราะ/usr/bin/pythonsymlink ที่แก้ไขแล้วตามที่แนะนำในข้อความแสดงข้อผิดพลาด ผมใช้update-alternativesด้วยดังนั้นมันจึงชี้ไปที่/usr/bin/python /etc/alternatives/pythonกลับกลายdo-release-upgradeเป็นว่าเข้มงวดมากกับ symlink นี้และเพียงเลือก python2.7 ที่มีupdate-alternativesไม่เพียงพอดังนั้นฉันจึงบังคับให้มันกลับสู่สถานะเดิม:

sudo ln -sf /usr/bin/python2.7 /usr/bin/python

และนั่นก็แก้ปัญหา

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

sudo apt-get install --reinstall python

@BenjaminKohl ดีใจที่มันช่วย :)
4ae1e1

ไม่ได้/etc/alternatives/pythonsymlinked เพื่อ/usr/bin/python2.7? มีสิ่งอื่นที่มีลำดับความสำคัญสูงกว่าหรือไม่
heemayl

ฉันเกรงว่าคุณจะได้รับมันกลับ/usr/bin/python2.7เป็น.... เป็นไบนารีจริงมันไม่ควรจะเป็น symlink, symlink เป็น/etc/alternatives/python.. คุณไม่รังเกียจที่จะตรวจสอบอีกครั้งหรือไม่
heemayl

@heemayl ขออภัยความคิดเห็นของคุณผิดและพิมพ์ผิดในส่วนของฉัน /usr/bin/pythonเป็น symlink ไป/etc/alternatives/python(แน่นอนว่า/usr/bin/python2.7เป็นไบนารี แต่นั่นไม่ใช่ปัญหาที่นี่)
4ae1e1

และใช่/etc/alternatives/pythonจะ symlinked แล้วสิ่งที่คุณเลือก (ไม่จำเป็นต้อง/usr/bin/python2.7- ทำไมคุณจะต้องแม้update-alternatives? ในกรณีนั้น) แต่ประเด็นก็คือ symlinking ไม่ได้รับอนุญาตเมื่อคุณ/usr/bin/python do-release-upgrade
4ae1e1

15

อันนี้ถูกต้อง:

sudo update-alternatives --remove-all python
sudo ln -sf /usr/bin/python2.7 /usr/bin/python

2
ถูกต้องอย่างแน่นอน มันจะไม่ทำงานสำหรับฉันจนกว่าฉันจะลบสิ่งที่มีอยู่ทั้งหมดก่อนโดยใช้update-alternatives --remove-all python
TryTryAgain

4

ใน Ubuntu 18.10 ยังคงมีปัญหาเดียวกัน

กระบวนการ / usr / bin / python เชื่อมโยงกับรุ่นเก่ากว่า ถึงแม้ว่าจะมีมากกว่า 2.7 แต่กระบวนการซุปเปอร์สมาร์ทกำลังถาม (ใน 18.10!) สำหรับ P 2.7 ดังนั้นฉันจึงให้มันและมันก็เป็นที่ยอมรับ

วิธีนี้แก้ไขได้สำหรับฉัน:

1) ลบ / usr / bin / python sudo rm /usr/bin/python

2) สร้างลิงค์ใหม่ sudo ln -sf /usr/bin/python2.7 /usr/bin/python

ใน 18.10 ฉันไม่สามารถใช้หรือsudo update-alternatives --remove-all python sudo apt-get install --reinstall python

ได้ผลสำหรับฉัน หวังว่ามันจะช่วยคุณได้เช่นกัน


ls -sfแทนที่เป้าหมายดังนั้น 1) ไม่มีจุดหมายและ 2) เป็นสิ่งที่คำตอบของฉันบอกให้คุณทำ ช่างสิ้นเปลือง ...
4ae1e1

อย่าพูดจาโผงผาง: คำพูดของคุณไม่ถูกต้องและฉันบอกสิ่งที่ตรงกันข้ามกับสิ่งที่คุณบอกเกี่ยวกับ "... - ติดตั้งหลาม" ใช่ประสบการณ์ของฉันกับ 18.10 แตกต่างจากของคุณและฉันอธิบายสิ่งนี้ ไม่จำเป็นสำหรับความคิดเห็นที่ไม่ดีเลย
comments_no9

เห็น "ถ้าสิ่งนี้ไม่ได้ผลสำหรับคุณฉันคิดว่าคุณติดตั้งหลามเสียหายอย่างแท้จริง"?
4ae1e1

โดยพื้นฐานแล้วบทเรียนคือคุณอ่านสิ่งรอบตัวและเรียนรู้ว่าทำไมไม่ใช่แค่เชอร์รี่ที่บล็อกรหัสอะไรวางไว้ในเทอร์มินัลของคุณ (อันตราย) และดูว่าแท่งอะไร โดยวิธีการที่คุณsudo rmยังคงไม่มีจุดหมาย
4ae1e1

1
จริงใช้งานได้ใน 18.10 ขอบคุณ
Wings

1

สำหรับUbuntu 19.04เวอร์ชัน python เริ่มต้นคือ 3.7 ฉันได้รับข้อผิดพลาดเดียวกันขณะอัปเกรดเป็น Ubuntu 19.10 และช่วยต่อไปนี้:

sudo apt-get install --reinstall python3
sudo ln -sf /usr/bin/python3.7 /usr/bin/python3

ในกรณีที่คุณมีปัญหาร้ายแรงมากกับแพ็คเกจไพ ธ อนวิธีเดียวที่เหลืออยู่คือบังคับให้ลบมันออกแล้วติดตั้งใหม่:

sudo dpkg --remove --force-remove-reinstreq --force-depends python3
sudo apt-get -f install

0

หากคุณพบปัญหานี้/usr/bin/python3:

sudo update-alternatives --remove-all python3
sudo ln -sf /usr/bin/python3.6 /usr/bin/python3

ตรวจสอบให้แน่ใจว่าจะ symlink และไม่ได้python3.6 3.7อย่างน้อยที่ถูกต้องเมื่อมีการอัพเกรดไปUbuntu 18.1019.04

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