이머지는 동일한 패키지의 두 가지 버전을 만들 계획입니다(dev-lang/perl-5.20 대 perl-5.22) - 충돌을 일으킴

이머지는 동일한 패키지의 두 가지 버전을 만들 계획입니다(dev-lang/perl-5.20 대 perl-5.22) - 충돌을 일으킴

모든 패키지를 업데이트하려고 하므로 다음을 실행했습니다.

emerge -aUDU --with-bdeps=y --verbose-conflicts @world

일부 패키지 충돌을 발견했습니다. 그러나 흥미로운 점은 dev-lang/perl두 가지 다른 버전의 패키지 설치를 준비한다는 것입니다.

dev-lang/perl:0

  (dev-lang/perl-5.22.1:0/5.22::gentoo, ebuild scheduled for merge) pulled in by
    =dev-lang/perl-5.22* required by (virtual/perl-IO-1.350.0:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                     
    =dev-lang/perl-5.22* required by (virtual/perl-version-0.990.900-r2:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                               
    =dev-lang/perl-5.22* required by (virtual/perl-File-Spec-3.560.0:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                            
    =dev-lang/perl-5.22* required by (virtual/perl-CPAN-Meta-YAML-0.12.0-r1:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                                   
    =dev-lang/perl-5.22* required by (virtual/perl-ExtUtils-MakeMaker-7.40.100_rc:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                                         
    =dev-lang/perl-5.22* required by (virtual/perl-ExtUtils-ParseXS-3.280.0:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                                   
    =dev-lang/perl-5.22* required by (virtual/perl-CPAN-Meta-2.150.1:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                            
    =dev-lang/perl-5.22* required by (virtual/perl-Module-Metadata-1.0.26:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                                 
    =dev-lang/perl-5.22* required by (virtual/perl-Parse-CPAN-Meta-1.441.400-r1:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                                       
    =dev-lang/perl-5.22* required by (virtual/perl-JSON-PP-2.273.0:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                          

  (dev-lang/perl-5.20.2:0/5.20::gentoo, ebuild scheduled for merge) pulled in by
    =dev-lang/perl-5.20* required by (virtual/perl-Getopt-Long-2.420.0-r1:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                                 
    =dev-lang/perl-5.20* required by (virtual/perl-ExtUtils-Install-1.670.0:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                                   
    =dev-lang/perl-5.20.2* required by (virtual/perl-Storable-2.490.100-r1:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^^^                                                                                                                                                
    =dev-lang/perl-5.20.2* required by (virtual/perl-ExtUtils-CBuilder-0.280.217-r2:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^^^                                                                                                                                                         
    =dev-lang/perl-5.20* required by (virtual/perl-Test-Harness-3.330.0:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                               
    =dev-lang/perl-5.20* required by (virtual/perl-Compress-Raw-Zlib-2.65.0:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                                   
    =dev-lang/perl-5.20* required by (virtual/perl-ExtUtils-Manifest-1.630.0-r2:0/0::gentoo, ebuild scheduled for merge)
    ^              ^^^^^                                                                                                                                                       
    =dev-lang/perl-5.20* required by (virtual/perl-Perl-OSType-1.7.0:0/0::gentoo, ebuild scheduled for merge)

두 버전 중 하나를 종속성으로 사용하는 모든 패키지(적어도 설치되어 충돌을 일으키는 것으로 나열된 패키지)를 병합 해제했으며 다음을 수행하여 두 버전 중 하나를 차단 dev-lang/perl해 보았습니다 ./etc/portage/package.mask/perl

>dev-lang/perl-5.20.2

또는

<=dev-lang/perl-5.22.1

하지만 갈등은 남아있습니다.

이러한 버전 중 하나에 의존하는 모든 패키지를 차단해야 합니까, 아니면 이 충돌을 처리할 수 있는 다른 방법이 있습니까?

답변1

사용

EIX_LIMIT=0 emerge -1auvDNt -j2 --verbose-conflicts =dev-lang/perl-5.22* $(eix '-I#' virtual/perl-*)

내 시스템에서 Perl을 5.20에서 5.22로 업데이트할 수 있었습니다.

원천:https://forums.gentoo.org/viewtopic-p-7593286.html#7593286

답변2

이것은 나에게 효과적이며 다른 것은 작동하지 않습니다.

#!/bin/bash

# unmerge perl virtuals
emerge --unmerge $(qlist --installed virtual/perl)

# print perl blockers and quit
if emerge -pq dev-lang/perl:0 2>/dev/null | grep blocks
then
        echo
        echo "unmerge packages blocking perl upgrade"

        exit 1
else
        # upgrade perl
        perl-cleaner --reallyall -- dev-lang/perl:0
fi

exit 0

에서:https://forums.gentoo.org/viewtopic-p-7790388.html?sid=5198a9a0af09fca7f15b170de417a5da#7790388

관련 정보