Microsoftが開発しているソフトウェアパッケージ管理ツール「winget」のプレビュー版が、WindowsのInsider Preview版で利用可能になった(窓の杜、GIGAZINE)。Windows向けのパッケージ管理ツールはいくつか存在するが、wingetはMicrosoftが公式に提供するという点と、不正なパッケージのインストールを事前に防ぐためのセキュリティ機構が特徴となる。
パッケージ管理ツールの前にファイル管理の仕方からやり直せ (スコア:0)
Cygwinのapt-cygの挙動が分かりやすいが、Windowsは現在使用中のファイルの更新ができない。
つまりaptやbrewと違い、wingetでwingetの更新はできないし、Windows Terminalから呼び出したのならWindows Terminalの更新も失敗し、同様の理由からアンインストールも失敗する。
いつもの再起動後に云々のメッセージダイアログが表示され、たかがひとつふたつのアプリの更新如きに再起動を要求されることだろう。
セットアップを自動化したいのならDOS時代のSHARE.exeより続くファイル管理の仕方から修正しないとムリ。
Re:パッケージ管理ツールの前にファイル管理の仕方からやり直せ (スコア:1)
逆だよ、Windowsでは古くからファイルのmandatoryな排他ロックが完全かつセキュアに実装されているが、
伝統的なUNIX/Linuxでは実装されていなかったの(最近はいろいろ事情が違うが)。
ディスク上の実行ファイルや共有ライブラリだけ更新されても、実行中のプロセスが更新されるわけではない。
実行プロセスを再起動せずに使い続けると、部分的に更新されたディスクファイルを読み取ることで、あらゆる予期しない不整合が発生する可能性がある。
だからWindowsの方法はセキュアで正しいものだ。UNIX/Linuxの便利さは見せかけだけで、危険で不完全な方法だよ。
エンジニアとして二流なくせにウェーイ系ITムラ社会の風潮に乗せられて安易にWindows叩きなんかするから、
こういう恥ずかしい批判をしてしまうのだ。
Re:パッケージ管理ツールの前にファイル管理の仕方からやり直せ (スコア:1)
Windowsの場合、デフォルトでは排他ロックあるけど、排他ロックせずに開くことも可能なんだよな。
EXEやDLLで、排他ロックかけずに動かすとかいう馬鹿なことを普通はしないってだけで。
一応、今のLinuxでもセキュア/ロバストであることを企図してるディストリビューションでは、プロセスモジュールは排他で開くから実行中のモジュール更新はできない。
将来的には一般向けに使われうディストリビューションでも Windowsと同様な排他ロックが標準になってくだろうね。
Re: (スコア:0)
ファイルをロックするのとファイル名をロックするのは別じゃん。
「最近」がいつかは知らんけど、UNIXでも実行中のファイルは書き換えられなかったけどな。
(実行中のファイルの名前で新たなファイルを作ることはできる)
書き換えられるやつもあったのはたしか。
Re: (スコア:0)
起動時に必要なファイル(=inode)をぜんぶ開いて保持してる状態で動いているなら成り立つけど、上にあるように、動作途中で開くやつ、がなくはないのがな...
# 動的プラグイン系とかだけど、
# まれーに変なのもいる
なので、安心でいうとlock madantoryなほうが、いいかなと思ったりする
# ただ更新の仕方が面倒くさい(下手なのもいる)のはあるので、利用者からは痛し痒し
Re: (スコア:0)
IoTとか組み込みでの「全て自分の管理下」の不自由環境でもない限り、排他無しなんて危なっかしくてやってられんですなぁ。
Re: (スコア:0)
GNU/Linuxはだいたいrm /bin/rmできる
それをどう優れてると宣うべきかは知らんが
Re:パッケージ管理ツールの前にファイル管理の仕方からやり直せ (スコア:1)
rm /bin/rmができることと#3819560のいう「(実行中のファイルの名前で新たなファイルを作ることはできる)」はだいたい同じこと言っているのではないか。
rmというかunlink(2)がすぐにやることは親ディレクトリから当該ファイルのエントリを消すこと。その結果、とりあえず削除されたように見える。ただ、元のファイルがオープン中だったら、OSカーネルとディスク上にはまだファイルの実体が存在している。全部クローズされたら削除される。
なお、Windowsでも「実行中のファイルの名前で新たなファイルを作ることはできる」は一応実現できる。オープン中のファイルの削除はできないがリネームはできるので、リネームすれば元と同じ名前のファイルを新たに作成できる。リネームした古いファイルは後ほど適当なタイミングで削除すればよい。
Re: (スコア:0)
だからそれはファイル名を操作しているだけで、ファイルは操作してないんだよ。
Re: (スコア:0)
ファイルシステムの実装にも依存するが、ファイル削除でファイル名触る必要なんてないだろ。
Linuxだろうが差し替えて更新だとopen済みのファイルはreleaseされんし、されても困る。
システム全体に更新を反映させるには、ファイルを使用していたプロセス全部落とすか、OS再起動しかない。
使用中のファイルを差し替えられるから再起動不要なんてのは、詭弁としか思えん。
Re:パッケージ管理ツールの前にファイル管理の仕方からやり直せ (スコア:1)
システム全体に更新を反映させるには、ファイルを使用していたプロセス全部落とすか、OS再起動しかない。
実際そのとおり。ついでに言うと、最近のUbuntu Linuxでは(きっとDebian由来だろうけど)、パッケージマネージャでlibcやsystemdやカーネルなどを更新すると、/run/reboot-requiredという空ファイルを作って、再起動が必要なことを伝えてくる。さらに、その引き金になったパッケージを/run/reboot-required.pkgsに追記するので、これを見てもいい。
Re: (スコア:0)
だからrmはファイル削除しないんだよ。
Re: (スコア:0)
ディレクトリエントリの削除とでも言えば満足か?
なんにせよファイル名なんて操作しない。
Re: (スコア:0)
実行バイナリやライブラリを上書き更新する訳無いでしょ。差し替えが普通。
> 部分的に更新されたディスクファイルを読み取る
こんな事言いながら二流とか言っちゃう自信を顧みるべき。
Re: (スコア:0)
OSの出自が違うから方針が違うだけだと思いますよ。
人間がログファイル眺めてたらサーバーのバックアップジョブが失敗するとかいややん。
Re:パッケージ管理ツールの前にファイル管理の仕方からやり直せ (スコア:1)
NuGet というパッケージマネージャがございまして
自分自身の更新もできるんですよ
https://docs.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-update [microsoft.com]
Re:パッケージ管理ツールの前にファイル管理の仕方からやり直せ (スコア:1)
なんだかんだWindowsもエンジニアとしてかなり上のランクの人間が作ってる
そこらのなんちゃってエンジニアが聞きかじりの知識で批判しても返り討ちにあうだけ
批判するにしても「俺には理解できんが、調べれば相応の理由があって最善を選択した結果そうなっているんだろう」って考え方をベースにした方がいいよ
Re: (スコア:0)
> 批判するにしても「俺には理解できんが、調べれば相応の理由があって最善を選択した結果そうなっているんだろう」
> って考え方をベースにした方がいいよ
まあなんだ。すべての物事関してそう考えたほうがいいよね。
ちょっとわかるの精神で。
Re: (スコア:0)
セキュアなのはわかるが、現実問題として"git checkout"などと絶妙に相性悪いんだよね。
ディレクトリの場合は絶対に掴んでいないことを保証しないと何もできない。
Re: (スコア:0)
それにしたって間抜けなバグとか仕様が多すぎる
しかしユーザー一斉にこの仕様は無いだろう!
ってのはあちらも忸怩忸怩なのかもしれないが
apt の方が「脆弱」なんですが (スコア:1)
つまりaptやbrewと違い、wingetでwingetの更新はできないし、Windows Terminalから呼び出したのならWindows Terminalの更新も失敗し、同様の理由からアンインストールも失敗する。
いつもの再起動後に云々のメッセージダイアログが表示され、たかがひとつふたつのアプリの更新如きに再起動を要求されることだろう。
例えば、Apacheを動かしているLinuxで、"apt-get update" を実行したとします。
で、httpd が更新されました。これで脆弱性が修正されて安全になったでしょうか?
答えは、Noです。
今動いている httpd は脆弱なままで、再起動するまでは安全にはなりません。
service httpd restart のようなコマンドを実行するか、OSレベルで再起動して初めて安全になります。
これはシンプルな例ですが、実際には依存関係があって1つのサービスを再起動しただけでは安全にならなかったり、複数のサービスを終了してから再度起動する必要があったりもします。
安全なアップデート方法を知るには、それぞれのアプリケーションのドキュメントを読まないといけなかったり、ドキュメントにも書かれていなかったりします。
Linuxでapt-getをして脆弱性が修正されたとき、アップデートされた全てのサービスの挙動を熟知していない限りは、実際にはOSレベルで再起動しないと安全性を保てないのです。
これを理解すれば、アップデートで再起動を要求するWindowsが安全よりなことが分かるはずです。
Re: (スコア:0)
一部の再起動してほしくない人には不評だけどwindowsの方が万人向けにはなってるな
けど全体のパイの傾向がより一般ユーザーなwindowsの方が自由度低くて安全側に倒すのは正解でしょ
unix系が分かってる人向けで自由度が高いのも正しいし
この議論の不毛な部分はどちらかを「より優れてる」として悦に浸ろうとするから発生するんだと思うよ
Re: (スコア:0)
言いたいことは分かるし否定しませんが、DebianやUbuntuではapt-getでApacheを更新すると自動で再起動されますよ。おそらく回避できません: server - Prevent Apache restarting automatically after upgrading packages [askubuntu.com]
Re: (スコア:0)
まだupdateコマンドもuninstallコマンドも未実装みたいですが何か別の機能のことを言っているんでしょうか?
せっかくなので (スコア:0)
なんか適当なオプションをつけたらWindows Updateをやってほしい。
いい加減control updateで画面だけ出すのは不便なので…
Re:せっかくなので (スコア:1)
(New-Object -ComObject Microsoft.Update.AutoUpdate).DetectNow()
昨今、WindowsServerのGUIも PowerShellのフロントエンドでしかないし、Windowsのコンポーネントは、全てCOMか.NETだからWindowsの機能で、PowerShellからコントロールできない物って無いと思うぞ。
Re:せっかくなので (スコア:2)
尚、親コメントの手法はMSのドキュメントにwuauclt.exe /detectnowの代替手段として書いて有る。 [microsoft.com]
# ワンライナーになってるけどね。
Re: (スコア:0)
「既定のアプリを変更」「タスクバーにピン留め」ができない。大型アップデートのたびに変わる非公開のIIDを指定すれば無理やりできないこともないようだがそういうのを「できる」に含めていいのか?
GNU/Linuxは便利 (スコア:0)
WindowsはGNU/Linuxに追従すると使いやすくなる。
!Windowsは無能
Re: (スコア:0)
ウインドウズでは無いものは無能ですか…
でもウィンドウズが有能とも言ってないな
Re: (スコア:0)
AndroidのGboardで未確定文字が数文字塊で勝手に後ろに回る症状有るんだよね
多分HPで使ってるhtml/cssライブラリに書字方向狂わすなんかが混入し暴発てるんだろうけど
Re: (スコア:0)
Windows 10上の旧Edgeでも起きますのでsradのコードが原因かと。
Build 2020 (スコア:0)
Win32 APIとUWP APIを再統合するProject ReunionとかWSL2のGUIサポートとか他にも面白そうな話が目白押し
Re: (スコア:0)
構想の時点では凄そう!ってなるけど、いざ実際モノがリリースされると(´・ω・`)
ってケースが多いんだよな
Re: (スコア:0)
この手の統合だの後継だのは、たいてい不完全で先に逝くわな
Re: (スコア:0)
リリースされるだけまだましというものですよ。