kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

WSLで使っているsnapからnode.jsが削除できない場合他

WSLのsnapでインストールしたnode.jsを削除しようとしたらこんなメッセージが出て削除できない状態でした。

❯ sudo snap remove node
[sudo] password for :
2023-05-21T14:42:03+09:00 ERROR cannot remove snap file "node", will retry in 3 mins: incorrect number of tail fields, expected 3 but found 4
2023-05-21T14:45:03+09:00 ERROR cannot remove snap file "node", will retry in 3 mins: incorrect number of tail fields, expected 3 but found 4

なぜ?と思って調べてみたところ、Windows版Docker Desktop(WSL2を使用している)を終了してから削除すればいいとのことでした。

  • Docker Desktopを終了
  • 管理者コマンドプロンプトからwsl --shutdown
  • 再度wslを起動(wsl.exe)
  • WSLでsnap refresh
  • Docker Desktopを起動

インストールもvolta使うことにしました。

あとついでに、WSLで何かコマンド実行すると以下のエラーが出ていたのですが

cmd_run.go:1046: WARNING: cannot create user data directory: cannot determine SELinux status: failed to obtain SELinux mount path: incorrect number of tail fields, expected 3 but found 4

これもwsl.confからWindowsとの相互運用をしない、という設定を追加して回避しました。

[interop]
appendWindowsPath=false
enabled=false

もともとWSLからWindowsのコマンド実行してほしくなかったので、これでいいかなと。これやるとnode.jsのパッケージをWindowsとLinuxで両方持たないといけないはずですが、気にしないことにします。

Azure DevOps 2023/5/9の更新

翻訳は割とすぐに終わったのですが、Global Azureなどがあって少し伸ばしていましたのと公開忘れてました😅。Azure DevOps Sprint 221リリースノートの翻訳を行いました。オリジナルはこちらからご覧ください。

learn.microsoft.com

今週も小幅ですが、swimlaneの自動ルールがGAになりました。早いですね。あと、待望の(?)Azure PipelinesのSelfhost agentでPATを使わなくてよくなった…ようですが、現在公開されている3.220.1のリリースノートに「サポートした」とは書かれていないようなので、あれ?という感じです。実際入れてみたのですが、まだPATだし…次なのかなぁ?

あとはPipelinesの監査設定が強化されています。監査はAzure ADアカウントと連携した場合のみ使えますので気を付けてください。

Pull Requestのウィジェットが複数レポジトリサポートしてくれたのも助かりますね。小幅ですが、必要な改良はしているようです。BuildのセッションにもAzure DevOpsいくつかあるようなので、楽しみにしています。

ではまた三週間後。

translate to Japanese to Azure DevOps release not…

WinGetへのパッケージ登録注意点

WinGetのパッケージリポジトリにPackerとGolangを登録しているのですが、PRコメントでいろいろ修正もらったので、備忘録として書いておきます。なんか、自分が登録した行数よりも多くコメント受けて、申し訳ない気持ちでいっぱいです…。

Wingetcreate update 実行後再度チェック忘れずに

リリース日付

1.20.4/1.19.9を提出したときReleaseDateという項目が1.20.3の時のままだったので直してねと言われました。wingetcreateツールでは直してくれない?ようなので、明示的に手作業で直しましょう。レビュワーがUS時間なので、日本の前日の日付でいわれましたが、アプリのリリース日にすればいいんじゃないかなと思います。

PackageVersion

PackageVersion:が1.20.3のままだったので、指摘受けました。ここもwingetcreateで直してくれないので、手作業でした*1。ちなみにPackageVersionとmanifestのフォルダー構造が違っている状態でもvalidationは通ります。

MinimumOSVersion

いらない?みたいですね。削除されました。

InstallerType

learn.microsoft.com

これはアプリケーションインストーラーがなにで作られているかという指定です。指定可能な項目はexe, msi, msix, inno, wix, nullsoft, appxです。wingetcreateコマンドが判定してくれるので、自分で指定する必要はないのですが、x86/x64/Arm64の複数のバイナリーがあった場合、Architectureごとに指定されるのがデフォルトです。しかし、通常Architecture単位で別のインストーラーを指定するアプリはないので、全部同じであった場合、一つにまとめればいいようです。

PackageIdentifier: GoLang.Go
PackageVersion: 1.20.4
InstallerLocale: en-US
InstallerType: wix
Scope: machine
(略)
Installers:
- Architecture: x86
  InstallerUrl: https://dl.google.com/go/go1.20.4.windows-386.msi
  InstallerSha256: 03BDB95782028AF5140233DE1649D5E1B76B046955502F9C51FC364DC1AC4C5C
  ProductCode: '{7697003C-D4E0-4007-8A23-8296D9F87917}'
  AppsAndFeaturesEntries:
  - DisplayName: Go Programming Language 386 go1.20.4
    UpgradeCode: '{1C3114EA-08C3-11E1-9095-7FCA4824019B}'
(略)

望ましい指定方法。

PackageIdentifier: GoLang.Go
PackageVersion: 1.20.3
InstallerLocale: en-US
Scope: machine
(略)
Installers:
- Architecture: x64
  InstallerType: wix
  InstallerUrl: https://golang.google.cn/dl/go1.20.3.windows-amd64.msi
  InstallerSha256: 233E9ED046D5664131328A5A7E7F6DC0A4AB6D3FA0D17F8FC655A4A5BFEF572D
  ProductCode: '{0BA1000D-4944-4E57-9DE4-34AEB4602D39}'
- Architecture: x86
  InstallerType: wix
  InstallerUrl: https://golang.google.cn/dl/go1.20.3.windows-386.msi
  InstallerSha256: 9B7D44C4C4D50C386F81FCEBFA48FFA792DDD12E54781321834259754EC2E374
  ProductCode: '{B34ABCB0-5637-414E-830D-3BFD61116D9B}'
- Architecture: arm64
  InstallerType: wix
  InstallerUrl: https://golang.google.cn/dl/go1.20.3.windows-arm64.msi
  InstallerSha256: 3A76DE1542F456D60128716811801AF68E14FDC8BF73DD4E2305BA5B631DB5A6
  ProductCode: '{5FD2C5FC-91A9-424B-8508-4ED8635816A7}'
ManifestType: installer

冗長な方法。

ダウンロードURI

最初、GoのリリースページにあるURLからコピーしたhttps://golang.google.cn/dl/を書いていたらGoogleのURL(https://dl.google.com/go/)に直されました。cnだからたぶん私のロケーションから最も近いエッジサイトが自動的に表示されていてそれじゃダメってことなのでしょうか。

ポータブルアプリの注意点

インストーラーがあるものばかりならいいのですが、ないものもしばしば存在します。私が登録しているPackerとかもそれ。zipファイルで提供されているものと、exeがそのまま存在するものと二種類あります。

zipの場合

私が登録しているPackerを例にとってみるとこんな感じ。

PackageVersion: 1.8.7
InstallerType: zip
ReleaseDate: 2023-05-04
Installers:
- Architecture: x64
  NestedInstallerType: portable
  NestedInstallerFiles:
  - RelativeFilePath: packer.exe
    PortableCommandAlias: packer
(略)

zipファイルを展開してほしいので、InstallerTypezip、そして、アーキテクチャごとのzipファイルの中に何があるかということでNestedInstallerType: portableつまり、単体のexeだよという指定です。RelativeFilePathは対象のexe名、でいいのかな。そしてPortableCommandAliasはシンボリックリンク名です。Chocolateyでは所定のフォルダーに展開して、そのフォルダーに環境変数PATHを設定しますが、WinGetではシンボリックリンクを設定します。

単体のexeをそのまま配布している場合

こちらはちょっと変わります。Pattern and PracticeのM365コマンドラインツールで紹介します。

PackageIdentifier: pnpm.pnpm
PackageVersion: 8.4.0
MinimumOSVersion: 10.0.0.0
InstallerType: portable
Commands:
- pnpm
ReleaseDate: 2023-05-02
Installers:
- Architecture: x64
  InstallerUrl: https://github.com/pnpm/pnpm/releases/download/v8.4.0/pnpm-win-x64.exe

こちらはnode.jsアプリをWindowsのexeファイルにしています。このような場合はInstallerType: portableで、単独のexeであると指定しておけばpnpm-win-x64.exepnpmという名前で登録してくれます。

*1:これくらいツールでやってくれてもと思った…あとでwingetcreateのソース見てみたい

Azure DevOps 2023/4/20の更新

Azure DevOps Sprint220リリースノートの翻訳を行いました。オリジナルはこちらからご覧ください

learn.microsoft.com

いやぁ、待ちに待ったAnalytics Viewがようやく一般提供開始ですよ。リリースノートからちょっと探せませんでしたが、ODataによるAnalyticsからの発展でできたものです。そしてより使いやすく、ということで提供されたはずですが、最初のアナウンスがいつだったかちょっと探せません。2021年には記事があったし、私もオンラインイベントやったので、2021年にはあったはずです。

www.kevinrchant.com

kkamegawa.hatenablog.jp

※ この時は有償でやっているコースをご厚意で提供していただいたので録画はありません。

たぶん一番長いプレビューだったんじゃないかなぁ。

細かいところではWork Itemって、作った後にブランチその場で作ったり、ほかの子item作ることが多いのですが、デフォルトがSave and Closeだったので、いちいちSaveに切り替えるのが手間でした。で、不便だとやっと気づいてくれたのか、それを覚えてくれるのだそうです。

マルチステージの実行画面UIからその場でrerunとかできるのも便利ですね。今週は小幅ですが、もうあと1か月もしたらBuildです。何が発表されるのでしょうか、楽しみです。

translate to Japanese to Azure DevOps release not…