Yum: 업데이트를 설치할 수 없습니다 - "트랜잭션을 실행할 수 없습니다"

Yum: 업데이트를 설치할 수 없습니다 - "트랜잭션을 실행할 수 없습니다"

저는 CentOS Linux 버전 7.9.2009를 사용하고 있으며 해결 방법을 알 수 없는 이메일/문제를 매일 반복해서 받습니다. 저는 하루에 한 번씩 이런 이메일을 받습니다.

The following updates will be applied on myserver.xyz:
================================================================================
Package                 Arch   Version                      Repository    Size
================================================================================
Installing:
nodejs-libs             x86_64 1:16.14.0-2.el7              epel          14 M
     replacing  v8.x86_64 1:3.14.5.10-25.el7
Updating:
MariaDB-client          x86_64 10.6.7-1.el7.centos          mariadb-main  14 M
MariaDB-common          x86_64 10.6.7-1.el7.centos          mariadb-main  81 k
MariaDB-compat          x86_64 10.6.7-1.el7.centos          mariadb-main 2.2 M
MariaDB-server          x86_64 10.6.7-1.el7.centos          mariadb-main  25 M
MariaDB-shared          x86_64 10.6.7-1.el7.centos          mariadb-main 113 k
galera-4                x86_64 26.4.11-1.el7.centos         mariadb-main 9.9 M
java-1.8.0-openjdk-headless
                         x86_64 1:1.8.0.322.b06-1.el7_9      updates       33 M
jotta-cli               x86_64 0.13.55213-2                 jotta-cli     10 M
libsmbclient            x86_64 4.10.16-18.el7_9             updates      146 k
libwbclient             x86_64 4.10.16-18.el7_9             updates      116 k
php                     x86_64 8.1.3-1.el7.remi             remi-php81   1.9 M
php-cli                 x86_64 8.1.3-1.el7.remi             remi-php81   5.9 M
php-common              x86_64 8.1.3-1.el7.remi             remi-php81   1.2 M
php-gd                  x86_64 8.1.3-1.el7.remi             remi-php81    97 k
php-ldap                x86_64 8.1.3-1.el7.remi             remi-php81    95 k
php-mysqlnd             x86_64 8.1.3-1.el7.remi             remi-php81   244 k
php-pdo                 x86_64 8.1.3-1.el7.remi             remi-php81   149 k
php-process             x86_64 8.1.3-1.el7.remi             remi-php81    98 k
php-sodium              x86_64 8.1.3-1.el7.remi             remi-php81    93 k
polkit                  x86_64 0.112-26.el7_9.1             updates      170 k
remi-release            noarch 7.9-3.el7.remi               remi-safe     23 k
samba                   x86_64 4.10.16-18.el7_9             updates      720 k
samba-client            x86_64 4.10.16-18.el7_9             updates      646 k
samba-client-libs       x86_64 4.10.16-18.el7_9             updates      5.0 M
samba-common            noarch 4.10.16-18.el7_9             updates      216 k
samba-common-libs       x86_64 4.10.16-18.el7_9             updates      182 k
samba-common-tools      x86_64 4.10.16-18.el7_9             updates      466 k
samba-libs              x86_64 4.10.16-18.el7_9             updates      271 k
v8-devel                x86_64 2:9.4.146.24-1.16.14.0.2.el7 epel         9.5 k
Installing for dependencies:
brotli                  x86_64 1.0.7-5.el7                  epel         318 k
brotli-devel            x86_64 1.0.7-5.el7                  epel          27 k
nodejs                  x86_64 1:16.14.0-2.el7              epel         206 k
nodejs-devel            x86_64 1:16.14.0-2.el7              epel         178 k
openssl11               x86_64 1:1.1.1k-2.el7               epel         692 k
openssl11-libs          x86_64 1:1.1.1k-2.el7               epel         1.5 M

Transaction Summary
================================================================================
Install   1 Package  (+6 Dependent packages)
Upgrade  29 Packages
Updates failed to install with the following error message: 
Could not run transaction.

트랜잭션을 실행할 수 없습니다.유일한 실수인 것 같지만, 그렇다고 너무 많은 것을 포기하는 것은 아닙니다! ?

시도해 보았 yum clean all으나 다음날에도 여전히 같은 문제가 발생합니다.

이 오류는 동시에 이메일로 나타나는 다른 오류와 관련이 있을 수 있습니다.

myserver.xyz의 Anacron 작업 "cron.daily"

/etc/cron.daily/0yum-daily.cron:

Transaction couldn't start:
file /usr/lib64/libbrotlicommon.so.1 from install of brotli-1.0.7-5.el7.x86_64 conflicts with file from package libbrotli-1.0.9-1.codeit.el7.x86_64
file /usr/lib64/libbrotlidec.so.1 from install of brotli-1.0.7-5.el7.x86_64 conflicts with file from package libbrotli-1.0.9-1.codeit.el7.x86_64
file /usr/lib64/libbrotlienc.so.1 from install of brotli-1.0.7-5.el7.x86_64 conflicts with file from package libbrotli-1.0.9-1.codeit.el7.x86_64

yum repolist다음과 같은 출력을 제공합니다.

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.netsite.dk
 * epel: mirror.netsite.dk
 * extras: mirror.netsite.dk
 * remi-php81: mirror.dk.team.blue
 * remi-safe: mirror.dk.team.blue
 * updates: mirror.netsite.dk
repo id                                                   repo name                                                                                               status
base/7/x86_64                                             CentOS-7 - Base                                                                                         10,060+12
epel/x86_64                                               Extra Packages for Enterprise Linux 7 - x86_64                                                             13,733
extras/7/x86_64                                           CentOS-7 - Extras                                                                                             500
jotta-cli                                                 Jottacloud CLI                                                                                                 24
mariadb                                                   MariaDB                                                                                                        88
mariadb-main                                              MariaDB Server                                                                                                 94
mariadb-maxscale                                          MariaDB MaxScale                                                                                                4
mariadb-tools                                             MariaDB Tools                                                                                                  15
remi-php81                                                Remi's PHP 8.1 RPM repository for Enterprise Linux 7 - x86_64                                                 285
remi-safe                                                 Safe Remi's RPM repository for Enterprise Linux 7 - x86_64                                                  4,696
updates/7/x86_64                                          CentOS-7 - Updates                                                                                        3,413+1
repolist: 32,912

yum list installed | grep brotli다음과 같은 출력을 제공합니다.

libbrotli.x86_64                    1.0.9-1.codeit.el7             @CodeIT

cat /etc/cron.daily/0yum-daily.cron다음과 같은 출력을 제공합니다.

#!/bin/bash

# Only run if this flag is set. The flag is created by the yum-cron init
# script when the service is started -- this allows one to use chkconfig and
# the standard "service stop|start" commands to enable or disable yum-cron.
if [[ ! -f /var/lock/subsys/yum-cron ]]; then
  exit 0
fi

# Action!
exec /usr/sbin/yum-cron

생각하다brotli(?) 저장소를 사용하기 때문일 수도 있지만 ?에 해당 저장소가 나열되어 @CodeIT있지 않습니다 . yum repolist이 저장소가 언제 변경되었는지는 기억나지 않지만 PHP나 MariaDB와 관련이 있을 수 있습니다.

이것이 무엇인지, 해결 방법을 아는 사람이 있습니까?

### 업데이트 1 ###

제시된 답변에 대해 질문하기 위해 업데이트했습니다. 이것이 내가 실행할 때 얻는 결과입니다 yum remove libbrotli-1.0.9-1.codeit.el7.x86_64.

[root@myserver ~]# yum remove libbrotli-1.0.9-1.codeit.el7.x86_64
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package libbrotli.x86_64 0:1.0.9-1.codeit.el7 will be erased
--> Processing Dependency: libbrotlienc.so.1()(64bit) for package: httpd-2.4.51-1.codeit.el7.x86_64
--> Running transaction check
---> Package httpd.x86_64 0:2.4.51-1.codeit.el7 will be erased
--> Processing Dependency: httpd = 2.4.51-1.codeit.el7 for package: 1:mod_ssl-2.4.51-1.codeit.el7.x86_64
--> Processing Dependency: httpd = 2.4.51-1.codeit.el7 for package: httpd-manual-2.4.51-1.codeit.el7.noarch
--> Processing Dependency: httpd-mmn = 20120211x8664 for package: mod_fcgid-2.3.9-6.el7.x86_64
--> Processing Dependency: httpd-mmn = 20120211x8664 for package: mod_http2-1.15.24-2.codeit.x86_64
--> Processing Dependency: httpd-mmn = 20120211x8664 for package: php-8.1.2-1.el7.remi.x86_64
--> Processing Dependency: httpd-mmn = 20120211x8664 for package: 1:mod_ssl-2.4.51-1.codeit.el7.x86_64
--> Running transaction check
---> Package httpd-manual.noarch 0:2.4.51-1.codeit.el7 will be erased
---> Package mod_fcgid.x86_64 0:2.3.9-6.el7 will be erased
---> Package mod_http2.x86_64 0:1.15.24-2.codeit will be erased
---> Package mod_ssl.x86_64 1:2.4.51-1.codeit.el7 will be erased
--> Processing Dependency: mod_ssl for package: python2-certbot-apache-1.11.0-1.el7.noarch
---> Package php.x86_64 0:8.1.2-1.el7.remi will be erased
--> Running transaction check
---> Package python2-certbot-apache.noarch 0:1.11.0-1.el7 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================================================================================================
 Package                                         Arch                            Version                                        Repository                            Size
===========================================================================================================================================================================
Removing:
 libbrotli                                       x86_64                          1.0.9-1.codeit.el7                             @CodeIT                              768 k
Removing for dependencies:
 httpd                                           x86_64                          2.4.51-1.codeit.el7                            @CodeIT                              4.3 M
 httpd-manual                                    noarch                          2.4.51-1.codeit.el7                            @CodeIT                              7.2 M
 mod_fcgid                                       x86_64                          2.3.9-6.el7                                    @base                                228 k
 mod_http2                                       x86_64                          1.15.24-2.codeit                               @CodeIT                              535 k
 mod_ssl                                         x86_64                          1:2.4.51-1.codeit.el7                          @CodeIT                              254 k
 php                                             x86_64                          8.1.2-1.el7.remi                               @remi-php81                          5.7 M
 python2-certbot-apache                          noarch                          1.11.0-1.el7                                   @epel                                578 k

Transaction Summary
===========================================================================================================================================================================
Remove  1 Package (+7 Dependent packages)

나는 httpd 2.4.51-1and 를 제거하지 않을 것입니다 php 8.1.2-1. 왜냐하면 나는 그것들이 필요하기 때문입니다. 최신 버전이고 최고의 버전이므로 RHEL 리포지토리에 포함되어 있지 않다고 가정합니까?

그러면 이전 버전으로 돌아가고 싶지 않은 이상 이 문제를 쉽게 고칠 수 없을 것 같은데요?

### 내 솔루션으로 업데이트 2 ###

이것이 보편적인 해결책인지는 확실하지 않지만 문제는 해결되었습니다. 저장소 구성 오류가 있을 수 있습니다.

먼저 활성 저장소를 확인한 yum repolist결과 저장소가 손실된 것을 확인 CodeIT하고 이 솔루션을 사용하여 다시 설치했습니다.Centos 7에 최신 Apache 서버(httpd)를 설치하는 방법:

cd /etc/yum.repos.d && wget https://repo.codeit.guru/codeit.el`rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release)`.repo

그런 다음 하나를 시도했는데 yum update놀랍게도 아무 문제 없이 작동하고 업데이트되었습니다.

그런 다음 내 PHP가 업데이트되지 않은 것을 확인하여 여기에서 볼 수 있듯이 해당 저장소도 다시 설치했습니다.CentOS 7에 PHP 8.1을 설치하는 방법 |:

yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable remi-php81

그런 다음 또 다른 것을 만들었고 yum update갑자기 PHPO를 최신 8.1 버전으로 업데이트했습니다 :-)

어쩌면 다른 사람들도 이것을 사용하여 확인할 내용에 대한 영감을 얻을 수 있습니다.

답변1

패키지 "brotli-1.0.7-5.el7.x86_64"는 EPEL 저장소에 있습니다.https://centos.pkgs.org/7/epel-x86_64/brotli-1.0.7-5.el7.x86_64.rpm.html

yum update출력 에 따르면 이 종속성은 "v8-devel" 패키지에 의해 가져오고, 이 패키지는 "nodejs-devel"을 가져온 다음 "brotli-devel"을 가져옵니다.

"libbrotli-1.0.9-1.codeit.el7.x86_64"는 CodeIT 호스팅 저장소에서 가져온 것입니다.https://repo.codeit.guru/packages/centos/7/x86_64/

이 저장소는 Apache HTTPD 및 Nginx와 같은 특수 웹 서버 빌드를 제공하는 것으로 보입니다.

두 패키지 모두 충돌하는 공유 라이브러리인 libbrotlicommon.so.1 libbrotlidec.so.1, libbrotlienc.so.1을 제공합니다. yum이 충돌은 해결할 수 없으므로 오류가 발생합니다.

제가 아는 한, 이러한 상황을 쉽게 해결할 수 있는 방법은 없습니다. EPEL을 설치하려면 기존 패키지를 제거해야 합니다. 물론, 이에 의존하는 모든 패키지도 강제로 제거됩니다. yum remove libbrotli-1.0.9-1.codeit.el7.x86_64영향을 받는 패키지가 표시됩니다(확인할 때까지 실제로 패키지가 제거되지는 않습니다).

관련 정보