From 3033f6022a8084f7e402f73f7ca072f1974c2deb Mon Sep 17 00:00:00 2001 From: Mikhail Tergoev Date: Wed, 18 Jun 2025 13:31:09 +0300 Subject: [PATCH] backup: check prefix before unpack --- dependencies.sh | 4 ++-- winehelper | 31 ++++++++++++++++++------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/dependencies.sh b/dependencies.sh index c18be66..dc41a2b 100755 --- a/dependencies.sh +++ b/dependencies.sh @@ -19,11 +19,11 @@ apt-repo | grep -q "x86_64-i586" || fatal "Репозиторий x86_64-i586 н windows приложения. Подробнее по ссылке: https://www.altlinux.org/Biarch" ##### INSTALL DEPENDENCIES ##### +# fonts-ttf-ms + apt-get install {i586-,}{glibc-core,libstdc++6,glibc-pthread,glibc-nss,\ libOSMesa,libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,\ libgnutls30,libGL,libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,\ libvulkan1,libcups} || fatal "Не удалось установить зависимости." apt-get install {i586-,}wine - -# yad zenity diff --git a/winehelper b/winehelper index 46bdc20..8c902bc 100755 --- a/winehelper +++ b/winehelper @@ -131,6 +131,8 @@ su_run () { } ##### CHECK DEPENDENCIES ##### +# fonts-ttf-ms + if ! rpm -q {i586-,}{wine,glibc-core,libstdc++6,glibc-pthread,glibc-nss,libOSMesa,\ libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,libgnutls30,libGL,\ libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,libvulkan1,libcups} 1>/dev/null @@ -865,14 +867,14 @@ check_prefix_var () { else fatal "Неверный выбор." fi - - print_info "Выбран префикс: $WINEPREFIX" fi if echo "$WINEPREFIX" | grep -qv '/' ; then export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX" fi + export PREFIX_NAME="$(basename "$WINEPREFIX")" + print_info "Выбран префикс: $PREFIX_NAME" return 0 } @@ -1363,6 +1365,7 @@ backup_prefix() { print_info "Создание squashfs архива..." if mksquashfs "$temp_backup_dir" "$backup_dest_path" -comp zstd ; then + echo -e "\n# PREFIX_NAME=$PREFIX_NAME" >> "$backup_dest_path" print_ok "Архив префикса $PREFIX_NAME успешно создан по пути:\n$backup_dest_path" else print_error "Не удалось создать архив префикса $PREFIX_NAME." @@ -1377,22 +1380,31 @@ backup_prefix() { restore_prefix() { local backup_archive_path="$1" - local temp_extract_dir + local temp_extract_dir prefix_name + if [[ -z "$backup_archive_path" ]] ; then read -e -p "Укажите путь к архиву резервной копии (/путь/к/архиву.whpack): " backup_archive_path + backup_archive_path=$(echo "$backup_archive_path" | sed "s/'//g; s/\"//g") if [[ -z "$backup_archive_path" ]] ; then fatal "Путь к архиву не указан. Восстановление отменено." fi fi - backup_archive_path=$(echo "$backup_archive_path" | sed "s/'//g; s/\"//g") if [[ ! -f "$backup_archive_path" ]] then fatal "Файл архива не найден: $backup_archive_path" fi print_info "Восстановление из резервной копии: $backup_archive_path" + prefix_name="$(tail -n1 "$backup_archive_path" | sed -e 's/.*PREFIX_NAME=//')" + + if [[ -d "$WH_PREFIXES_DIR/$prefix_name" ]] ; then + fatal "Префикс $prefix_name уже существует! + Удалите его, если действительно желаете восстановить префикс заново. + Команда для удаления: $SCRIPT_NAME remove-prefix $prefix_name" + fi + temp_extract_dir="$WH_TMP_DIR/restore_$(basename "$backup_archive_path" .whpack)" create_new_dir "$temp_extract_dir" @@ -1405,19 +1417,12 @@ restore_prefix() { fi if [[ -d "$temp_extract_dir/prefixes" ]] ; then - local prefix_name prefix_dir + local prefix_name prefix_name="$(ls -1 "$temp_extract_dir/prefixes")" - prefix_dir="$temp_extract_dir/prefixes/$prefix_name" + local prefix_dir="$temp_extract_dir/prefixes/$prefix_name" print_info "Восстановление префикса: $prefix_name" - if [[ -d "$WH_PREFIXES_DIR/$prefix_name" ]] ; then - try_remove_dir "$temp_extract_dir" - fatal "Префикс $prefix_name уже существует! -Удалите его если действительно желаете востановить префикс заново. -Команда для удаления: $SCRIPT_NAME remove-prefix $prefix_name" - fi - if [[ -d "$temp_extract_dir/dist" ]] ; then print_info "Восстановление версий WINE" if cp -fr "$temp_extract_dir/dist"/* "$WH_DIST_DIR/"