얼마 전 저는 CentOS 5 서버에 Steam을 설치하려고 시도하면서 인터넷에서 찾을 수 있는 거의 모든 것을 시도했는데 둘 다 포함하거나 포함하지 않고 libstdc++를 설치할 수 있는 것 같았습니다.
CPanel은 설치할 올바른 버전을 찾을 수 없기 때문에 업데이트할 수 없지만 yum은 이미 설치되어 있기 때문에 설치할 수 없습니다.
¿ 이 상황을 해결하고 일관된 상태에 도달하려면 어떻게 해야 합니까?
# yum install libstdc++-4.1.2-55.el5
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* contrib: mirror.wiredtree.com
addons | 1.9 kB 00:00
base | 1.1 kB 00:00
centosplus | 1.9 kB 00:00
contrib | 1.9 kB 00:00
extras | 2.1 kB 00:00
updates | 1.9 kB 00:00
wiredtree | 951 B 00:00
Excluding Packages in global exclude list
Finished
Setting up Install Process
Package matching libstdc++-4.1.2-55.el5.i386 already installed. Checking for update.
Nothing to do
# yum remove libstdc++-4.1.2-55.el5
Loaded plugins: fastestmirror
Setting up Remove Process
No Match for argument: libstdc++-4.1.2-55.el5
Loading mirror speeds from cached hostfile
* contrib: mirror.wiredtree.com
addons | 1.9 kB 00:00
base | 1.1 kB 00:00
centosplus | 1.9 kB 00:00
contrib | 1.9 kB 00:00
extras | 2.1 kB 00:00
updates | 1.9 kB 00:00
wiredtree | 951 B 00:00
Excluding Packages in global exclude list
Finished
Package(s) libstdc++-4.1.2-55.el5 available, but not installed.
No Packages marked for removal
# yum reinstall libstdc++-4.1.2-55.el5
Loaded plugins: fastestmirror
Setting up Reinstall Process
Loading mirror speeds from cached hostfile
* contrib: mirror.wiredtree.com
addons | 1.9 kB 00:00
base | 1.1 kB 00:00
centosplus | 1.9 kB 00:00
contrib | 1.9 kB 00:00
extras | 2.1 kB 00:00
updates | 1.9 kB 00:00
wiredtree | 951 B 00:00
Excluding Packages in global exclude list
Finished
No Match for argument: libstdc++-4.1.2-55.el5
Package(s) libstdc++-4.1.2-55.el5 available, but not installed.
Nothing to do
# yum --showduplicates list libstdc++ | expand
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* contrib: mirror.wiredtree.com
Excluding Packages in global exclude list
Finished
Installed Packages
libstdc++.i386 4.3.2-7 installed
Available Packages
libstdc++.i386 4.1.2-55.el5 base
답변1
나에게 올바른 방향을 알려준 Anthony Geoghegan에게 감사드립니다. 효과적인 해결책을 찾았습니다.
rpm -e --justdb --nodeps libstdc++
파일을 건드리지 않고 데이터베이스에서 패키지를 삭제한 다음 간단하게 yum install
.
답변2
관심이 없어서 먼저 다음 rpm
을 사용하여 패키지를 제거해 보았습니다.
rpm -e libstdc++
그러나 의심되는 내부 데이터베이스가 rpm
손상되어 위 명령이 작동하지 않았기 때문에 다음을 사용하여 데이터베이스를 재구축해 보았습니다.
rpm --rebuilddb
답변3
이는 x86_64 및 multilib 패키지에서 발생할 수 있습니다. yum remove libstdc++
64비트 버전을 제거하려고 시도했지만 설치되지 않았습니다. 따라서 이 경우에는 아치를 사용하여 패키지를 처리해야 합니다. 즉:
yum remove libstdc++-4.1.2-55.el5.i386
답변4
내 주인님도 비슷한 상황이에요.
# yum --showduplicates list coreutils-libs
동시에 설치된 것으로 보이는 동일한 패키지의 두 버전을 반환합니다.
Installed Packages
coreutils-libs.x86_64 8.4-37.el6_7.3 @updates
coreutils-libs.x86_64 8.4-43.el6 installed
Available Packages
coreutils-libs.x86_64 8.4-43.el6 base
내가 시도할 때
# yum remove coreutils-libs
다음을 포함한 다른 종속성을 제거해야 했기 때문에 실패했습니다.음그 자체.
그러나 몇 번의 시행착오 끝에 문제를 해결할 수 있었습니다. 핵심은 버전 및 릴리스 접미사를 포함하여 패키지의 전체 이름을 사용하는 것입니다.
요점은 패키지 중 하나를 삭제하려면 물리적 삭제가 필요하지만 두 패키지 중 다른 하나를 삭제하면 rpm DB 레코드만 삭제되어 데이터베이스가 일관된 상태가 된다는 것입니다.
내 경우에도coreutils-8.4-37.el6_7.3패키지가 설치되었으므로 -37.el6_7.3 버전이 아마도 올바른 버전일 것입니다(예: 유지).
내가 말했을 때음다른 것을 삭제하다
# yum remove coreutils-libs-8.4-43.el6
모든 것이 오류 없이 실행되고 RPM DB가 다시 일관되게 됩니다.