Chúng tôi đã xây dựng tệp rpm ứng dụng bằng fpm.
Ở đó, chúng tôi đã đặt python3 làm phần phụ thuộc, vì vậy nó sẽ tự động cài đặt trước vòng/phút chính.
Nhưng nó đang cài đặt 3.7. Để thay thế bằng 3.8, chúng ta cần kiểm tra phiên bản hệ điều hành trước xem đó là centos hay awslinux và dựa vào đó chúng ta cần cài đặt rpm cụ thể.
Vì vậy, tôi đã giữ các khối điều kiện này trong tập lệnh cài sẵn và chuyển đến tham số --before-install.
Tuy nhiên, nó đang bị kẹt trong quá trình cài đặt rpm.
Vì vậy, khi tôi kiểm tra bằng chế độ dài dòng.Tôi thấy rằng, nó không hoạt động với preinst.
Lý do là do cài đặt ptyhon không thể áp dụng khóa và tiếp tục cài đặt vì projectn đã khóa trên đó.
RPM: lỗi: không thể tạo khóa giao dịch trên /var/lib/rpm/.rpm.lock (Tài nguyên tạm thời không khả dụng)
Lỗi: Không thể chạy giao dịch.
+ echo 'đã phát hiện centos'
centos được phát hiện
+ Sudo yum cài đặt -yq python38
RPM: lỗi: không thể tạo khóa giao dịch trên /var/lib/rpm/.rpm.lock (Tài nguyên tạm thời không khả dụng)
Lỗi: Không thể chạy giao dịch.
Bất kỳ đề nghị bạn có thể cung cấp
Để được cụ thể hơn, xin vui lòng tìm chi tiết dưới đây.
Công cụ sử dụng để tạo rpm: fpm
Tôi cần cài đặt python3.8 dưới dạng phụ thuộc vào vòng/phút của ứng dụng.
Nếu tôi đặt đó là phần phụ thuộc bằng cách sử dụng -d python3, thì nó đang cài đặt phiên bản 3.7 trên amazon linux và 3.6 trên centos 8.
Để sử dụng phiên bản 3.8, cần thực hiện một số bước khác trước khi cài đặt gói.
Vì vậy, tôi đã xóa python3 khỏi phần phụ thuộc và thêm vào --before-install dưới dạng tập lệnh shell.
Đây là kịch bản shell tôi giữ ở đó.
#!/bin/bash
echo "Bắt đầu preinst"
echo "Đang kiểm tra phiên bản hệ điều hành"
DISTRO=$(cat /etc/*-release | grep -w NAME | cut -d= -f2 | tr -d '"' | tr '[:upper:]' '[:lower:]')
nếu [[ "$DISTRO" =~ "centos linux" ]]; sau đó
echo "đã phát hiện centos"
Sudo yum cài đặt -yq python38
elif [[ "$DISTRO" =~ "amazon linux" ]]; sau đó
tiếng vang "đã phát hiện amazon linux"
cài đặt sudo yum -yq amazon-linux-extend
sudo amazon-linux-extras kích hoạt python3.8
Sudo yum cài đặt -yq python3.8
elif [[ "$DISTRO" =~ "ubuntu" ]]; sau đó
tiếng vang "đã phát hiện Ubuntu"
Sudo apt cài đặt pyhton3 -yq
khác
echo "Cả centos hay amazon linux 2"
fi
Nó đang kích hoạt tập lệnh nhưng bị kẹt khi cài đặt python từ tập lệnh shell.
RPM: lỗi: không thể tạo khóa giao dịch trên /var/lib/rpm/.rpm.lock (Tài nguyên tạm thời không khả dụng)
Lỗi: Không thể chạy giao dịch.
+ echo 'đã phát hiện centos'
centos được phát hiện
+ Sudo yum cài đặt -yq python38
RPM: lỗi: không thể tạo khóa giao dịch trên /var/lib/rpm/.rpm.lock (Tài nguyên tạm thời không khả dụng)
Lỗi: Không thể chạy giao dịch.
Bất kỳ đề xuất về làm thế nào để sửa lỗi này?
Yêu cầu của tôi là cài đặt python3.8 như một phần của vòng quay sản phẩm của chúng tôi cũng như một phần phụ thuộc.