てすとです
これはテストです。
いろいろIT系のことをメモしてます。
てすとです
これはテストです。
VSCodeをアップグレードしてWSL上で起動しようと思ったら
$ code .
/mnt/c/Program Files/Microsoft VS Code/bin/code: 61: /mnt/c/Program Files/Microsoft VS Code/Code.exe: Exec format error
といったエラーが表示されて起動しなくなりました。
ググったところでsystemdを有効にしていると問題が発生するようで、githubに以下の解決法が載ってました。
まずWSL上で以下のコマンドを実行します。
$ sudo sh -c 'echo :WSLInterop:M::MZ::/init:PF > /usr/lib/binfmt.d/WSLInterop.conf'
その後、WSLを終了させて再起動するとVSCodeが起動できるようになりました。
PS > wsl --shutdown
参考:[WSL2][systemd][interop] Unable to Execute Windows Binary when systemd enabled #8843
まず、現在のバージョンを確認します。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.5 LTS
Release: 20.04
Codename: focal
現在のバージョンにおける最新パッケージにアップグレードしておきます。
$ sudo apt update
$ sudo apt upgrade
$ sudo apt autoremove
Powershellを起動してWSLを停止します。
PS C:\> wsl -l -v
PS C:\> wsl --terminate Ubuntu
Ubuntuを再起動してから、次のコマンドを実行します。
$ sudo do-release-upgrade
アップグレードが完了したら念のため現在のバージョンを確認します。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.2 LTS
Release: 22.04
Codename: jammy
WSL上のUbuntuにpythonコマンドがありませんでした。
$ ls -l /usr/bin/python*
lrwxrwxrwx 1 root root 9 3月 13 2020 /usr/bin/python3 -> python3.8
-rwxr-xr-x 1 root root 5490448 3月 15 21:22 /usr/bin/python3.8
python3コマンドはあったので手動でリンクを貼ろうかとも考えたんですが、調べたら次のようなパッケージがありました。
インストールしてみました。
$ sudo apt install python-is-python3
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
python-is-python3
以下略
すると、無事pythonコマンドのリンクが貼られてました。
$ ls -l /usr/bin/python*
lrwxrwxrwx 1 root root 7 4月 15 2020 /usr/bin/python -> python3
lrwxrwxrwx 1 root root 9 3月 13 2020 /usr/bin/python3 -> python3.8
-rwxr-xr-x 1 root root 5490448 3月 15 21:22 /usr/bin/python3.8
AndroidStudioのエミュレーターが調子悪くなりました。
AndroidStudioのメニューアイコンから再起動しようと思っても何も反応せず、パソコンを再起動しても変わりませんでした。
この場合は、次のようにしてエミュレーターをリセットするといいです。
まず、AndroidStudioのターミナル(普通は左下のタブにあります)からadbを使って次のコマンドを実行します。
> adb devices
List of devices attached
emulator-5554 device
ここで表示されるデバイス名を指定して、次のコマンドを実行するとエミュレーターとの接続が終了します。
> adb -s emulator-5554 emu kill
OK: killing emulator, bye bye
OK
次に、AndroidStudioのDeviceManagerから該当のエミュレーターを選びWipe Dataを実行します。

その後エミューレーターを起動すると初期化された状態で起動するので日本語化の設定などをやりなおしてください。
UbuntuをHyper-Vで実行していると遅いなと感じる場合はMicrosoftが提供するLinux Integration Services(LIS)をインストールすると改善する可能性があります。
最初に、/etc/initramfs-tools/modules に次の行を追加します。
$ sudo vi /etc/initramfs-tools/modules
hv_vmbus # 追加
hv_storvsc # 追加
hv_blkvsc # 追加
hv_netvsc # 追加
次のコマンドを実行して modules ファイルを再初期化し、仮想ツールをインストールしてマシンを再起動します。
$ sudo apt install linux-virtual linux-cloud-tools-virtual linux-tools-virtual
$ sudo update-initramfs -u
$ sudo reboot
再起動されると、LISがシステムに登録されます。 インストールされているかを確認するには、ターミナルで lsmod を実行し、hid_hyperv、hv_netvsc、hv_utils、hv_storvc、hv_vmbus が存在する場合、LISのインストールは成功しています。
まずは、Docker for Windowsをインストールします。
インストールが終わったら、画面右下のシステムトレイにあるDockerアイコンから設定画面を開きます。


下記項目にチェックを入れて、TLSなしでデーモンに接続できるようにします。
これにより、ローカルのWSLインスタンスが、Docker for Windows内で実行されているDockerデーモンに接続できるようになります。 デーモンはlocalhostにのみバインドされているため、ネットワーク上の他のマシンは接続できません。

Docker公式HPに記載のあるとおりDockerをインストールします。
$ sudo apt update
$ sudo apt install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
docker-composeもインストールします。
$ sudo curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-uname -s-uname -m-o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose
sudoしなくてもdockerコマンドを実行できるようにdockerグループにユーザーを追加します。
$ sudo usermod -aG docker $USER
Docker for Windowsに接続するために以下の設定を.bashrcに追加します。
$ echo "export DOCKER_HOST=tcp://localhost:2375" >> ~/.bashrc && source ~/.bashrc
dockerが動くようになっていることを確認します。
$ docker info $ docker-compose --version
WSL上ではドライブは /mnt/d にマウントされるのに対して、Docker for Windowsでは内部で /d にマウントされているため、そのままで空のボリュームをマウントしてしまいます。
この対策として、/etc/wsl.conf に root=/ の設定を追加することで /mnt ではなく / にマウントされるようになります。
$ vi /etc/wsl.conf [automount] root = / options = "metadata,umask=22,fmask=11"
設定した後、一旦ログアウト/ログインするか、以下のコマンドをコマンドプロンプトで実行してWSLを再起動すると / に各ドライブがマウントされるようになります。
C:\> net stop LxssManager LxssManager サービスを停止中です. LxssManager サービスは正常に停止されました。 C:\> net start LxssManager LxssManager サービスを開始します. LxssManager サービスは正常に開始されました。
また、別の方法として、/mnt/d を /d にマウントする方法があります。
$ sudo mkdir /d
$ sudo mount –bind /mnt/d /d
ただし、この方法だと.bashrcに以下のようにコマンドを追加しておく必要があります。
$ echo "sudo mount --bind /mnt/c /c" >> ~/.bashrc && source ~/.bashrc $ # パスワードなしでマウント出来るようにしたい場合は以下の設定を追加する $ sudo visudo $ username ALL=(root) NOPASSWD: /bin/mount
Kubernetesのパッケージを一部ホールド(apt-mark hold)し忘れて1.17にアップグレードしちゃいました。そしたら、Nodeが起動しなくなっちゃいました。
$ kubectl get node NAME STATUS ROLES AGE VERSION testvm1 NotReady master 46d v1.17.0
kubectl describeでノードの状態を調べると以下のようなログが出てました。
$ kubectl describe node testvm1 略 Failed to initialize CSINodeInfo: error updating CSINode annotation: timed out waiting for the condition; caused by: the server could not find the requested resource“Kubernetes 1.17にしたら起動しなくなった時” の続きを読む
以下のようにMPEG ts(トランスポートストリーム)ファイルを結合するだけで結合できると思います。
$ cat file1.m2ts file2.m2ts file3.m2ts > output.m2ts
しかし、 前述のcatでの結合は一般的に機能しますが、タイムコードの問題により、一部のメディアプレーヤーで問題が発生する可能性があります。
“複数のm2tsファイルを結合して1つにする方法” の続きを読むWSLには開発用ツールが入っていませんので、まずはbuild-essentialをインストールします(あとでもいいかも?)。
$ sudo apt install build-essential
Homebrewの公式HPにも記載のある次のコマンドを実行します。
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
次の変数を~/.profileに追加します。
export HOMEBREW_PREFIX="/home/linuxbrew/.linuxbrew" export HOMEBREW_CELLAR="/home/linuxbrew/.linuxbrew/Cellar" export HOMEBREW_REPOSITORY="/home/linuxbrew/.linuxbrew/Homebrew" export PATH="/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:$PATH" export MANPATH="/home/linuxbrew/.linuxbrew/share/man:$MANPATH" export INFOPATH="/home/linuxbrew/.linuxbrew/share/info:$INFOPATH"