업그레이드 후 WINE을 제거하는 데 문제가 있습니다(17.10에서 18.04 LTS).

업그레이드 후 WINE을 제거하는 데 문제가 있습니다(17.10에서 18.04 LTS).

기계를 17.10에서 18.04LTS로 업그레이드한 후 이전에 만족스러웠던 Wine 설치가 지루한 것처럼 보입니다. 보고된 많은 문제를 감안할 때(그리고Clem의 흥미로운 의견Linux Mint 발견), 나는 이전 Wine을 날려버리고 다음과 같이 처음부터 다시 설치해야 한다고 생각했습니다."표준" 지침여기 아쿠분투에서요.

불행하게도 나는 그리 멀리 가지 못한다. 에 대한 응답으로

sudo apt purge wine*

오류 메시지가 나타납니다.

[sudo] password for user: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package winehq.key
E: Couldn't find any package by glob 'winehq.key'
E: Couldn't find any package by regex 'winehq.key'

그러나 which wine나는 를 얻고 나에게 이것을 제공 /usr/bin/wine합니다 dpkg:

$ dpkg -l | grep wine
ii  fonts-wine              3.0-1ubuntu1  all          Windows API implementation - fonts
ii  libwine:amd64           3.0-1ubuntu1  amd64        Windows API implementation - library
ii  wine-stable             3.0-1ubuntu1  all          Windows API implementation - standard suite
ii  wine-stable-amd64       4.0.1~bionic  amd64        WINE Is Not An Emulator - runs MS Windows programs
ii  wine64                  3.0-1ubuntu1  amd64        Windows API implementation - 64-bit binary loader
ii  winetricks              0.0+20180217-1all          package manager for Wine to install software easily

다음에 무엇을 해야할지 모르겠습니다. 오류 메시지에 대해 생각할 수 있는 모든 검색을 수행했지만 더 현명한 것은 없습니다. 그리고 현재의 (지루한!) 와인을 제거할 때까지 새로운 와인 설치를 진행해야 한다고 생각하지 않습니다.

그러면 이 포도주를 어떻게 없앨 수 있습니까? 실행해야 하거나 실행할 수 있는 다른 진단이 있는 경우 알려주시면 이 질문을 업데이트하겠습니다.

답변1

작동하지 않는 이유는 전달하려는 패턴과 일치하는 파일이 현재 디렉토리에 있기 때문입니다 apt.

bash가 명령줄에서 별표, 물음표 또는 기타 glob 문자를 보면 현재 디렉터리의 파일을 확인하고 그 중 하나라도 패턴과 일치하면 특수 문자가 포함된 단어를 다음으로 대체합니다. 일치하는 파일의 공백으로 구분된 목록입니다. 다음을 입력하면 터미널에서 이를 볼 수 있습니다.

echo *

현재 디렉토리 아래의 파일/디렉토리 목록이 인쇄됩니다. 귀하의 경우 패턴은 현재 디렉터리에 있는 wine*파일과 일치하므로 명령은 다음과 같이 변환되었습니다.winehq.key

sudo apt purge winehq.key

물론 저장소에 해당 이름을 가진 패키지가 없기 때문에 오류 메시지가 발생했습니다.

이 경우, 우리는 glob 패턴이 bash에 의해 해석되지 않고 문자 그대로 apt. 다음과 같이 특수 문자를 이스케이프하거나 인용하면 됩니다.

sudo apt purge wine\*

또는 동등하게:

sudo apt purge 'wine*'

다른 디렉토리에서 작동하는 것을 볼 수 있는 이유는 패턴과 일치하는 파일이 없을 때 glob이 문자 그대로 별표와 함께 그대로 남아 있기 때문입니다. 따라서 다른 디렉터리에서 명령을 실행하면 아마도 작동할 것입니다. 그러나 안전을 위해 실행 중인 명령에 해당 문자를 전달하려면 특수 bash 문자를 인용하거나 이스케이프하는 것이 항상 좋은 생각입니다.

이 동작은 nullglob다음 명령으로 bash 옵션을 설정하여 방지할 수 있습니다.

shopt -s nullglob

이 옵션을 활성화하면 파일과 일치하지 않는 모든 패턴이 초기 값을 유지하는 대신 null로 설정되므로 이러한 버그를 훨씬 쉽게 발견할 수 있습니다. 이 옵션이 기본적으로 활성화되어 있지 않다는 것은 정말 불행한 일입니다. 현재 디렉터리에 올바른 파일이 존재하는 경우에만 명백하게 나타나는 수많은 불규칙한 버그를 피할 수 있습니다.

관련 정보