Manjaro Linux(Arch Linux의 파생 버전)를 설치했는데 소프트웨어 업데이트 순환 종속성 문제가 발생했습니다. 제안된 해결 방법이 있습니까?

Manjaro Linux(Arch Linux의 파생 버전)를 설치했는데 소프트웨어 업데이트 순환 종속성 문제가 발생했습니다. 제안된 해결 방법이 있습니까?

데스크탑에서 Manjaro Linux 소프트웨어를 업데이트하는 데 문제가 있습니다. 시스템 업데이트를 수행하고 싶거나, 업데이트 앱으로 이동하거나, 업데이트 앱에서 처리되지 않은 소프트웨어 업데이트가 많이 있음을 알리고 업데이트 프로세스를 시작합니다. 그러나 업데이트를 다운로드한 후 일반적으로 내 Python 패키지 중 일부가 다른 Python 패키지에 의존하며 "종속성 주기"가 있다는 메시지를 받습니다. 문제를 인지하고 있음을 보여주기 위해 거래를 "제출"했지만 "거래 실패" 상황이 항상 발생합니다.

해결 방법으로 일부 패키지의 부분 업그레이드만 시도했지만 여전히 트랜잭션 오류로 인해 실패합니다.

다음은 pacman -Syu를 실행하는 것입니다:

 sudo pacman -Syu
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
:: Starting full system upgrade...
:: Replace geoclue2 with extra/geoclue? [Y/n] y
:: Replace libmariadbclient with extra/mariadb-libs? [Y/n] y
:: Replace libsystemd with core/systemd-libs? [Y/n] y
:: Replace pamac with extra/pamac-gtk? [Y/n] y
:: Replace xorg-mkfontdir with extra/xorg-mkfontscale? [Y/n] y
resolving dependencies...
looking for conflicting packages...
warning: dependency cycle detected:
warning: bashrc-manjaro will be installed before its bash dependency
warning: dependency cycle detected:
warning: harfbuzz will be installed before its freetype2 dependency
warning: dependency cycle detected:
warning: libglvnd will be installed before its mesa dependency
warning: dependency cycle detected:
warning: nvidia-utils will be installed before its libglvnd dependency
warning: dependency cycle detected:
warning: egl-wayland will be installed before its mesa dependency
warning: dependency cycle detected:
warning: xorg-server will be installed before its libglvnd dependency
warning: dependency cycle detected:
warning: nvidia-utils will be installed before its mesa dependency
warning: dependency cycle detected:
warning: x264 will be installed before its ffmpeg dependency
warning: dependency cycle detected:
warning: lib32-harfbuzz will be installed before its lib32-freetype2 dependency
warning: dependency cycle detected:
warning: lib32-libglvnd will be installed before its lib32-mesa dependency
warning: dependency cycle detected:
warning: lib32-nvidia-utils will be installed before its lib32-libglvnd dependency
warning: dependency cycle detected:
warning: python-fixtures will be installed before its python-testtools dependency
warning: dependency cycle detected:
warning: rubygems will be installed before its ruby dependency

Packages (586) 

...snip all my packages...

Total Installed Size:  5498.56 MiB
Net Upgrade Size:       106.28 MiB

:: Proceed with installation? [Y/n] y
(581/581) checking keys in keyring                                       [#########################################] 100%
(581/581) checking package integrity                                     [#########################################] 100%
(581/581) loading package files                                          [#########################################] 100%
(581/581) checking for file conflicts                                    [#########################################] 100%
error: failed to commit transaction (conflicting files)
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/__init__.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/__pycache__/__init__.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/__pycache__/debug.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/__pycache__/error.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/__init__.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/__pycache__/__init__.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/ber/__init__.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/ber/__pycache__/__init__.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/ber/__pycache__/decoder.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/ber/__pycache__/encoder.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/ber/__pycache__/eoo.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/ber/decoder.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/ber/encoder.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/ber/eoo.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/cer/__init__.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/cer/__pycache__/__init__.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/cer/__pycache__/decoder.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/cer/__pycache__/encoder.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/cer/decoder.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/cer/encoder.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/der/__init__.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/der/__pycache__/__init__.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/der/__pycache__/decoder.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/der/__pycache__/encoder.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/der/decoder.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/der/encoder.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/native/__init__.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/native/__pycache__/__init__.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/native/__pycache__/decoder.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/native/__pycache__/encoder.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/native/decoder.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/codec/native/encoder.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/compat/__init__.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/compat/__pycache__/__init__.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/compat/__pycache__/binary.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/compat/__pycache__/calling.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/compat/__pycache__/dateandtime.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/compat/__pycache__/integer.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/compat/__pycache__/octets.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/compat/__pycache__/string.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/compat/binary.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/compat/calling.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/compat/dateandtime.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/compat/integer.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/compat/octets.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/compat/string.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/debug.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/error.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/__init__.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/__pycache__/__init__.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/__pycache__/base.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/__pycache__/char.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/__pycache__/constraint.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/__pycache__/error.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/__pycache__/namedtype.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/__pycache__/namedval.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/__pycache__/opentype.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/__pycache__/tag.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/__pycache__/tagmap.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/__pycache__/univ.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/__pycache__/useful.cpython-37.pyc exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/base.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/char.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/constraint.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/error.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/namedtype.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/namedval.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/opentype.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/tag.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/tagmap.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/univ.py exists in filesystem
python-pyasn1: /usr/lib/python3.7/site-packages/pyasn1/type/useful.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/__init__.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/__pycache__/__init__.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/__pycache__/_common.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/__pycache__/_version.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/__pycache__/easter.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/__pycache__/relativedelta.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/__pycache__/rrule.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/__pycache__/tzwin.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/__pycache__/utils.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/_common.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/_version.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/easter.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/parser/__init__.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/parser/__pycache__/__init__.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/parser/__pycache__/_parser.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/parser/__pycache__/isoparser.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/parser/_parser.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/parser/isoparser.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/relativedelta.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/rrule.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/tz/__init__.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/tz/__pycache__/__init__.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/tz/__pycache__/_common.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/tz/__pycache__/_factories.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/tz/__pycache__/tz.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/tz/__pycache__/win.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/tz/_common.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/tz/_factories.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/tz/tz.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/tz/win.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/tzwin.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/utils.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/zoneinfo/__init__.py exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/zoneinfo/__pycache__/__init__.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/zoneinfo/__pycache__/rebuild.cpython-37.pyc exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz exists in filesystem
python-dateutil: /usr/lib/python3.7/site-packages/dateutil/zoneinfo/rebuild.py exists in filesystem
Errors occurred, no packages were upgraded.

여전히 개별 패키지를 설치할 수 있습니다. 하지만 OS 업데이트가 중단되어 현재 로컬 데스크톱에 보안 문제가 있을 수 있습니다. 표준 패키지 업데이트 중에 위에서 설명한 종속성 주기 및 실패한 트랜잭션을 어떻게 처리합니까?

답변1

pacman의 출력을 검색해 보면 "/bla/bla가 파일 시스템에 존재합니다"라는 메시지가 많이 표시됩니다. 이것이 당신의 문제일 수 있습니다. 어떻게 이런 일이 일어나는지는 모르겠지만 팩맨은 설치하는 패키지가 해당 파일을 "소유"한다는 것이 확실하지 않은 한 파일 덮어쓰기를 좋아하지 않습니다.

옵션을 사용하여 이 검사를 무시할 수 있다고 생각합니다 --force.주의해서 사용하세요, 호환되지 않는 버전으로 파일을 덮어쓸 수 있기 때문입니다. 더욱이, 그러한 갈등이 발생할 때마다 이를 수행해야 합니다. 이것은 당신이해야한다는 것을 의미합니다매번업데이트 python-dateutil하거나 python-pyasn1.

보다 영구적인 해결 방법은 패키지를 업데이트하기 전에 이러한 파일을 삭제하는 것입니다. 하지만,이게 더 위험해시스템을 "파괴"시킬 수 있으므로(강제 삭제한 파일에 따라) 마지막 솔루션보다 더 효과적입니다. 이 방법을 사용하는 경우 가장 중요한 모든 파일을 제대로 백업했는지 확인하고 시스템 사용을 복구 및/또는 다시 설치해야 할 경우를 대비해 라이브 CD/DVD/플래시 드라이브 등 편리한 모든 것을 보관하십시오.

충돌하는 파일 목록을 얻는 편리한 방법은 다음과 같습니다.

while [ : ]; do echo y; done | sudo pacman -Syu | grep 'exists in filesystem$' | cut -f 2- -d ' ' | sed 's/ exists in filesystem$//g'

고쳐 쓰다: Arch에는 sudo가 포함되어 있지 않기 때문에 sudo 명령을 다음과 같이 바꾸는 등 다른 방법으로 루트로 pacman을 실행해야 할 수도 있다는 것을 방금 기억했습니다 su -c 'pacman -Syu'. (Manjaro가 sudo와 함께 제공되는지는 확실하지 않지만 Arch를 기반으로 하기 때문에 그렇지 않을 것으로 생각됩니다.)

위의 출력을 사용하여 충돌 파일의 백업 복사본을 만들 수 있습니다(아마도 tarball에 넣을 수도 있습니다). 이 목록을 사용하여 이러한 파일을 자동으로 삭제할 수도 있습니다. 다음은 한 번에 파일을 백업하고 삭제하는 데 사용할 수 있는 훌륭한 스크립트입니다.

FILES="$(while [ : ]; do echo y; done | pacman -Syu | grep 'exists in filesystem$' | cut -f 2- -d ' ' | sed 's/ exists in filesystem$//g')"
echo "$FILES" | xargs -0 -d \\n -s 9999999999 tar -c -a -f /backup-broken-files.tar || exit
echo "$FILES" | xargs -0 -d \\n -s 9999999999 rm
echo "Backed up and removed conflicting application files."

경고해야 할 점은 최근 Fedora로 전환할 때까지(주로 호기심 때문에) Arch를 사용했다는 것입니다. 즉, 저는 더 이상 Arch를 소유하지 않기 때문에 이 스크립트를 테스트할 수 없으므로 사용에 따른 책임은 본인에게 있습니다. 또한 이 스크립트가 작동하려면 (물론) 이를 실행해야 합니다.루트 사용자로.

만들고 있는 tarball에 압축을 적용하려면 파일 이름 끝에 .xz, .gz 또는 .bz2와 같은 적절한 확장자를 추가하기만 하면 tar가 자동으로 적절한 압축을 사용합니다(인수에 감사드립니다 -a).

누군가가 이 문제를 해결하는 더 안전한 방법을 알고 있기를 바랍니다. (아마도 팩맨이 해당 파일이 Kzqai가 설치/업데이트하려는 패키지에 "이미" 속해 있다고 생각하게 만들 수도 있습니다). 계속하기 전에 더 나은 답변을 기다려야 할 수도 있습니다.

추신: xargs에서 "-s 옵션의 x 값은 <= y여야 합니다"라는 경고가 표시될 수 있습니다. 여기서 "x"와 "y"는 숫자입니다. 걱정하지 마세요. 이 경고는 무시해도 됩니다.

관련 정보