script returned error exit status 127 или dpkg returned an error code (1)

Возился я как-то с установкой php5-rrd и так довозился, что после этого у меня не устанавливалась ни одна софтина, и даже при попытке исправить зависимости, я получил ошибку:

# apt-get -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  php5-rrd
0 upgraded, 0 newly installed, 1 to remove and 46 not upgraded.
1 not fully installed or removed.
After this operation, 42.0 kB disk space will be freed.
Do you want to continue [Y/n]? Y
(Reading database ... 39480 files and directories currently installed.)
Removing php5-rrd ...
/var/lib/dpkg/info/php5-rrd.postrm: 26: php5dismod: not found
dpkg: error processing php5-rrd (--remove):
 subprocess installed post-removal script returned error exit status 127
configured to not write apport reports
                                      Errors were encountered while processing:
 php5-rrd
E: Sub-process /usr/bin/dpkg returned an error code (1)

Оказывается, такие ошибки возникают у многих, и решаются они тоже весьма интересно (обратите внимание на файл, который я выделил в ошибке).

Так вот, открываем этот файл /var/lib/dpkg/info/php5-rrd.postrm и удаляем там все, а затем вписываем в него следующее:

#!/bin/sh
set -e

сохраняем и закрываем файл, собственно это и есть решение проблемы :) после чего в консоле например запускаем исправление зависимостей:

# apt-get -f install

Вот и все, всем удачки!


 p.s. Полезные команды:

Обычно ошибка выглядит так:

E: Неудовлетворённые зависимости. Попытайтесь выполнить 'apt-get -f install', не указывая имени пакета, (или найдите другое решение).

Удалите кеш пакетов:

sudo apt-get clean

Удалите осиротевшие пакеты:

sudo apt-get autoremove

Обновите список пакетов:

sudo apt-get update

Исправьте зависимости:

sudo apt-get -f install

Обычно этого достаточно.

Если вы запутались с зависимостями, поможет интеллектуальное обновление системы:

sudo apt-get dist-upgrade

Если установка была прервана, то следует переустановить пакет

sudo apt-get install --reinstall имя_пакета

Если репозиторий недоступен, исправить:

  • /etc/apt/sources.list - главный список репозиториев
  • /etc/apt/sources.list.d - каталог для сторонних репозиториев

Если невозможно удалить/переустановить пакет, исправить:

  • /var/lib/dpkg/status - список установленных пакетов
  • /var/lib/dpkg/available - список доступных для скачивания пакетов

Добавление нового репозитория

Пример добавления репозитория:

echo 'deb http://cz.archive.ubuntu.com/ubuntu xenial main universe' >> /etc/apt/sources.list.d/ubuntu-xenial-main-universe.list
apt-update

Если появится ошибка невалидности ключей:

The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
Reading package lists... Done
W: GPG error: http://cz.archive.ubuntu.com/ubuntu xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
E: The repository 'http://cz.archive.ubuntu.com/ubuntu xenial InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

Значит, нужно добавить указанные в сообщении ключи в доверенные:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 3B4FE6ACC0B21F32

теперь следующая команда не выдаст ошибки:

apt-update

Удачки.


30.10.2013 12:57