[2024] cygwinオワコン臭・・・
カテゴリー: General
2024-04-03 16:15
タイトル
うちの仮想マシン内で WSL2は動かないので
cygwinで代用しているわけですが
git bashシェルにはないアプリなので
cygwinの git で pre-commitフック利用しようと思って
実行するアプリの最新版を調べたんですが ない!
cygwin
ORPHANED
だらけ
buildする時間くらい待てるので
srcのcygportを書き換えてみたけど
エラー出る
普通にappのsrcからbuildすればいいかなと
手動でbuildしようと思うとライブラリが古いエラーアタック。
なるほどですね。そこでこけていたんですね
unixは他のツールを利用して成り立っているものが多いので
必要なツールを更新したい
依存ライブラリを更新
さらに依存ライブラリを更新
負のツールチェインが待っている。
そもそもcygwinというOSは協調性がない。オープンソースのパクリでなりなっているくせに
ほかのディストリビューションと変数名やパスを合わせとしないから結果として自動ビルドシステムが構築できない→過疎化が加速
メンテされていないOSはもう復活は不可能
調査してみましょう
curl https://cygwin.com/cygwin-pkg-maint -o cygwin-pkg-maint.txt
全体
メンテなし
メンテあり
パッケージの半分終わってますね
cygwin オワコン寸前ですね
メンテナ数
ホストOSを開発環境にするという最終手段もあります。
WSL2(ubuntu)からみたWindowsのドライブ
/mnt/[ドライブレーター小文字1字]
web関連は
dockerとかに移動したほうがよさそう
設定とデータだけバックアップしておけば済むようになる
gitのフック処理
ブランチ分けしているものは
gitはリビジョングラフなしではまともに使えないので
TortoiseGit なしでは操作できません!!
Linuxのファイラーだと操作性悪すぎるんですね
TortoiseGit のフックはどちらで動くのだろう?
dos? unixシェル?
dosなら解決できるんですけど・・・
まずはここからですね。
設定:フックスクリプト:フックスクリプトの設定
実行するコマンドライン
プレコミットフック
登録できました!
sandboxブランチを切って
コミット実行
DOSとして動くみたい
なんかパスが違うと怒られた
どこのパスで実行してるの?
うわわーーー
変なコマンドライン増やしてる
え? 勝手に付与しないでよ。
どうするよ?
勝手に追加された引き数を捨てる必要があるので
専用のバッチファイルを一度介してから処理する以外無理でしょ。
hook\precommit.bat
を作成
実行するコマンドライン
OK
シェルからの git commit の プレフックはアプリが起動できないので諦めます。
cygwinいじる必要なくなりました!!
結果はどうであれ cygwin終い は必要。
追記
cygwin終い 完了!
2024年 さようならCygwin!!
執筆:2024.04.03
編集:2024.04.03
編集:2024.04.03
うちの仮想マシン内で WSL2は動かないので
cygwinで代用しているわけですが
git bashシェルにはないアプリなので
cygwinの git で pre-commitフック利用しようと思って
実行するアプリの最新版を調べたんですが ない!
cygwin
ORPHANED
だらけ
buildする時間くらい待てるので
srcのcygportを書き換えてみたけど
エラー出る
普通にappのsrcからbuildすればいいかなと
手動でbuildしようと思うとライブラリが古いエラーアタック。
なるほどですね。そこでこけていたんですね
unixは他のツールを利用して成り立っているものが多いので
必要なツールを更新したい
依存ライブラリを更新
さらに依存ライブラリを更新
負のツールチェインが待っている。
そもそもcygwinというOSは協調性がない。オープンソースのパクリでなりなっているくせに
ほかのディストリビューションと変数名やパスを合わせとしないから結果として自動ビルドシステムが構築できない→過疎化が加速
メンテされていないOSはもう復活は不可能
調査してみましょう
curl https://cygwin.com/cygwin-pkg-maint -o cygwin-pkg-maint.txt
全体
cat cygwin-pkg-maint.txt | grep -v '^#' | wc -l
4069メンテなし
cat cygwin-pkg-maint.txt | grep -v '^#' | egrep '(OBSOLETE|ORPHANED)' | wc -l
2280メンテあり
cat cygwin-pkg-maint.txt | grep -v '^#' | egrep -v '(OBSOLETE|ORPHANED)' | wc -l
1789パッケージの半分終わってますね
cygwin オワコン寸前ですね
メンテナ数
cat cygwin-pkg-maint.txt | grep -o ' .*' | grep -o '[^ ].*' | \
egrep -v '(OBSOLETE|ORPHANED|package)' | sort | uniq | wc -l
egrep -v '(OBSOLETE|ORPHANED|package)' | sort | uniq | wc -l
85
連名で重複がいくつかあるようなので、実際はもっと少ないです
undefined reference to `zip_encryption_method_supported'
$ apt-cyg show | grep zlib-devel
zlib-devel 1.3.1-1
https://libzip.org/documentation/zip_encryption_method_supported.html
zip_encryption_method_supported() was added in libzip 1.7.0.
The current release: libzip-1.10.1
Released libzip 1.3.1 November 19, 2017
Released libzip 1.10.1 August 23, 2023
zlib-devel 1.3.1-1
https://libzip.org/documentation/zip_encryption_method_supported.html
zip_encryption_method_supported() was added in libzip 1.7.0.
The current release: libzip-1.10.1
Released libzip 1.3.1 November 19, 2017
Released libzip 1.10.1 August 23, 2023
2024年なのに各種アプリから利用される基本的なツールが更新されていない
相当前からオワコンだったのでしょうか?
2018年には、すでにオワコンだったのでしょう。 WSL2がでてきたころですね。
cygwin ツールが古すぎて使えないコになってしまったので
cygwinのアンインストール検討します。
その前に、ホストOSから操作できる準備をする
・ 共有フォルダに設定する
・ NASのネットワークドライブで作業する
・ クラウドフォルダを直接操作する
・ クラウドに同期する / (ディスクの無駄が発生)
なにが最適解なのかは今後脳内シミュレーションして決めます。
ゲストOS内のフォルダ配置などを変更して
共有フォルダ指定して、ホストOSの WSL2から操作しないといけないよう。
- ホストOSに保存先を作る
vmwareで共有フォルダとして指定
ゲストOS:ドライブレーターを割り当てる - ホームネットワークのNASに保存する
ホストOSを開発環境にするという最終手段もあります。
CygwinからみたWindowsのドライブ
ドライブ名 | Cygwin |
C:\ | /cygdrive/c |
WSL2(ubuntu)からみたWindowsのドライブ
/mnt/[ドライブレーター小文字1字]
ドライブ名 | WSL2(ubuntu) |
C:\ | /mnt/c |
web関連は
dockerとかに移動したほうがよさそう
設定とデータだけバックアップしておけば済むようになる
gitのフック処理
ブランチ分けしているものは
gitはリビジョングラフなしではまともに使えないので
TortoiseGit なしでは操作できません!!
Linuxのファイラーだと操作性悪すぎるんですね
TortoiseGit のフックはどちらで動くのだろう?
dos? unixシェル?
dosなら解決できるんですけど・・・
まずはここからですね。
設定:フックスクリプト:フックスクリプトの設定
実行するコマンドライン
プレコミットフック
登録できました!
sandboxブランチを切って
コミット実行
DOSとして動くみたい
なんかパスが違うと怒られた
どこのパスで実行してるの?
echo %CD% > "%~dp0err.txt"
exit 1
パスはあっているexit 1
echo %* > "%~dp0err.txt"
exit 1
exit 1
うわわーーー
変なコマンドライン増やしてる
"C:\Users\ユーザー名\AppData\Local\Temp\TortoiseGit\git8B7E.tmp"
"C:\Users\ユーザー名\AppData\Local\Temp\TortoiseGit\git8B7F.tmp"
"リポジトリの作業パス"
"C:\Users\ユーザー名\AppData\Local\Temp\TortoiseGit\git8B7F.tmp"
"リポジトリの作業パス"
え? 勝手に付与しないでよ。
どうするよ?
勝手に追加された引き数を捨てる必要があるので
専用のバッチファイルを一度介してから処理する以外無理でしょ。
hook\precommit.bat
を作成
実行するコマンドライン
%root%\hook\precommit.bat
OK
シェルからの git commit の プレフックはアプリが起動できないので諦めます。
cygwinいじる必要なくなりました!!
結果はどうであれ cygwin終い は必要。
追記
cygwin終い 完了!
2024年 さようならCygwin!!