dpkg-divert 및 sed의 이러한 옵션은 Nvidia 패키지 전송과 어떤 관련이 있습니까?

dpkg-divert 및 sed의 이러한 옵션은 Nvidia 패키지 전송과 어떤 관련이 있습니까?

최근에 nvidia 패키지 전송으로 인해 몇 가지 오류가 발생했기 때문에 이 명령을 사용해야 했지만 어떻게 작동하는지 정확히 모르겠습니다.

LC_MESSAGES=C dpkg-divert --list '*nvidia-340*' | sed -nre 's/^diversion of (.*) to .*/\1/p' | xargs -rd'\n' -n1 -- sudo dpkg-divert --remove
sudo apt --fix-broken install

파이프 연산자가 어떻게 작동하는지 읽었고 알고 있지만 LC_MESSAGES명령 sed이 이러한 특정 옵션과 어떻게 작동하는지 알 수 없습니다.

답변1

LC_MESSAGES=C dpkg-divert --list '*nvidia-340*'

영어로 glob 패턴과 일치하는 모든 전환을 나열하므로 *nvidia-340*출력은 "diversion of ... to ... by ..." 형식이 됩니다.

sed -nre 's/^diversion of (.*) to .*/\1/p'

"diversion of"와 "to" 사이의 텍스트를 추출하고,전송된 파일의 이름입니다. ; 자동 패턴 공간 출력을 비활성화하는 -nre것과 동일 하므로 명령에서 요청하지 않는 한 아무것도 출력되지 않습니다 (명령 끝 참조 ). 확장 정규식을 활성화하고 실행하려는 스크립트를 도입합니다. 정규식에서는 줄 시작 부분(공백 포함)에서 "diversion of"를 일치시키고, 임의 개수의 문자를 일치시키고 일치 그룹을 만듭니다 . 이는 명령에서 전체 텍스트만 일치하는 그룹의 내용으로 바꾸는 데 사용됩니다(-n -r -e-npsed-r-e^diversion of(.*)to .*s\1"diversion of"와 "to" 사이의 텍스트). 명령이 일치하면 p최종적으로 패턴 공간이 인쇄됩니다.s

xargs -rd'\n' -n1 -- sudo dpkg-divert --remove

sudo dpkg-divert --remove이전 단계의 각 파일 출력에 대해 실행하고 해당 전송을 삭제합니다.

sudo apt --fix-broken install

손상된 종속성을 수정해 보세요.

관련 정보