Почему yum не устанавливает обновления?

9

Я получаю ошибки, я думаю, с coreutils, где yum не будет обновляться. Вот урезанный вывод из того, что я вижу, когда я бегу yum update:

Resolving Dependencies
There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.
The program yum-complete-transaction is found in the yum-utils package.
--> Running transaction check
---> Package PyYAML.x86_64 0:3.10-3.el6 will be updated
---> Package PyYAML.x86_64 0:3.10-3.1.el6 will be an update
... more of the same, and then:
--> Processing Dependency: coreutils = 8.4-31.el6_5.2 for package: coreutils-libs-8.4-31.el6_5.2.x86_64
---> Package coreutils.x86_64 0:8.4-37.el6 will be an update
... then more of the same    --> Finished Dependency Resolution
--> Running transaction check
---> Package coreutils.x86_64 0:8.4-31.el6_5.2 will be updated
--> Processing Dependency: coreutils = 8.4-31.el6_5.2 for package: coreutils-libs-8.4-31.el6_5.2.x86_64
---> Package kernel.x86_64 0:2.6.32-431.17.1.el6 will be erased
--> Finished Dependency Resolution
Error: Package: coreutils-libs-8.4-31.el6_5.2.x86_64 (@updates)
           Requires: coreutils = 8.4-31.el6_5.2
           Removing: coreutils-8.4-31.el6_5.2.x86_64 (@updates)
               coreutils = 8.4-31.el6_5.2
           Updated By: coreutils-8.4-37.el6.x86_64 (base)
               coreutils = 8.4-37.el6
 You could try using --skip-broken to work around the problem
** Found 71 pre-existing rpmdb problem(s), 'yum check' output follows:
audit-libs-2.3.7-5.el6.x86_64 is a duplicate with audit-libs-2.2-4.el6_5.x86_64
audit-libs-python-2.3.7-5.el6.x86_64 is a duplicate with audit-libs-python-2.2-4.el6_5.x86_64
... then lots more like the above duplicate

У меня есть другой сервер, который (почти) идентичен этому (они сбалансированы по нагрузке и работают с одного и того же образа), и у него нет такой же проблемы. В чем может быть проблема и как мне лучше поступить?

Обновить:

Я также запустил, yum-complete-transactionчто не удалось и сказал, что переименовал файлы транзакций. Он по-прежнему говорит, что есть незавершенная транзакция, но теперь это происходит, когда я запускаю ее:

[root@nico ~]# yum-complete-transaction
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * webtatic: uk.repo.webtatic.com
drivesrvr                                                                                                                                                                                                                                |  951 B     00:00
There are 1 outstanding transactions to complete. Finishing the most recent one
The remaining transaction had 252 elements left to run
... lots of:
Package name-1.23.x8x_64 already installed and latest version
...
--> Running transaction check
... lots of entries like this:
---> Package PyYAML.x86_64 0:3.10-3.el6 will be updated
... and this:
---> Package PyYAML.x86_64 0:3.10-3.1.el6 will be an update
... and this:
---> Package audit-libs.x86_64 0:2.2-4.el6_5 will be erased
Killed

Затем он внезапно останавливается на Killedлинии.

Я попытался запустить yum update --skip-brokenследующее:

[root@nico ~]# yum update --skip-broken
Freeing read locks for locker 0x7d: 28940/139976145426176
Freeing read locks for locker 0x7f: 28940/139976145426176
Freeing read locks for locker 0x80: 28940/139976145426176
Freeing read locks for locker 0x81: 28940/139976145426176
Freeing read locks for locker 0x82: 28940/139976145426176
Loaded plugins: downloadonly, fastestmirror, replace
Setting up Update Process
Loading mirror speeds from cached hostfile
 * webtatic: uk.repo.webtatic.com
drivesrvr                                                                                                                                                                                                                                |  951 B     00:00
Resolving Dependencies
There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.
--> Running transaction check
... lots of will be updated/will be an update/etc, then:
--> Processing Dependency: coreutils = 8.4-31.el6_5.2 for package: coreutils-libs-8.4-31.el6_5.2.x86_64

Затем еще несколько Running transaction check:с, и Processing Dependency: coreutils =...записи среди большего количества willy be updated/willbe an updateзаписей. Затем:

Packages skipped because of dependency problems:
    coreutils-8.4-37.el6.x86_64 from base

Dependencies Resolved

Затем мне показывают таблицу со списком Installing:и Updating:пакетами со сводкой в ​​конце:

Install       2 Package(s)
Upgrade      79 Package(s)
Remove        1 Package(s)

Затем он загружает все пакеты (81/81 успешно) и, наконец, показывает это:

Total                                                                                                                                                                                                                           3.0 MB/s | 115 MB     00:37
Running rpm_check_debug
Killed

Обновление 2:

Я тоже побежал yum clean allи у меня там тоже были проблемы. Я нашел несколько советов, чтобы удалить __db*файлы и попробуйте снова:

[root@nico ~]# yum clean all
rpmdb: Thread/process 29404/139880514733824 failed: Thread died in Berkeley DB library
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 -  (-30974)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:

Error: rpmdb open failed
[root@nico ~]# rm -f /var/lib/rpm/__db*
[root@nico ~]# yum clean all
Loaded plugins: downloadonly, fastestmirror, replace
Cleaning repos: base drivesrvr epel extras ius newrelic percona-release-noarch percona-release-x86_64 rackspace updates webtatic
Cleaning up Everything
Cleaning up list of fastest mirrors
[root@nico ~]# yum clean all
Loaded plugins: downloadonly, fastestmirror, replace
Cleaning repos: base drivesrvr epel extras ius newrelic percona-release-noarch percona-release-x86_64 rackspace updates webtatic
Cleaning up Everything
[root@nico ~]#

Обновление 3:

Я /var/log/messagesпобежал и увидел много результатов, когда я бежал yum-complete-transaction, последние две строки которых были:

Nov 14 08:19:47 nico kernel: Out of memory: Kill process 30995 (yum-complete-tr) score 149 or sacrifice child
Nov 14 08:19:47 nico kernel: Killed process 30995, UID 0, (yum-complete-tr) total-vm:641952kB, anon-rss:181420kB, file-rss:4kB

По-видимому, это говорит о том, что это связано с памятью. Если да, то это требует больше оперативной памяти или может быть еще одна проблема, которую мне нужно исследовать?

Леонард Чаллис
источник
2
Вы проверили системные журналы? Возможно, вам не хватает памяти.
Майкл Хэмптон
Да, я только что обновил вопрос (обновление 3) с информацией о памяти, я думаю, что вы правы.
Леонард Чаллис

Ответы:

6

Подобная проблема - и мое решение. У меня тоже была проблема с памятью, поэтому пришлось обновить память VPS. Затем я сделал ням-обновление - конечно, получил ошибки, как указано выше. Посмотрел сбой и заметил, что Yum установил (ну, начал устанавливать) последнюю версию coreutils - версию 37, тогда как у меня все еще были биты 31. Итак, сначала удалил версию 37, затем очистил и запустил обновление yum снова.

Это привело к тому, что версия «31» стала доступной для «чистого» обновления. Смотрите работу ниже:

--> Running transaction check
---> Package coreutils.x86_64 0:8.4-31.el6_5.2 will be updated
--> Processing Dependency: coreutils = 8.4-31.el6_5.2 for package: coreutils-libs-8.4-31.el6_5.2.x86_64
---> Package coreutils.x86_64 0:8.4-37.el6 will be an update
--> Finished Dependency Resolution
Error: Package: coreutils-libs-8.4-31.el6_5.2.x86_64 (@updates)
           Requires: coreutils = 8.4-31.el6_5.2
           Removing: coreutils-8.4-31.el6_5.2.x86_64 (@updates)
               coreutils = 8.4-31.el6_5.2
           Updated By: coreutils-8.4-37.el6.x86_64 (base)
               coreutils = 8.4-37.el6
 You could try using --skip-broken to work around the problem

Бег yum remove coreutils-libs-8.4-37.el6.x86_64:

Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package coreutils-libs.x86_64 0:8.4-37.el6 will be erased
--> Finished Dependency Resolution

Dependencies Resolved
==============================
========================================================================================

Package                         Arch                    Version                    Repository                  Size
======================================================================================================================
Removing:
 coreutils-libs                  x86_64                  8.4-37.el6                  installed                  5.4 k

Transaction Summary
======================================================================================================================
Remove        1 Package(s)

Installed size: 5.4 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing    : coreutils-libs-8.4-37.el6.x86_64                                                                   1/1 
  Verifying  : coreutils-libs-8.4-37.el6.x86_64                                                                   1/1 

Removed:
  coreutils-libs.x86_64 0:8.4-37.el6                                                                                  

Complete!

Очистка с помощью yum clean all:

Loaded plugins: fastestmirror
Cleaning repos: base extras updates
Cleaning up Everything
Cleaning up list of fastest mirrors

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

Loaded plugins: fastestmirror
Setting up Update Process
Determining fastest mirrors
 * base: mirrors.lga7.us.voxel.net
 * extras: mirrors.lga7.us.voxel.net
 * updates: mirror.cc.columbia.edu
base                                                                                           | 3.7 kB     00:00     
base/primary_db                                                                                | 4.6 MB     00:00     
extras                                                                                         | 3.4 kB     00:00     
extras/primary_db                                                                              |  30 kB     00:00     
updates                                                                                        | 3.4 kB     00:00     
updates/primary_db                                                                             | 1.5 MB     00:00     
Resolving Dependencies
--> Running transaction check
---> Package coreutils.x86_64 0:8.4-31.el6_5.2 will be updated
---> Package coreutils.x86_64 0:8.4-37.el6 will be an update
---> Package coreutils-libs.x86_64 0:8.4-31.el6_5.2 will be updated
---> Package coreutils-libs.x86_64 0:8.4-37.el6 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================
 Package                          Arch                     Version                       Repository              Size
======================================================================================================================
Updating:
 coreutils                        x86_64                   8.4-37.el6                    base                   3.0 M
 coreutils-libs                   x86_64                   8.4-37.el6                    base                    50 k

Transaction Summary
======================================================================================================================
Upgrade       2 Package(s)

Total download size: 3.1 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): coreutils-8.4-37.el6.x86_64.rpm                                                         | 3.0 MB     00:00     
(2/2): coreutils-libs-8.4-37.el6.x86_64.rpm                                                    |  50 kB     00:00     
----------------------------------------------------------------------------------------------------------------------
Total                                                                                  44 MB/s | 3.1 MB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating   : coreutils-libs-8.4-37.el6.x86_64                                                                   1/4 
  Updating   : coreutils-8.4-37.el6.x86_64                                                                        2/4 
  Cleanup    : coreutils-libs-8.4-31.el6_5.2.x86_64                                                               3/4 
  Cleanup    : coreutils-8.4-31.el6_5.2.x86_64                                                                    4/4 
  Verifying  : coreutils-8.4-37.el6.x86_64                                                                        1/4 
  Verifying  : coreutils-libs-8.4-37.el6.x86_64                                                                   2/4 
  Verifying  : coreutils-libs-8.4-31.el6_5.2.x86_64                                                               3/4 
  Verifying  : coreutils-8.4-31.el6_5.2.x86_64                                                                    4/4 

Updated:
  coreutils.x86_64 0:8.4-37.el6                           coreutils-libs.x86_64 0:8.4-37.el6                          

Complete!

= Sup.

Джон
источник
10

Обычной причиной yumсмерти Killedявляется то, что системе не хватило памяти.

Из ваших журналов выглядит, как будто у вас есть экземпляр Amazon t1.micro или что-то похожего размера, без пространства подкачки. Этого ограниченного объема памяти часто недостаточно для выполнения большого количества установок / обновлений пакетов.

Чтобы решить проблему, либо:

  1. Завершите работу служб, пока у вас не будет достаточно памяти для завершения транзакции yum.

    Или...

  2. Добавьте файл подкачки или подкачку на временное хранилище для вашего экземпляра.

Тогда вы сможете завершить свои ням транзакции.


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

package-cleanup --cleandupes

прежде чем выполнять какие-либо другие обновления.

Майкл Хэмптон
источник
1
Вы также можете воспользоваться этой возможностью, чтобы переключиться на экземпляр t2.micro, который имеет больше памяти, обычно быстрее и дешевле.
Майкл Хэмптон
Спасибо. Это заняло остановку httpd, но все заработало, и после тоже почистилось.
Леонард Чаллис
2

Попробуйте, you update --skip-brokenчто пропустит сломанные пакеты (вы можете разобраться с ними позже), вероятно, хорошая идея запустить yum clean allперед тем, как что-либо делать.

Alexus
источник
1

Отфильтровывая постороннюю информацию, которую вы цитировали, и уже наполовину yumпытаясь помочь вам:

Остались незавершенные транзакции. Вы могли бы подумать о том, чтобы бежать yum-complete-transactionпервым, чтобы закончить их. Программа yum-complete-транзакция находится в пакете yum-utils.

Вы уже попробовали это?

HBruijn
источник
Да на самом деле я сделал. Он сказал мне, что не может завершить и переименовал файлы транзакций
Леонард Чаллис
Я добавил больше деталей к вопросу с примерами того, когда что-то не так.
Леонард Чаллис
0

Попробуйте

yum downgrade packagename

Не уверен, почему, но он обновляется, или, по крайней мере, он сделал это для меня с пакетом tcpdump. Перешел с версии tcpdump-4.5.1-2.el7.x86_64 на tcpdump-4.7.4-1_ESG_ring.x86_64, что я и хотел.

hokie1999
источник