Как я могу исправить ошибку с libc6-dev-armhf-cross в Ubuntu 18.04 при попытке обновления?

22

Сегодня, когда я пытаюсь выполнить обновление по предложению Ubuntu Software, я вижу следующие ошибки. Это первый раз, когда я вижу эту ошибку. Моя система 18.04 работает очень хорошо в течение многих месяцев.

Любая помощь приветствуется.

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu 
DISTRIB_RELEASE=18.04 
DISTRIB_CODENAME=bionic 
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"



$ sudo apt upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libc6-armel-cross libc6-armhf-cross libc6-dev-armel-cross libc6-dev-armhf-cross
4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/5,871 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 388166 files and directories currently installed.)
Preparing to unpack .../libc6-dev-armel-cross_2.27-3ubuntu1cross1.1_all.deb ...
Unpacking libc6-dev-armel-cross (2.27-3ubuntu1cross1.1) over (2.27-3ubuntu1cross1) ...
dpkg: error processing archive /var/cache/apt/archives/libc6-dev-armel-cross_2.27-3ubuntu1cross1.1_all.deb (--unpack):
 unable to open '/usr/arm-linux-gnueabi/lib/Mcrt1.o.dpkg-new': No such file or directory
No apport report written because the error message indicates an issue on the local system
                                                                                         Preparing to unpack .../libc6-armel-cross_2.27-3ubuntu1cross1.1_all.deb ...
Unpacking libc6-armel-cross (2.27-3ubuntu1cross1.1) over (2.27-3ubuntu1cross1) ...
dpkg: error processing archive /var/cache/apt/archives/libc6-armel-cross_2.27-3ubuntu1cross1.1_all.deb (--unpack):
 unable to open '/usr/arm-linux-gnueabi/lib/ld-2.27.so.dpkg-new': No such file or directory
No apport report written because the error message indicates an issue on the local system
                                                                                         Preparing to unpack .../libc6-dev-armhf-cross_2.27-3ubuntu1cross1.1_all.deb ...
Unpacking libc6-dev-armhf-cross (2.27-3ubuntu1cross1.1) over (2.27-3ubuntu1cross1) ...
dpkg: error processing archive /var/cache/apt/archives/libc6-dev-armhf-cross_2.27-3ubuntu1cross1.1_all.deb (--unpack):
 unable to open '/usr/arm-linux-gnueabihf/lib/Mcrt1.o.dpkg-new': No such file or directory
No apport report written because the error message indicates an issue on the local system
                                                                                         Preparing to unpack .../libc6-armhf-cross_2.27-3ubuntu1cross1.1_all.deb ...
Unpacking libc6-armhf-cross (2.27-3ubuntu1cross1.1) over (2.27-3ubuntu1cross1) ...
dpkg: error processing archive /var/cache/apt/archives/libc6-armhf-cross_2.27-3ubuntu1cross1.1_all.deb (--unpack):
 unable to open '/usr/arm-linux-gnueabihf/lib/ld-2.27.so.dpkg-new': No such file or directory
No apport report written because MaxReports is reached already
                                                              Errors were encountered while processing:
 /var/cache/apt/archives/libc6-dev-armel-cross_2.27-3ubuntu1cross1.1_all.deb
 /var/cache/apt/archives/libc6-armel-cross_2.27-3ubuntu1cross1.1_all.deb
 /var/cache/apt/archives/libc6-dev-armhf-cross_2.27-3ubuntu1cross1.1_all.deb
 /var/cache/apt/archives/libc6-armhf-cross_2.27-3ubuntu1cross1.1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Уриван Флорес
источник
Что-то не так с некоторыми загруженными пакетами. Попробуйте запустить, sudo apt cleanа затем снова запустите обновление.
Кристофер Айвс
1
Я попытался очистить кеш пакета и повторно загрузить пакеты, но та же проблема обнаружилась.
Уриван Флорес

Ответы:

16

Попробуйте переустановить libc6-dev-armhf-cross(сделайте то же самое для libc6-dev-armel-cross)

sudo apt remove libc6-dev-armhf-cross с последующим sudo apt install libc6-dev-armhf-cross

( apt install --reinstallне похоже на работу)

Обратите внимание, что запуск sudo apt removeможет удалить пакеты, зависящие от него. См . Ответ Олека Войнара ниже о том, как это сделать, не удаляя зависимые пакеты.

Руфус
источник
Привет Woofas, я также попытался --reinstall, но не думал, что будет разница с удалением и установкой. Я только что попробовал, и теперь он устанавливается правильно. Благодарность!
Уриван Флорес
1
Это почти сработало для меня, я должен был удалить все это - затем переустановитьlibc6-dev-armhf-cross libc6-armel-cross libc6-dev-armel-cross libc6-armhf-cross
В
1
Возможно, вам придется переустановить другие пакеты, которые были удалены из-за зависимостей, таких как gcc, см. Мой пост ниже.
Джон Джей Джей
Как сказал Джон, вам необходимо учитывать удаленные пакеты. Взгляните на мой ответ, чтобы узнать, как с этим справиться.
Олек Войнар
37

Я смог четко решить эту проблему с помощью варианта подхода, используемого Gen.Stack . Проблема с принятым решением состоит в том, что оно удаляет зависимости пакетов, о которых идет речь, но не восстанавливает их. Это решение предотвращает эту проблему.

Сначала удалите проблемные пакеты и очистите их конфигурацию, не удаляя зависимости:

sudo dpkg -P --force-depends libc6-armel-cross libc6-armhf-cross libc6-dev-armel-cross libc6-dev-armhf-cross

Очистить кеш пакета:

sudo apt clean

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

sudo apt update

Исправьте нарушенные зависимости (должны автоматически установить два из удаленных пакетов):

sudo apt -f install

Наконец, установите оставшиеся два пакета:

sudo apt install libc6-dev-armel-cross libc6-dev-armhf-cross

Это вернет вашу систему в рабочее состояние.

Олек Войнар
источник
3
работает отлично. для обновления с Ubuntu 14.04 до Ubuntu 18.04
ravi.zombie
3
Спасибо, я также решил для той же проблемы Ubuntu 14.04, 16.04 до 18.04.
мин
2
Удивительно. Мой менеджер пакетов был так сломан после обновления с Ubuntu 16.04 до 18.04. Я перепробовал все рекомендуемые командной строкой и различные другие решения онлайн. Похоже, этот работал отлично. Спасибо Олек Войнар!
evanrmurphy
1
Я люблю хорошее, хорошо продуманное решение, которое работает! Спасибо.
Whome
1

При использовании метода apt remove / install, приведенного выше, зависимости могут привести к тому, что apt удалит больше, чем вы намереваетесь. Вам также может понадобиться переустановить другие пакеты. Я также переустановил следующее.

Некоторые из них уже будут автоматически переустановлены, но было проще скопировать список удаленных пакетов и позволить apt выяснить, что нужно сделать.

sudo apt-get install \
  g++-7-arm-linux-gnueabihf g++-7-multilib-arm-linux-gnueabihf g++-arm-linux-gnueabihf \
  gcc-7-arm-linux-gnueabihf gcc-7-multilib-arm-linux-gnueabihf gcc-arm-linux-gnueabihf \
  libasan4-armhf-cross libasan4-dbg-armhf-cross libatomic1-armhf-cross libatomic1-dbg-armhf-cross \
  libc6-armel-armhf-cross libc6-armel-cross libc6-armhf-cross libc6-dev-armel-armhf-cross \
  libc6-dev-armel-cross libc6-dev-armhf-cross libcilkrts5-armhf-cross libcilkrts5-dbg-armhf-cross \
  libgcc-7-dev-armhf-cross libgcc1-armhf-cross libgcc1-dbg-armhf-cross libgomp1-armhf-cross \
  libgomp1-dbg-armhf-cross libsfasan4-armhf-cross libsfatomic1-armhf-cross \
  libsfcilkrts5-armhf-cross libsfgcc-7-dev-armhf-cross libsfgcc1-armhf-cross \
  libsfgomp1-armhf-cross libsfstdc++-7-dev-armhf-cross libsfstdc++6-armhf-cross \
  libsfubsan0-armhf-cross libstdc++-7-dev-armhf-cross libstdc++6-7-dbg-armhf-cross \
  libstdc++6-armhf-cross libubsan0-armhf-cross libubsan0-dbg-armhf-cross \
Джон Джей Джей
источник
Мне нравится, что вы определили проблему удаленных зависимостей в своем ответе. К сожалению, ваше решение пометит все эти пакеты как установленные вручную, и поэтому они не будут удалены автоматически, если в этом нет необходимости в будущем.
Олек Войнар
1

Чтобы предотвратить удаление слишком многих зависимостей, попробуйте dpkg -P --force-depends:

dpkg -P --force-depends libc6-armel-cross libc6-armhf-cross libc6-dev-armel-cross libc6-dev-armhf-cross

Затем обновите, загрузите и снова установите эти пакеты:

apt update
[...]
apt clean
apt install libc6-armel-cross libc6-armhf-cross libc6-dev-armel-cross libc6-dev-armhf-cross
Building dependency tree       
Reading state information... Done
After this operation, 0 B of additional disk space will be used.
Get:1 http://en.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 libc6-armel-cross all 2.27-3ubuntu1cross1.1 [1,031 kB]
Get:2 http://en.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libc6-armhf-cross all 2.27-3ubuntu1cross1.1 [1,005 kB]
Get:3 http://en.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 libc6-dev-armel-cross all 2.27-3ubuntu1cross1.1 [1,936 kB]
Get:4 http://en.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libc6-dev-armhf-cross all 2.27-3ubuntu1cross1.1 [1,899 kB]
Fetched 5,871 kB in 9s (661 kB/s)                                                                                                                                                           
Selecting previously unselected package libc6-armel-cross.
(Reading database ... 760110 files and directories currently installed.)
Preparing to unpack .../libc6-armel-cross_2.27-3ubuntu1cross1.1_all.deb ...
Unpacking libc6-armel-cross (2.27-3ubuntu1cross1.1) ...
dpkg: error processing archive /var/cache/apt/archives/libc6-armel-cross_2.27-3ubuntu1cross1.1_all.deb (--unpack):
 unable to open '/usr/arm-linux-gnueabi/lib/ld-2.27.so.dpkg-new': No such file or directory
No apport report written because the error message indicates an issue on the local system
[...]

Так что не повезло с переустановкой ни --reinstallвручную, ни с зависимостями, ни с помощью dpkg -[P|i] --force-depends.

2018-10-09: Так как эти пакеты все еще не работают, но никаких обновлений не видно, я просто удалил их все, чтобы можно было использовать apt для (не) установки пакетов. Выход из статус-кво означал невозможность установки или удаления пакетов. Я использую локально установленные наборы инструментов для выполнения моих требований.

редактировать: заметка об удалении всех пакетов и зависимостей.

Gen.Stack
источник
@Olek: спасибо за редактирование. Но нет, это не работает для меня. Вот почему я оставил пост, как я сделал. Даже сейчас с вашим редактированием это не дает мне решения этой проблемы. Не могли бы вы отменить редактирование, пожалуйста? Спасибо.
Gen.Stack
Странно, что это не сработало на твоей машине. У меня была точно такая же проблема, и мое решение ее исправило. Исходя из того, как работает apt, я откровенно запутался, почему это не сработало для вас. Возможно, есть еще одна проблема для вас? В любом случае я создал свой собственный ответ. Удачи в решении ваших проблем!
Олек Войнар
@OlekWojnar да, это странно. Я игнорирую основные причины на данный момент. Не буду копать глубже, так как я получил другой набор инструментов, нет необходимости в запасном. Если однажды я пойму, как решить эту проблему, я обновлю это. ТНХ
Gen.Stack
0

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

абхи ср
источник
-1

Я получил ту же ошибку при установке libc6-dev-armel-cross_2.27-3ubuntu1cross1.1_all.debи libc6-armel-cross_2.27-3ubuntu1cross1.1_all.debупаковке, и запустить

apt -f install 

не работал Я скачал libc6-dev-armel-cross_2.27-3ubuntu1cross1_all.deb and libc6-armel-cross_2.27-3ubuntu1cross1_all.debс зеркала пакетов Ubuntu и установил их с

dpkg -i *.deb 

и это решило мою проблему.

Патрик
источник
Спасибо Патрик, как упомянул Woofas, удалив и установив, решил проблему.
Уриван Флорес