🐛 fix: Proxmox 버전 감지 및 패키지 설치 검증 오류 수정

- Proxmox 버전 감지 시 안전한 파싱 로직 추가
- openbox 등 패키지 설치 검증 시 명령어 존재 여부도 확인
- 오류 처리 강화 및 사용자 친화적 메시지 개선

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
시골약사 2025-08-24 13:37:50 +09:00
parent 3ab509492f
commit 8748a8bf9a

View File

@ -49,17 +49,36 @@ print_header() {
check_proxmox_version() {
msg_info "Proxmox VE 버전 확인 중..."
if [ ! -f /etc/pve/.version ]; then
# Proxmox VE 설치 확인
if [ ! -f /etc/pve/.version ] && ! command -v pveversion > /dev/null 2>&1; then
msg_error "Proxmox VE가 설치되어 있지 않습니다."
fi
local pve_version=$(pveversion | head -n1 | awk '{print $2}' | cut -d'.' -f1)
if [ "$pve_version" -lt 8 ]; then
msg_error "지원되지 않는 Proxmox VE 버전입니다. 8.x 이상이 필요합니다."
# 버전 정보 추출 (더 안전한 방식)
local version_info
if command -v pveversion > /dev/null 2>&1; then
version_info=$(pveversion 2>/dev/null | head -n1 | awk '{print $2}' 2>/dev/null || echo "unknown")
else
version_info="unknown"
fi
msg_ok "Proxmox VE $pve_version.x 버전 확인됨"
# 버전이 숫자인지 확인
if [[ "$version_info" =~ ^[0-9]+\.[0-9]+ ]]; then
local pve_version=$(echo "$version_info" | cut -d'.' -f1)
if [ "$pve_version" -lt 8 ]; then
msg_error "지원되지 않는 Proxmox VE 버전입니다. 8.x 이상이 필요합니다."
fi
msg_ok "Proxmox VE $pve_version.x 버전 확인됨"
else
msg_warn "Proxmox VE 버전을 확인할 수 없습니다. 계속 진행합니다..."
read -p "계속 진행하시겠습니까? [y/N]: " continue_anyway
case $continue_anyway in
[yY]|[yY][eE][sS]) ;;
*) msg_error "설정이 취소되었습니다." ;;
esac
fi
}
# 루트 권한 확인
@ -294,11 +313,49 @@ install_packages() {
done
done
# 설치 확인
# 설치 확인 (더 유연한 방식)
msg_info "설치된 패키지 확인 중..."
for package in $packages; do
if ! dpkg -l | grep -q "^ii $package "; then
local installed=false
# 직접 패키지명 확인
if dpkg -l | grep -q "^ii $package "; then
installed=true
else
# 패키지명이 다를 수 있으므로 부분 매치 확인
case $package in
"openbox")
if dpkg -l | grep -q "^ii openbox" || command -v openbox > /dev/null 2>&1; then
installed=true
fi
;;
"xorg")
if dpkg -l | grep -q "^ii.*xorg" || command -v startx > /dev/null 2>&1; then
installed=true
fi
;;
"freerdp3-x11")
if dpkg -l | grep -q "^ii.*freerdp" || command -v xfreerdp3 > /dev/null 2>&1; then
installed=true
fi
;;
"unclutter")
if dpkg -l | grep -q "^ii unclutter" || command -v unclutter > /dev/null 2>&1; then
installed=true
fi
;;
*)
if dpkg -l | grep -q "^ii $package " || command -v "$package" > /dev/null 2>&1; then
installed=true
fi
;;
esac
fi
if [ "$installed" = false ]; then
msg_error "$package가 정상적으로 설치되지 않았습니다."
else
msg_info "$package 설치 확인됨"
fi
done