Центр программного обеспечения открывается, но установленное программное обеспечение не показывает [dубликат]

Ну, как программист по вине, я часто буду черпать всю эту чертову вещь, поэтому я использую свой супер специальный сценарий killwine. Это тяжелая смерть (wineserver -k - это хороший способ сделать это и всегда предпочтительнее).

#!/bin/bash

wine_cellar="${HOME}/.local/share/wine"

if (($#)); then
    if [[ -e "${wine_cellar}/$1" ]]; then
        WINEPREFIX="${wine_cellar}/$1"
        shift
    elif [[ "${1:0:1}" != "-" ]]; then
        echo "ERROR: Didn't understand argument '$1'?" >&2;
        exit 1
    fi
fi

if ((${#WINEPREFIX})); then
    pids=$(
        grep -l "WINEPREFIX=${WINEPREFIX}$" $(
            ls -l /proc/*/exe 2>/dev/null |
            grep -E 'wine(64)?-preloader|wineserver' |
            perl -pe 's;^.*/proc/(\d+)/exe.*$;/proc/$1/environ;g;'
        ) 2> /dev/null |
        perl -pe 's;^/proc/(\d+)/environ.*$;$1;g;'
    )
else
    pids=$(
        ls -l /proc/*/exe 2>/dev/null |
        grep -E 'wine(64)?-preloader|wineserver' |
        perl -pe 's;^.*/proc/(\d+)/exe.*$;$1;g;'
    )
fi

if ((${#pids})); then
    set -x
    kill $* $pids
fi

Это предполагает, что вы являетесь префиксами для вина в ~/.local/share/wine. Примеры использования:

killwine                       # Just kill all instances of wine
killwine -9                    # Hard kill them all
killwine lotro                 # Only kill wine under ${HOME}/.local/share/wine/lotro
killwine -INT lotro            # Same as above, but use SIGINT
WINEPREFIX=/tmp/crap killwine  # Kill only the instance under /tmp/crap
sudo reboot                    # Pretend you're running windows.

Я не знаю, но я не думаю, что вы часто будете сталкиваться с различными процессами, зависающими в памяти (что этот скрипт позаботится) на нормальном или даже нормальный + промежуточный выпуск, но я делаю довольно много из-за взлома сервера и ntdll.

EDIT: Этот скрипт будет работать только на ОС на базе Linux и предполагает, что файловая система proc монтируется на / proc и т. д.

131
задан 18 November 2015 в 04:54

7 ответов

Я столкнулся с подобной ошибкой:

Reading package lists... Error! E: Encountered a section with no Package: header E: Problem with MergeList /var/lib/dpkg/status E: The package lists or status file could not be parsed or opened.

Я следовал аналогичным предложениям для копирования status-old.

$ head /var/lib/dpkg/status $ head /var/lib/dpkg/status-old

Все мои статусные файлы были пустыми для некоторых причина. К счастью, я обнаружил, что есть резервные копии этих файлов:

$ ls -l /var/backups/dpkg.status.* -rw-r--r-- 1 root root 444620 Nov 15 06:33 /var/backups/dpkg.status.0 -rw-r--r-- 1 root root 444620 Nov 15 06:33 /var/backups/dpkg.status.1.gz -rw-r--r-- 1 root root 128168 Sep 20 2013 /var/backups/dpkg.status.2.gz -rw-r--r-- 1 root root 112545 Sep 16 2013 /var/backups/dpkg.status.3.gz -rw-r--r-- 1 root root 107767 Sep 14 2013 /var/backups/dpkg.status.4.gz -rw-r--r-- 1 root root 107766 Sep 11 2013 /var/backups/dpkg.status.5.gz -rw-r--r-- 1 root root 94583 Sep 11 2013 /var/backups/dpkg.status.6.gz

Я проверил последнюю резервную копию ...

$ head /var/backups/dpkg.status.0

... но она была пустой. Поэтому я расстегнул старую ...

$ gunzip /var/backups/dpkg.status.1.gz $ head /var/backups/dpkg.status.1

На этот раз был контент. Поэтому я скопировал его ...

$ cp /var/backups/dpkg.status.1 /var/lib/dpkg/status

Тогда apt-get update бежал без проблем.

Кредит отправляется на этот пост.

4
ответ дан 18 July 2018 в 10:15

Следующие шаги 2-5 в «Процедуре устранения неполадок диспетчера пакетов» обычно решают эту проблему.

Для Процедуры устранения неполадок диспетчера пакетов отключите все ваши PPA. Вы можете снять все из них в Software Sources так же, как вы снимите отметку с одного; см. Как отключить определенный PPA ?. Вы можете повторно включить их позже.

Для Как отключить конкретный PPA? , закройте все открытые программы, которые вы можете. Вероятно, безопасно держать ваш веб-браузер открытым, чтобы у вас были ваши инструкции перед вами. Но особенно важно убедиться, что все менеджеры пакетов все . Это включает в себя Центр программного обеспечения, Обновление программного обеспечения (Update Manager в более старых версиях Ubuntu), Synaptic и Gdebi. Он также включает утилиты управления пакетами командной строки, такие как apt-get, dpkg и aptitude.

Обратите внимание, что если другие пользователи одновременно вошли в систему, они должны выйти из системы, если это возможно.

Для шага 4 откройте окно терминала. Один из способов сделать это, независимо от того, какую рабочую среду вы используете, - нажать Ctrl + Alt + T.

Для шага 4 для запустите эти команды в окне терминала:

ubuntu-support-status sudo grep -R proxy /etc/apt/* grep proxy /etc/environment echo $http_proxy echo $ftp_proxy grep proxy /etc/bash.bashrc grep proxy ~/.bashrc cat /etc/apt/apt.conf sudo fuser -vvv /var/lib/dpkg/lock sudo fuser -vvv /var/cache/apt/archives/lock cat /etc/lsb-release uname -a sudo rm /var/lib/apt/lists/lock sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock sudo cp -arf /var/lib/dpkg /var/lib/dpkg.backup sudo mv /var/lib/dpkg/status /var/lib/dpkg/status-bad sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status || sudo cp /var/backups/apt.extended_states.0 /var/lib/dpkg/status sudo mv /var/lib/dpkg/available /var/lib/dpkg/available-bad sudo cp /var/lib/dpkg/available-old /var/lib/dpkg/available sudo rm -rf /var/lib/dpkg/updates/* sudo rm -rf /var/lib/apt/lists sudo rm /var/cache/apt/*.bin sudo mkdir /var/lib/apt/lists sudo mkdir /var/lib/apt/lists/partial LANG=C;sudo apt-get clean LANG=C;sudo apt-get autoclean LANG=C;sudo apt-get --purge autoremove LANG=C;sudo apt-get --fix-missing update -o APT::Cache-Limit=100000000 sudo dpkg --configure -a sudo dpkg --clear-avail LANG=C;sudo apt-get -f install LANG=C;sudo apt-get --fix-missing install LANG=C;sudo apt-get update -o APT::Cache-Limit=100000000 && sudo apt-get dist-upgrade find /etc/apt -name '*.list' -exec bash -c 'echo -e "\n$1\n"; cat -n "$1"' _ '{}' \;

Я скопировал это verbatim из PackageManagementTroubleshoootingProcedure 2 марта 2014 года. Эти команды развивались в прошлом, и рекомендуемые команды в этой статье могут быть изменены или расширены снова в будущем. Поэтому вы можете работать с шага 5 там. (Эта статья, созданная / отредактированная «Сторонниками вики документации Ubuntu», особенно Марк Рикенберг, - лицензирована CC-BY-SA 3.0, которая позволяет включить здесь с надлежащей атрибуцией.)

Некоторые из эти команды пытаются исправить проблему (а также могут отображать диагностическую информацию); другие отображают ценную информацию о проблеме, которую вы можете включить в свой вопрос или иным образом предоставлять кому-то, кто помогает вам. (Или, в зависимости от ваших навыков, может позволить другим пользователям диагностировать и решать проблемы.)

Часто это исправляет, но когда это не так, часто дает достаточно информации для исправления это.

Вам не нужно вручную вводить эти команды; вы можете их скопировать и вставить. Однако я рекомендую вставлять и запускать каждый отдельно. Это дает более четкое представление о том, из каких команд.

16
ответ дан 18 July 2018 в 10:15

Вы отрезали, когда вы отредактировали /var/lib/dpkg/status. Восстановите его из резервной копии, сделанной перед ее редактированием. Конечно, вы сделали резервную копию, верно?

Поскольку вы не сделали резервную копию, отредактируйте ее снова, осторожно. Старайтесь не наносить больше урона.

Вы можете использовать /var/lib/dpkg/status.old в качестве контрольной точки. Это резервная копия файла status до последнего времени dpkg. Запустите

diff /var/lib/dpkg/status.old /var/lib/dpkg/status

, чтобы увидеть различия. Отмените изменения, которые вы сделали вручную, и сохраните изменения, внесенные в последний прогон dpkg.

Если вам действительно не удается восстановить файл, скопируйте /var/lib/dpkg/status.old поверх /var/lib/dpkg/status , Вы получите хорошо сформированную, но устаревшую базу данных пакетов.

Вам не нужно редактировать /var/lib/dpkg/status при нормальной работе. Даже если все идет серьезно, /var/lib/dpkg/status не является чем-то, что требует вмешательства администратора. Независимо от ваших проблем с crossplatformui, есть, вероятно, лучший способ их решения. Единственный раз, когда мне нужно было отредактировать /var/lib/dpkg/status, было то, что файл восходящего Packages был сломан.

23
ответ дан 18 July 2018 в 10:15

Откройте терминал и выполните следующие команды по одному за раз:

sudo rm /var/lib/apt/lists/* -vf sudo apt-get update

См. также:

https://help.ubuntu.com/community/PackageManagerTroubleshootingПроцедура [ ! d2]
80
ответ дан 18 July 2018 в 10:15

Я также видел, что эта проблема возникает, когда у вас слишком много источников в ваших репозиториях.

Попробуйте решение, опубликованное выше и / или, возможно, это, что иногда рекомендуется на панели запуска:

sudo mv /var/lib/apt/lists /var/lib/apt/lists-old sudo mkdir -p /var/lib/apt/lists/partial sudo apt-get update

Сообщите нам, как вы это делаете.

11
ответ дан 18 July 2018 в 10:15

У меня была такая же проблема, и я попытался устранить все проблемы, упомянутые в других ответах. Странно, что единственным решением было другое:

Перейти к Software & amp; обновления -> Ubuntu Software -> Загрузить с -> Другое-> Выбрать лучший сервер Подождите испытания. В конце тестов будет выбран лучший сервер, не обязательно ближайший, а не основной сервер или сервер для вашей локали. Теперь перезагрузите данные Repo, он завершится правильно.
3
ответ дан 18 July 2018 в 10:15

Я сделал

sudo apt-get clean sudo apt-get update

, и он сработал.

18
ответ дан 18 July 2018 в 10:15

Другие вопросы по тегам:

Похожие вопросы: