เราได้สร้างไฟล์ rpm ของแอปพลิเคชันโดยใช้ fpm
ที่นั่นเราได้ตั้งค่า python3 เป็นการอ้างอิง ดังนั้นมันจึงติดตั้งโดยอัตโนมัติก่อน rpm หลัก
แต่มันกำลังติดตั้ง 3.7 หากต้องการแทนที่ด้วย 3.8 เราต้องตรวจสอบเวอร์ชันของระบบปฏิบัติการก่อนว่าเป็น centos หรือ awslinux และจากนั้นเราจำเป็นต้องติดตั้ง rpm เฉพาะ
ดังนั้นฉันจึงเก็บบล็อกเงื่อนไขเหล่านี้ไว้ในสคริปต์ก่อนการติดตั้งและส่งต่อไปยังพารามิเตอร์ --before-install
แต่มันติดขัดระหว่างการติดตั้ง rpm
ดังนั้น เมื่อฉันตรวจสอบด้วยโหมดรายละเอียดฉันพบว่ามันไม่ทำงานกับพรีอินสท์
เหตุผลคือการติดตั้ง ptyhon ไม่สามารถใช้การล็อคและดำเนินการติดตั้งต่อได้เนื่องจาก projectn ได้รับการล็อคแล้ว
RPM: ข้อผิดพลาด: ไม่สามารถสร้างการล็อกธุรกรรมบน /var/lib/rpm/.rpm.lock (ทรัพยากรไม่พร้อมใช้งานชั่วคราว)
ข้อผิดพลาด: ไม่สามารถทำธุรกรรมได้
+ echo 'ตรวจพบ centos'
ตรวจพบ centos
+ sudo yum ติดตั้ง -yq python38
RPM: ข้อผิดพลาด: ไม่สามารถสร้างการล็อกธุรกรรมบน /var/lib/rpm/.rpm.lock (ทรัพยากรไม่พร้อมใช้งานชั่วคราว)
ข้อผิดพลาด: ไม่สามารถทำธุรกรรมได้
คำแนะนำใด ๆ ที่คุณสามารถให้ได้
หากต้องการเจาะจงมากขึ้น โปรดดูรายละเอียดด้านล่าง
เครื่องมือที่ใช้สร้าง rpm: เอฟพีเอ็ม
ฉันต้องติดตั้ง python3.8 เป็นการพึ่งพาแอปพลิเคชัน rpm
ถ้าฉันตั้งค่านั้นเป็นการพึ่งพาโดยใช้ -d python3 แสดงว่ากำลังติดตั้งเวอร์ชัน 3.7 บน amazon linux และ 3.6 บน centos 8
หากต้องการใช้เวอร์ชัน 3.8 มีขั้นตอนอื่นๆ อีกเล็กน้อยที่ต้องดำเนินการก่อนติดตั้งแพ็คเกจ
ดังนั้นฉันจึงลบ python3 ออกจากส่วนการพึ่งพาและเพิ่ม --before-install เป็นเชลล์สคริปต์
นี่คือเชลล์สคริปต์ที่ฉันเก็บไว้ที่นั่น
#!/bin/bash
echo "เริ่มพรีอินท์"
echo "กำลังตรวจสอบเวอร์ชันระบบปฏิบัติการ"
DISTRO=$(cat /etc/*-release | grep -w NAME | cut -d= -f2 | tr -d '"' | tr '[:upper:]' '[:lower:]')
ถ้า [[ "$DISTRO" =~ "centos ลินุกซ์" ]]; แล้ว
echo "ตรวจพบ centos"
sudo yum ติดตั้ง -yq python38
elif [[ "$DISTRO" =~ "อเมซอน ลินุกซ์" ]]; แล้ว
echo "ตรวจพบ amazon linux"
sudo yum ติดตั้ง -yq amazon-linux-extras
sudo amazon-linux-extras เปิดใช้งาน python3.8
sudo yum ติดตั้ง -yq python3.8
elif [[ "$DISTRO" =~ "อูบุนตู" ]]; แล้ว
echo "ตรวจพบอูบุนตู"
sudo apt ติดตั้ง pyhton3 -yq
อื่น
echo "ทั้ง centos และ amazon linux 2"
ไฟ
มันกำลังเรียกใช้สคริปต์ แต่ติดอยู่ที่การติดตั้ง python จากเชลล์สคริปต์
RPM: ข้อผิดพลาด: ไม่สามารถสร้างการล็อกธุรกรรมบน /var/lib/rpm/.rpm.lock (ทรัพยากรไม่พร้อมใช้งานชั่วคราว)
ข้อผิดพลาด: ไม่สามารถทำธุรกรรมได้
+ echo 'ตรวจพบ centos'
ตรวจพบ centos
+ sudo yum ติดตั้ง -yq python38
RPM: ข้อผิดพลาด: ไม่สามารถสร้างการล็อกธุรกรรมบน /var/lib/rpm/.rpm.lock (ทรัพยากรไม่พร้อมใช้งานชั่วคราว)
ข้อผิดพลาด: ไม่สามารถทำธุรกรรมได้
ข้อเสนอแนะใด ๆ เกี่ยวกับวิธีการแก้ไขปัญหานี้?
ความต้องการของฉันคือการติดตั้ง python3.8 เป็นส่วนหนึ่งของผลิตภัณฑ์ของเรา rpm และเป็นการพึ่งพา