วิธีทำให้ "python" เป็นนามแฝงของ "python3" ทั้งระบบบน Debian
การอัปเดตล่าสุดของระบบทดสอบ Debian ของฉันได้ลบ Python เวอร์ชัน 2 และฉันติดตั้ง Python 3 ไว้python3เท่านั้น ไม่มีใครอีกแล้วคำสั่งใด ๆ pythonที่ชื่อ สิ่งนี้ทำให้สคริปต์หลายตัวล้มเหลวรวมถึงสคริปต์ที่เข้ากันได้กับ Python 3
ผมจะมีความสนใจในการรู้จักสิ่งที่เป็นวิธีที่เหมาะสมในการกำหนดค่าทั่วโลกเป็นชื่อแทนสำหรับpythonpython3
วิธีแก้ปัญหาที่สกปรกอย่างหนึ่งคือการทำบางอย่างด้วยตนเองsudo ln -s /usr/bin/python{3,}แต่ฉันกังวลว่าการอัปเดต APT ในอนาคตอาจไม่แข็งแรง (หรือหากติดตั้ง Python 2 ใหม่ในภายหลัง) อีกทางเลือกหนึ่งคือการตั้งนามแฝง แต่จะใช้ได้กับผู้ใช้ของฉันเท่านั้นไม่ใช่สำหรับทั้งระบบ
ฉันทราบด้วยว่าบน Ubuntu มีแพ็คเกจpython-is-python3ที่ทำสิ่งนี้ได้อย่างแม่นยำ แต่ไม่มีแพ็คเกจดังกล่าวใน Debian
คำตอบ
หากคุณต้องการที่จะติดกฎที่ทุกอย่างใน/usrนอกเหนือจากการ/usr/localควรมาจากแพคเกจที่จริงผมจะดาวน์โหลดแพคเกจและติดตั้งที่ จัดส่งเฉพาะsymlink และเอกสารที่จำเป็นเท่านั้นและความสัมพันธ์ของแพ็คเกจไม่น่าจะทำให้เกิดปัญหาในอนาคตpython-is-python3/usr/bin/python
นามแฝงจะไม่ช่วยเรื่อง Shebangs ของสคริปต์ของคุณและเนื่องจากแพคเกจ Python ไม่ใช้ทางเลือกอื่นการสร้างทางเลือก ( update-alternativesฯลฯ ) ของคุณเองจะไม่ใช่วิธีแก้ปัญหาที่มีประสิทธิภาพ
หากสคริปต์ของคุณใช้/usr/bin/env pythonคุณสามารถเพิ่มลิงก์ด้วยตนเอง/usr/local/binแทนได้
ไม่ว่าคุณจะตัดสินใจทำอะไรต่อจากนี้ไปแพ็คเกจที่ขึ้นกับ Python ใน Debian จะต้องใช้งานอย่างชัดเจนpython2หรือpython3ใน Shebangs ดังนั้นคุณจะไม่พบปัญหาที่เกิดจากแพ็คเกจจากที่เก็บอย่างเป็นทางการ (ใน Debian 11 และใหม่กว่าไม่รวม ไม่เสถียรและอยู่ระหว่างการทดลองเนื่องจากตอนนี้ยังมีแพ็คเกจ Python เก่าซึ่งยังไม่ได้รับการล้างข้อมูล)
ดูเหมือนว่า Debian อยู่ในขณะนี้การจัดส่งสินค้าหลามเป็น-python3ตัวเอง (ในซิดและการทดสอบเช่นการเขียนนี้) sudo apt update && sudo apt install python-is-python3ดังนั้นสถานที่ตั้งของคำถามที่ไม่ถือและคุณก็สามารถ: