マシンを17.10から18.04LTSにアップグレードした後、以前は問題なくインストールされていたWineが壊れてしまったようです。報告されている多くの問題(およびクレムからの興味深いコメントLinux Mintの発見に続いて、古いWineを消去して、「標準的な」指示ここは Askubuntu です。
残念ながら、私はあまり遠くまで行けません。
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
次に何をすればいいのか本当にわかりません。エラー メッセージについて考えられる限りの検索をしましたが、何もわかりません。また、現在の (壊れた!) Wine を消去するまで、新しい Wine のインストールを続行すべきではないと思います。
では、この Wine を取り除くにはどうしたらいいでしょうか? 他に実行すべき/実行できる診断がある場合は、お知らせください。この質問を更新します。
答え1
動作しなかった理由は、 に渡そうとしたパターンに一致するファイルが現在のディレクトリに存在したためですapt
。
bash はコマンドラインで(引用符で囲まれておらずエスケープもされていない)アスタリスク、疑問符、その他のグロブ文字を見つけると、現在のディレクトリ内のファイルをチェックし、パターンに一致するものがあれば、その特殊文字を含む単語をスペースで区切られた一致するファイルの一覧に置き換えます。ターミナルで次のように入力すると、この状態を確認できます。
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 に設定されるため、このようなバグを見つけるのがはるかに簡単になります。このオプションがデフォルトで有効になっていないのは本当に残念です。このオプションが有効になっていると、現在のディレクトリに適切なファイルが存在する場合にのみ明らかになる無数の不安定なバグを回避できます。