LINUX.ORG.RU

Не могу удалить или установить пакет

 


0

1
sudo apt install -f
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово         
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Установлено или удалено не до конца 1 пакетов.
После данной операции объём занятого дискового пространства возрастёт на 0 B.
Настраивается пакет crossover (20.0.0-1) …
Traceback (most recent call last):
  File "/opt/cxoffice/lib/python/cxconfig.py", line 12, in <module>
    from collections import MutableMapping
ImportError: cannot import name 'MutableMapping' from 'collections' (/usr/lib/python3.10/collections/__init__.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/cxoffice/bin/cxtie", line 135, in <module>
    import cxtiemain
  File "/opt/cxoffice/lib/python/cxtiemain.py", line 6, in <module>
    import c4parser
  File "/opt/cxoffice/lib/python/c4parser.py", line 10, in <module>
    import cxproduct
  File "/opt/cxoffice/lib/python/cxproduct.py", line 7, in <module>
    import cxconfig
  File "/opt/cxoffice/lib/python/cxconfig.py", line 15, in <module>
    from UserDict import DictMixin as MutableMapping
ModuleNotFoundError: No module named 'UserDict'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 153, in apport_excepthook
    with os.fdopen(os.open(pr_filename,
FileNotFoundError: [Errno 2] No such file or directory: '/var/crash/_opt_cxoffice_bin_cxtie.0.crash'

Original exception was:
Traceback (most recent call last):
  File "/opt/cxoffice/lib/python/cxconfig.py", line 12, in <module>
    from collections import MutableMapping
ImportError: cannot import name 'MutableMapping' from 'collections' (/usr/lib/python3.10/collections/__init__.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/cxoffice/bin/cxtie", line 135, in <module>
    import cxtiemain
  File "/opt/cxoffice/lib/python/cxtiemain.py", line 6, in <module>
    import c4parser
  File "/opt/cxoffice/lib/python/c4parser.py", line 10, in <module>
    import cxproduct
  File "/opt/cxoffice/lib/python/cxproduct.py", line 7, in <module>
    import cxconfig
  File "/opt/cxoffice/lib/python/cxconfig.py", line 15, in <module>
    from UserDict import DictMixin as MutableMapping
ModuleNotFoundError: No module named 'UserDict'
dpkg: ошибка при обработке пакета crossover (--configure):
 installed crossover package post-installation script subprocess returned error exit status 1
При обработке следующих пакетов произошли ошибки:
 crossover
E: Sub-process /usr/bin/dpkg returned an error code (1)

sudo apt remove crossover
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово         
Следующие пакеты устанавливались автоматически и больше не требуются:
  lib32z1 libc6-i386
Для их удаления используйте «sudo apt autoremove».
Следующие пакеты будут УДАЛЕНЫ:
  crossover
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 1 пакетов, и 0 пакетов не обновлено.
Установлено или удалено не до конца 1 пакетов.
После данной операции объём занятого дискового пространства уменьшится на 579 MB.
Хотите продолжить? [Д/н] 
(Чтение базы данных … на данный момент установлен 379931 файл и каталог.)
Удаляется crossover (20.0.0-1) …
Traceback (most recent call last):
  File "/opt/cxoffice/lib/python/cxconfig.py", line 12, in <module>
    from collections import MutableMapping
ImportError: cannot import name 'MutableMapping' from 'collections' (/usr/lib/python3.10/collections/__init__.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/cxoffice/bin/cxtie", line 135, in <module>
    import cxtiemain
  File "/opt/cxoffice/lib/python/cxtiemain.py", line 6, in <module>
    import c4parser
  File "/opt/cxoffice/lib/python/c4parser.py", line 10, in <module>
    import cxproduct
  File "/opt/cxoffice/lib/python/cxproduct.py", line 7, in <module>
    import cxconfig
  File "/opt/cxoffice/lib/python/cxconfig.py", line 15, in <module>
    from UserDict import DictMixin as MutableMapping
ModuleNotFoundError: No module named 'UserDict'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 153, in apport_excepthook
    with os.fdopen(os.open(pr_filename,
FileNotFoundError: [Errno 2] No such file or directory: '/var/crash/_opt_cxoffice_bin_cxtie.0.crash'

Original exception was:
Traceback (most recent call last):
  File "/opt/cxoffice/lib/python/cxconfig.py", line 12, in <module>
    from collections import MutableMapping
ImportError: cannot import name 'MutableMapping' from 'collections' (/usr/lib/python3.10/collections/__init__.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/cxoffice/bin/cxtie", line 135, in <module>
    import cxtiemain
  File "/opt/cxoffice/lib/python/cxtiemain.py", line 6, in <module>
    import c4parser
  File "/opt/cxoffice/lib/python/c4parser.py", line 10, in <module>
    import cxproduct
  File "/opt/cxoffice/lib/python/cxproduct.py", line 7, in <module>
    import cxconfig
  File "/opt/cxoffice/lib/python/cxconfig.py", line 15, in <module>
    from UserDict import DictMixin as MutableMapping
ModuleNotFoundError: No module named 'UserDict'
dpkg: ошибка при обработке пакета crossover (--remove):
 installed crossover package pre-removal script subprocess returned error exit status 1
dpkg: слишком много ошибок — останавливаемся
При обработке следующих пакетов произошли ошибки:
 crossover
Обработка остановлена из-за слишком большого количества ошибок.
E: Sub-process /usr/bin/dpkg returned an error code (1)

sudo apt remove –purge crossover Эффект тот же.

Помогите пожалуйста решить проблему.

Ответ на: комментарий от firkax

crossover.prerm

#!/bin/sh
# (c) Copyright 2002-2008, 2011. CodeWeavers, Inc.
set -e

# Setup logging
if [ -n "$CX_LOG" ]
then
    [ "$CX_LOG" = "-" ] || exec 2>>"$CX_LOG"
    echo >&2
    echo "***** `date`" >&2
    echo "Starting: $0 $@" >&2
    set -x
fi

action="$1"
if [ "$2" = "in-favour" ]
then
    # Treating this as an upgrade is less work and safer
    action="upgrade"
fi

CX_ROOT="/opt/cxoffice"
export CX_ROOT

if [ -f "$CX_ROOT/.productid" ]
then
    productid=`cat "$CX_ROOT/.productid"`
else
    productid="cxoffice"
fi

if [ "$action" = "remove" ]
then
    CX_PURGE="desktopdata"

# This script expects CX_ROOT and productid to be set
# Note: this script may also be called in case the installation is aborted
builtin_product_id="cxoffice"

if [ -z "$CX_PURGE" ]
then
    CX_PURGE="all"
fi

if [ "$CX_PURGE" = "desktopdata" -o "$CX_PURGE" = "all" ]
then
    "$CX_ROOT/bin/cxtie" --unregister
    scope="managed"
    if [ -x "$CX_ROOT/bin/cxmenu" ]
    then
        "$CX_ROOT/bin/cxmenu" --removeall --pattern "$productid-" --scope $scope --ignorelist ""
    fi
    if [ -x "$CX_ROOT/bin/cxassoc" ]
    then
        "$CX_ROOT/bin/cxassoc" --removeall --pattern "$productid-" --scope $scope --ignorelist ""
    fi
    rm -f "$CX_ROOT"/share/icons/*.png
fi

rm -f "$CX_ROOT/lib/python"/*.pyc
rm -f "$CX_ROOT/lib/wine/winewrapper.exe.so.bak"
fi


crossover.postrm

#!/bin/sh
# (c) Copyright 2002-2011. CodeWeavers, Inc.
set -e

# Setup logging
if [ -n "$CX_LOG" ]
then
    [ "$CX_LOG" = "-" ] || exec 2>>"$CX_LOG"
    echo >&2
    echo "***** `date`" >&2
    echo "Starting: $0 $@" >&2
    set -x
fi

# Note:
# - 'dpkg --purge' may call this script twice: first with action=remove
#   and then with action=purge
action="$1"

CX_ROOT="/opt/cxoffice"
export CX_ROOT

if [ -f "$CX_ROOT/.productid" ]
then
    productid=`cat "$CX_ROOT/.productid"`
else
    productid="cxoffice"
fi

if [ \( "$action" = "purge" -o "$action" = "remove" \) -a ! -f "$CX_ROOT/bin/cxmenu" ]
then
    if [ "$action" = "purge" ]
    then
        CX_PURGE="all"
    else
        CX_PURGE="desktopdata"
    fi

    # We cannot do this bit before because prerm does not know whether
    # the administrator is doing a 'dpkg --purge' or a 'dpkg --remove'.
    # It does mean we have some extra directories to remove manually.
# This script expects CX_ROOT and productid to be set

if [ -z "$CX_PURGE" ]
then
    CX_PURGE="all"
fi

if [ "$CX_PURGE" = "desktopdata" -o "$CX_PURGE" = "all" ]
then
    rm -f  "$CX_ROOT"/lib/python/__pycache__/*.py[co]
    rmdir  "$CX_ROOT"/lib/python/__pycache__ || true
    rm -rf "$CX_ROOT"/support/desktopdata
fi

if [ "$CX_PURGE" = "all" ]
then
    rm -f  "$CX_ROOT/etc/$productid".conf*
    rm -f  "$CX_ROOT/etc/license.txt" "$CX_ROOT/etc/license.sig"
    rm -f  "$CX_ROOT"/support/default
    rm -rf "$CX_ROOT"/support/installers
    rm -f  "$CX_ROOT"/.uninstalled

    # Delete bottles.
    ls -d "$CX_ROOT"/support/*/cxbottle.conf 2>/dev/null | while read bottlefile
    do
        dir=`dirname "$bottlefile"`
        rm -rf "$dir"
    done

    rmdir "$CX_ROOT"/support 2>/dev/null || true
    rm -f  "$CX_ROOT/.productid"
elif [ -d "$CX_ROOT" ]
then
    touch "$CX_ROOT/.uninstalled"
fi

    rmdir "$CX_ROOT/etc" 2>/dev/null || true
    rmdir "$CX_ROOT/support" 2>/dev/null || true
    rmdir "$CX_ROOT" 2>/dev/null || true
fi



TopsyCrets
() автор топика
Ответ на: комментарий от TopsyCrets

Кажется суть этих двух простыней - сначала сделать это

if [ -f "/opt/cxoffice/.productid" ]
then
    productid=`cat "/opt/cxoffice/.productid"`
else
    productid="cxoffice"
fi
"/opt/cxoffice/bin/cxtie" --unregister
"/opt/cxoffice/bin/cxmenu" --removeall --pattern "$productid-" --scope managed --ignorelist ""
"/opt/cxoffice/bin/cxassoc" --removeall --pattern "$productid-" --scope managed --ignorelist ""

А затем удалить /opt/cxoffice

Что делает первая пачка команд я не знаю, судя по названиям вероятно удаляет что-то из каких-то меню и ассоциаций. И это удаление падает в середине. Ну, не страшно (наверно). Пропиши в начало обоих скриптов exit 0 (после set -e), потом сделай apt-get purge crossover и потом вручную удали /opt/cxoffice если он ещё останется (если ты в него ничего нужного не клал до этого).

firkax ★★★★★
()