Aikの技術日記

技術的な進捗とか成果とかを細々と投稿するブログです。時々雑記も。

久しぶりにMacOSを起動してやったこと

はじめに

こんにちは、筆者です。
※ここからしばらく無関係な雑談が続きます、本編を見たい方はこちらからどうぞ

最近はコロナウイルスの影響や夏真っ盛りということで、引きこもり生活が続いています。
会社がテレワークになかなか踏み切らないので出社時は外出するんですが

引きこもり生活が長く続くと、ゲームやらPCゲームやらiPadでのお絵かきやらをついついしちゃい、気づけば8月。
そろそろ業務以外にもソースコードを書きたいなと思い(具体的にはVue3を試してみたいなと思い)Macbookを取り出したのですが…。

数ヶ月単位で起動してなかったからか、OSは古いわソフトウェアアップデートの嵐だわで散々な状態に。
いろんなアップデートを済ませようやくコードが書ける…と思い、vue --versionを叩いたら今度はvue: command not found.というエラーに見舞われ…。

どうやらnpmモジュールやらHomebrewやらが新しくなってなかったせいでエラーが起こっていたようで。
App Store等を経由してアップデート可能なソフトウェアと異なり、これらのパッケージ群はエラー吐かれないと中々気づけないんだなぁと思う次第です。

おまけにいつからか(Catalinaから)、MacOSのデフォルトターミナルがbashからzshに変わっているという。
((流石にこれは気付けよって話ですが

こんな状況下になり、この記事この記事以来久々にMacOSを結構いじったので、折角だしとどんなことをやったかメモしておこうかと。

それではいきましょう。

どんなことをやったか

まずはどんなことをやったかを箇条書きで。

  • Homebrewのアップデート
  • グローバルインストールされたnpmパッケージのアップデート
  • zshのカスタマイズ

順に見ていきましょう。

Homebrewのアップデート

久しぶりに起動したので、まずはHomebrew自体のアップデートから。

$ brew update

次にHomebrewでインストールしたPKGのアップデートをしたのですが…。

brew upgrade

XCodeのアップデートが先に終わってなかったからなのか、brew install gccあたりでつまづくはめに。
XCodeって普段全然使ってなかったので、アップデートを年単位で放置していたのですが…こういうところで使ってたんですね。

こちらの記事を参考にしながら、xcode-select --installを叩きPC再起動を繰り返して何とか治りました…。
macOSでgccが入らない - Qiita

また、plantumlのアップデートでもえらくコケました。
どうもplantumlは依存モジュールが多いらしく…依存モジュールのアップデートでこけてるっぽかったです。

また、元々インストールしていたパッケージのいくつか(libksbaとか)は、MacOSに標準で搭載されるようになった様子。
Homebrewでインストールする必要が無くなったってことですね…。

どうしてもHomebrew経由でインストールしたい場合は、特別な手順を踏まないといけないようで。
筆者的にはそこまでする必要もないので、放置しておきました。

一通りアップデートされても何だか不安だったので、数回brew updatebrew upgradeを実行。
何も動作しなくなるまで叩き続けました…。

ちなみに現状でインストールされているHomebrewパッケージの一覧はこちら。
殆どが聞き覚えのないパッケージです…何かの依存先パッケージなのでしょう。
((brewbrewnと思い切りミスってるのは気にしないでください…

$ brewn list
zsh: correct brewn to brew [nyae]? y
autoconf        gibo            imagemagick     libtiff         openjdk         ruby-build
automake        giflib          isl         libtool         openjpeg        shared-mime-info
cairo           git         jasper          libuninameslist     openssl@1.1     sqlite
coreutils       glib            jpeg            libxml2         pango           webp
docbook         gmp         jq          libyaml         pcre            x265
docbook-xsl     gnu-getopt      libde265        little-cms2     pcre2           xmlto
fontconfig      gobject-introspection   libffi          lzo         pixman          xz
fontforge       graphite2       libgpg-error        mono            pkg-config      yarn
freetype        graphviz        libheif         mpfr            plantuml        zlib
fribidi         gts         libksba         netpbm          pyenv           zsh-completions
gcc         harfbuzz        liblqr          nkf         python@2
gd          heroku          libmpc          node            python@3.8
gdbm            heroku-node     libomp          nodebrew        rbenv
gettext         icu4c           libpng          oniguruma       readline
ghostscript     ilmbase         libspiro        openexr         ricty

お次はグローバルインストールされたnpmパッケージのアップデートです。

グローバルインストールされたnpmパッケージのアップデート

Homebrewと同様に、まずはnpm自体のアップデートから。

npm update -g npm

次にグローバルインストールされたnpmパッケージのアップデートを実行。

npm update -g npm

Homebrewの時とは打って変わり、非常にすんなりアップデートできました。
また、Homebrewとは異なりアップデート予定のモジュールがこんな感じに一覧化されるのも嬉しいポイントです。

"アップデートされたnpmモジュール一覧"
こんな感じ

npm outdated -g

最後に何の気なしに、現状インストールされているnpmパッケージ一覧をチェック。
--depth=0を付けないと依存モジュールまで全部出てしんどすぎるのでご注意を(一敗)。

npm ls --depth=0 -g
/Users/**ナイショ**/.node_modules_global/lib
├── @vue/cli@4.5.2
├── azure-cli@0.10.20
├── jshint@2.11.0
├── long@4.0.0
├── moment@2.24.0
├── n@6.2.0
├── node@11.15.0
├── npm@6.14.7
├── request@2.88.0
└── yarn@1.22.4

…ここで、yarnがnpmとHomebrewで両方インストールされていることに気づき。
yarnの様なパッケージ管理モジュールを同一の役割を持つnpmでインストールしてるのは個人的に気持ち悪かったので、ひとまずnpmの方から削除。

npm remove -g yarn
removed 1 package in 0.078s
🌹  ~  yarn -v
1.12.3

yarnが最終的に残っているかも確認取れたので、ひとまずはここまで。
ついでに今使ってないパッケージもいくつか消し、最終的なnpmパッケージ一覧は下記のようになりました。

npm ls --depth=0 -g
/Users/**ナイショ**/.node_modules_global/lib
├── @vue/cli@4.5.2
├── jshint@2.11.0
├── long@4.0.0
├── moment@2.24.0
├── n@6.2.0
├── node@11.15.0
├── npm@6.14.7
└── request@2.88.0

最後にzshのカスタマイズです。

zshのカスタマイズ

MacOS Catalinaからデフォルトターミナルがbashzshになったことを受け、今後はzshを使おうと決心しカスタマイズしていくことに。
これまで筆者はbashを使っていたので、「できることならbashの設定を維持しながらzshをカスタマイズしたいな〜」と思った矢先、素晴らしい記事が。

qiita.com

こちらの記事にある様に、zshの補完機能を強化するzsh-completionを入れたりzshの設定フレームワーク(?)のPreztoを使いながらカスタム。
おまけで~/.zshrc~/.zprofileを下記の様にいじって完成。
以前の記事のニノ鉄は踏まない様、各設定値にはバッチリコメントを入れておきました。

#`~/.zshrc`: 
#入力ミスに対応する
setopt correct
#`~/.zprofile`
# ターミナルの$前に表示される情報の変更
PROMPT='%W %M/%n%$ '

# Customize prompt
autoload -Uz promptinit
promptinit
prompt cloud 🌹

最後に

コードを書きたいと思ってからここまでで、半日くらいかかっちゃいました…Vue3を試してみたかっただけなのになぜここまで…。
でもこれでめでたく、vue cliが使える様になりました!

vue --version
@vue/cli 4.5.2

折角あるんだし、今後は定期的にMacbook使っていこうかなと思う次第です…。
それでは|д゚*)