aptで、個別にパッケージをdeleteしていたら、autoremoveしろと表示されたので、実行した。
sudo apt autoremove
その結果、概ね、不必要なパッケージは削除されたが、実際にサービスとして使っているパッケージも削除された。急に使えなくなったので、コマンドを調べたら存在せず。結局、もう一度、apt install した。こういうこともあるので、apt autoremove したら、機能確認はしよう。
aptで、個別にパッケージをdeleteしていたら、autoremoveしろと表示されたので、実行した。
sudo apt autoremove
その結果、概ね、不必要なパッケージは削除されたが、実際にサービスとして使っているパッケージも削除された。急に使えなくなったので、コマンドを調べたら存在せず。結局、もう一度、apt install した。こういうこともあるので、apt autoremove したら、機能確認はしよう。
自分のメモとして。
前提として、WSL2のインストールは終わっている。
Docker Desktop for Windowsをダウンロードする。下記のURLにアクセスして、「Get Docker」からダウンロードする。
https://hub.docker.com/editions/community/docker-ce-desktop-windows/
ダウンロードしたインストーラー(EXEファイル)を実行する。インストールのときに、「Install required Windows components for WSL2」にチェックが入っているので、WSL2対応もばっちり。

インストールが終わったら、Windows10の再起動が入る。

で、なにをしたらいいのかわからないので、チュートリアルを実施。

チュートリアルの通りにやったら、チュートリアルのコンテナが立ち上がった。

このコンテナがどこで動いているのか気になって、WSL2のUbuntuでpsコマンドをたたいてみると、dockerに関連したプロセスが起動しているので、WSL2の上で動作していることが確認できた。
root 185 0.0 0.5 1463396 31664 pts/1 Ssl+ 20:06 0:00 /mnt/wsl/docker-desktop/docker-desktop-proxy --distro-n

Dockerのインストールというかセットアップが簡単すぎて、正直よくわからない。利用する側にしてみると、どのみちブラックボックスなので、このくらい簡単なのがいいのだろう。
ASP.NET(MVC5)で作成したアプリを変更してデプロイした。デプロイ後、Invoke-WebRequestでアクセスしたところ、アプリケーションエラーが発生した。エラー内容は下記。
Invoke-WebRequest : '/API' アプリケーションでサーバー エラーが発生しました。
ファイルまたはアセンブリ 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicK
eyToken=31bf3856ad364e35'、またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はア
センブリ参照に一致しません。 (HRESULT からの例外:0x80131040)
説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所について
は、スタック トレースを参照してください。
例外の詳細: System.IO.FileLoadException: ファイルまたはアセンブリ 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform,
Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'、またはその依存関係の 1 つが読み込めませんでした。見
つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。 (HRESULT からの例外:0x80131040)
ソース エラー:
現在の Web 要求の実行中にハンドルされていない例外が生成されました。障害の原因および発生場所に関する情報については、下の
例外スタック トレースを使って確認できます。
アセンブリ読み込みトレース: 以下の情報は、アセンブリ 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1
.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' を読み込めなかった原因を調べるのに役立ちます。
警告: アセンブリ バインドのログ記録がオフにされています。
アセンブリ バインドのエラー ログを有効にするには、レジストリ値 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) を 1
に設定してください。
注意: アセンブリ バインドのエラー ログに関連するパフォーマンス ペナルティがあります。
この機能をオフにするには、レジストリ値 [HKLM\Software\Microsoft\Fusion!EnableLog] を削除します。
スタック トレース:
[FileLoadException: ファイルまたはアセンブリ 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Cult
ure=neutral, PublicKeyToken=31bf3856ad364e35'、またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリの
マニフェスト定義はアセンブリ参照に一致しません。 (HRESULT からの例外:0x80131040)]
System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly
, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) +0
System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly
, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) +96
System.Type.GetType(String typeName) +62
System.CodeDom.Compiler.CompilerInfo.get_IsCodeDomProviderTypeValid() +15
System.Web.Compilation.CompilationUtil.GetRecompilationHash(CompilationSection ps) +2406
System.Web.Configuration.CompilationSection.get_RecompilationHash() +110
System.Web.Compilation.BuildManager.CheckTopLevelFilesUpToDateInternal(Int64 cachedHash) +551
System.Web.Compilation.BuildManager.CheckTopLevelFilesUpToDate(Int64 cachedHash) +59
System.Web.Compilation.BuildManager.ExecutePreAppStart() +155
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMap
PathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception ap
pDomainCreationException) +746
[HttpException (0x80004005): ファイルまたはアセンブリ 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.
1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'、またはその依存関係の 1 つが読み込めませんでした。見つかったアセ
ンブリのマニフェスト定義はアセンブリ参照に一致しません。 (HRESULT からの例外:0x80131040)]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +552
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +122
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +737
バージョン情報: Microsoft .NET Framework バージョン:4.0.30319; ASP.NET バージョン:4.8.4075.0
発生場所 行:1 文字:1
+ Invoke-WebRequest http://xxxx:8080/api/xxxxCopy/
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest]、WebExce
ption
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Visual Studioで開発してテストしていると何も問題がなかった。原因は、Web.configをデプロイしていなかったこと。Visual Studioの環境や.Net Framework 4.8の環境は、毎月更新されていく。その環境でコンパイルしたときに、もともとのWeb.configに記載された情報と新しくコンパイルされたものの情報が異なった。そのために、実行時にエラーになった。解決策としては、新しくコンパイルした方のWeb.configを使うこと。環境に合わせて変更する必要があれば変更する。
Windows10 Ver.1903でWSLからWSL2にしたので、メモ。WSL2が出たときの手順よりも、かなり楽になってて衝撃的だった。特に仮想マシンのプラットフォームの部分がmsiファイルでインストールではなく、コマンドで済んだので、楽。
1. 「仮想マシン プラットフォーム」をコマンドで有効にする。
Powershellを管理者として実行する。下記のコマンドを実行する。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
PCを再起動する
2. 規定のバージョンをWSL2に変更する
Powershellを管理者として実行する。下記のコマンドを実行する。
wsl --set-default-version 2
3. 既存のWSLをWSL2に変換する。
PCにインストールされている既存のWSLの名前を下記のコマンドで確認する。
wsl -l -v
次にWSL2に、下記のコマンドで変換する。(Ubuntu-20.04の部分は、上記のコマンドで調べた名前を入れる)
wsl --set-version Ubuntu-20.04 2
もう一度、「wsl -l -v」コマンドを実行し、WSLのバージョンが2になっているか確認する。
wsl -l -v
■実際に試したところ
PS C:\windows\system32> wsl --set-default-version 2 WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください PS C:\windows\system32> PS C:\windows\system32> PS C:\windows\system32> PS C:\windows\system32> wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Stopped 1 PS C:\windows\system32> wsl --set-version Ubuntu-20.04 2 変換中です。この処理には数分かかることがあります... WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください 変換が完了しました。 PS C:\windows\system32> PS C:\windows\system32> wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Stopped 2 PS C:\windows\system32>
Oracle DatabaseのV$LOCKテーブルのCTIMEの単位は秒。
CTIME: 3600
の場合は、3600秒なので、1時間。
Windows Updateなどの影響により、WordやExcelのファイルをダブルクリックしても、Micorosoft365のWordやExcelが開かなくなるときがある。既定のプログラムを調べても、WordやExcelなど正しいアプリが選択されている。そういう場合は、Micorosoft365のOfficeをクイック修復する。
原因を調べたところ、Windows 10のオーバーレイアイコンの上限は15個まで。TortoiseGitの「Icon Overlays」の「Overlay Handlers」を表示すると、「There are currently 24 overlay handlers installed besides the ones Tortoise uses.」と表示されているので、現状、24個のオーバーレイアイコンがあるようで、使っていく中で、TortoiseGitのアイコンのオーバーレイの順位が下がったために、表示されなかった。Windowsのレジストリの変更で、TortoiseGitのオーバーレイアイコンの順位はあげられるが、そこまで重要でもないのと、原因がわかったので放置する。
Gitのリポジトリに登録されているファイルを、いったん全部消して、登録しなおす必要が発生した。リポジトリに含まれているファイルをコマンドでまとめて削除した。あとは、commitして、push。
git rm * git commit git push
gitで、rmコマンドを使うと、ファイルの削除になる。rmでファイルを指定するのだが、* アスタリスクにすることで、まるっと削除できた。履歴は残るのでよいが、rm * で全消しできるのは、便利だけど、こわい。
Office 2010の32ビットがインストールされているPCに、Microsoft 365 Apps for businessのOfficeの64ビットをインストールしようとしたら、インストールできず。エラーメッセージを確認すると、32ビットのOfficeがインストールされているから、という。何かを共有するのか、バージョン違いであっても、32ビットと64ビットのOfficeは共存できなかった。
32ビットのOffice2010とMicrosoft 365 Apps for businessは、共存できるのだけど。
Linuxで、CPU監視などのテストで、わざとCPU負荷をかける方法。ターミナルで、下記のコマンドを実行する。
yes > /dev/null
これで1コア分のCPUを無駄に100%使用する。複数のコアがある場合には、その数だけ、実行することで負荷のテストができる。止めるときは、Ctrl+Cで。
なお、同じコマンドでMac OS Xでも、負荷をかけることができる。