LoginSignup
56
19

More than 1 year has passed since last update.

zsh の zinit (旧zplugin) が消滅しちゃったよ! 経緯と解決法

Last updated at Posted at 2021-11-16

tl;dr:

zinit の作者さん(@psprint)が、githubレポごとプロジェクトを消してしまいました

2021/11/1より有志たちが、直前の最新コミットを新規レポにレストアしてプロジェクトの存続を試みています

以前インストールしたzinit環境は、こちらのページを参考にマイグレできます

zinit updateなどを実行するとgithubのユーザーIDを聞かれる」ような症状が発生します。
これはユーザーIDを入れても無駄で、「(削除された)見つからないレポ」へアクセスしようとすると認証処理が動いてしまうことから発生する現象で、IDを入れてもエラー終了するだけです。
対策はこちらを:

# 「インストール済みの環境」はそのまま使い続けられますので、下記をしなくても大丈夫です!
# zinit update を打った、起動スクリプトで更新処理などしていてエラーで止まってしまった場合の対処とお考えください
# 下記をする事で、プラグインなどの動作に影響を与える可能性もあるので、バックアップを取ってからどうぞ

# zinit のインストール dir に cd
cd ~/.zinit/bin

# git originを新しいレポのものに変更
git remote set-url origin https://github.com/zdharma-continuum/zinit.git
git pull

### 一度「全てのzshセッションを終了」してから次を実行 ###
zinit update

# まだこちらも開発中なので、リンク先の最新情報を参照してください

どうしてこうなった? - 作者がキレて全部消してしまった

OSSのメンテナになられた方は皆さん経験があるかと思いますが、
ユーザが増えるほど無料ボランティアに無理な要望を押し付けてくる人などが増加してきます。
それに様々な要因が重なって、「レポごと削除」に至ってしまったようです。

ただ、他者からのコミットまで含めたレポ削除には批判の声も多く、
zinitについては zplugin からの名称変更の際にも一悶着あったこともあり、
優れたOSSである zinit をより安定的に保存しようとする有志たちが新レポを立ち上げ、
既存ユーザ達が継続利用を可能にする試みが動いています。

新レポ立ち上げについての声明:

現状で非常に安定かつ高速であるため、まずは保存のみを目的としており継続開発を行う意図は無く、
誰かがテイクオーバーしてくれる事を望むとしつつ、以前のレポからのマイグレに関する開発がこのレポ内で行われているのは頼もしい限りです。

また新規インストールをする際もほとんどの場合、以前のスクリプトからレポ名を変えるだけで動作するようです。
こちらはもう少し自分でも検証してみたいと思います。

素晴らしく高速で便利な zinit 、当面は使い続けたいと思いますが、
色々考えさせられる出来事でした。
もっとみんな、OSSにお金出す文化が根付いていって欲しいなぁ...

追記

既存環境の修正について、自分でも検証してみました。
問題なく全て動作するように出来ました。

2ステップ法 <- こっちのが速くて確実

ご自身で開発やカスタムしているプラグインが無ければ、
単純に
~/.zshrcを修正
rm -rf ~/.zinit
の2ステップだけやってzshを再起動した方が早いし確実です。
(そうしないと、設定ファイルのゴミなどが残ることがありました)

3ステップ法

・git origin の変更
~/.zshrcの修正
・不要となったプラグインディレクトリの削除

git origin の変更

# zinit のインストール dir に cd
cd ~/.zinit/bin

# git originを新しいレポのものに変更
git remote set-url origin https://github.com/zdharma-continuum/zinit.git
git pull

## 一度「全てのzshセッションを終了」してから次を実行 ###
zinit update

~/.zshrcの修正

下記のような記載になっていると思います。
zdharma/ zinit-zsh/ Zsh-Packagesとなっている部分を、全て
zdharma-continuum/ に変更します
下記修正が出来たら、zshをリロードすると新しいプラグインがインストールされます

修正前.sh
### 修正前 ###
### Added by Zinit's installer
if [[ ! -f $HOME/.zinit/bin/zinit.zsh ]]; then
    print -P "%F{33}▓▒░ %F{220}Installing DHARMA Initiative Plugin Manager (zdharma/zinit)…%f"
    command mkdir -p "$HOME/.zinit" && command chmod g-rwX "$HOME/.zinit"
    command git clone https://github.com/zdharma/zinit "$HOME/.zinit/bin" && \
        print -P "%F{33}▓▒░ %F{34}Installation successful.%f%b" || \
        print -P "%F{160}▓▒░ The clone has failed.%f%b"
fi

source "$HOME/.zinit/bin/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit

# Load a few important annexes, without Turbo
# (this is currently required for annexes)
zinit light-mode for \
    zinit-zsh/z-a-patch-dl \
    zinit-zsh/z-a-as-monitor \
    zinit-zsh/z-a-bin-gem-node

### End of Zinit's installer chunk

source $HOME/.zinit/bin/zinit.zsh

autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
zinit light zsh-users/zsh-autosuggestions
zinit light zdharma/fast-syntax-highlighting
zinit load zdharma/history-search-multi-word

zinit ice from"gh-r" as"program"
zinit load junegunn/fzf-bin

zinit wait lucid atload"zicompinit; zicdreplay" blockf for zsh-users/zsh-completions

zplugin ice depth=1; zplugin light romkatv/powerlevel10k

修正後.sh
### 修正後 ###
### Added by Zinit's installer
if [[ ! -f $HOME/.zinit/bin/zinit.zsh ]]; then
    print -P "%F{33}▓▒░ %F{220}Installing DHARMA Initiative Plugin Manager (zdharma/zinit)…%f"
    command mkdir -p "$HOME/.zinit" && command chmod g-rwX "$HOME/.zinit"
    command git clone https://github.com/zdharma-continuum/zinit "$HOME/.zinit/bin" && \
        print -P "%F{33}▓▒░ %F{34}Installation successful.%f%b" || \
        print -P "%F{160}▓▒░ The clone has failed.%f%b"
fi

source "$HOME/.zinit/bin/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit

# Load a few important annexes, without Turbo
# (this is currently required for annexes)
zinit light-mode for \
    zdharma-continuum/z-a-patch-dl \
    zdharma-continuum/z-a-as-monitor \
    zdharma-continuum/z-a-bin-gem-node
### End of Zinit's installer chunk

source $HOME/.zinit/bin/zinit.zsh

autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
zinit light zsh-users/zsh-autosuggestions
zinit light zdharma-continuum/fast-syntax-highlighting
zinit load zdharma-continuum/history-search-multi-word

zinit ice from"gh-r" as"program"
zinit load junegunn/fzf-bin

zinit wait lucid atload"zicompinit; zicdreplay" blockf for zsh-users/zsh-completions

zplugin ice depth=1; zplugin light romkatv/powerlevel10k

上記を修正し、zshを再起動などしてリフレッシュすると、
新しいレポからプラグインがインストールされます

不要となったプラグインディレクトリの削除

上記を行うと、使っていたプラグインが二重にインストールされた状態となり、
zinit update を実行すると、古い見つからないプラグインがエラーとなってしまいます

Screenshot 2021-11-16 at 16.26.01.png

原因は ~/.zinit/pluginsのフォルダに、旧レポから入れたプラグインが残ってしまっているので、
それらを単純にフォルダごと削除します

Screenshot 2021-11-16 at 16.26.21.png

これで、 zinit updateをしてもエラー無く実行されれば対応は完了です。
Screenshot 2021-11-16 at 16.27.15.png

自動化するスクリプトが欲しいところですが、
これでとりあえずエラーは無い状態となりましたので一安心です。

zshの環境マネジャとしては今でも最速だと思いますので、今後のメンテナンスが続くことを祈りたいですね。

56
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
56
19