移轉到 M1 MacBook Pro 的體驗

Scott Hsieh (史考特)
16 min readApr 25, 2021

嵌有額外管理機制的 M1 MacBook 之曲折走一回

目錄

前言
macOS 操作設定
觸控式軌跡版
多重桌面命名重新設定
觸控列預設更改
通訊 APP 安裝
Teams
Slack 工作空間
宅宅專區
環境變數
安裝brew
透過 brew 安裝 php 8
透過 php 安裝 composer
AWS
Docker
IDE工具
sublime工作區
小結
註釋
參考

前言

上一款相處融洽、公司用的 MacBook Pro 因為懷孕越來越嚴重(電池膨脹),不得不加緊腳步趕緊將現有工作流程需要用的檔案移到新的 M1 MacBook Pro (也是公司用)上。又接外部儲存設備(USB權限)和遷移助理[1]都無法通的限制下,只好透過手動的方式將檔案從舊 MacBook Pro 移到新 M1 MacBook 上。

macOS 操作設定

觸控式軌跡版

預設的軌跡版點按,「用一指點一下」是沒有勾選的。要點選應用程式或點擊功能時,需要用力地按下軌跡版,一來少了科技感、二來少了優雅的操作氛圍。所以需要趕緊透過「系統偏好設定⋯」>「觸控式軌跡版」>「點按」將「用一指點一下」給勾起來。勾選完成的瞬間,操作 Mac 的感覺就對了。

多重桌面命名重新設定

根據轉換的當下再次搜尋的結果,不同桌面,原生 Mac 系統目前還是不支援。查詢過程中,有看到 APP 貌似能支援,不過還是先用舊方法來設定,那就是依照分組的類別,換成對應的桌布,比如說有個桌面就專門放聽音樂有關的 APP 或網站,我在那個桌面換上和音樂有關聯的圖片。讓你能命名桌面的 APP 之後再來試試。(微軟作業系統的虛擬桌面可以重新命名,蘋果,加油好嗎)

觸控列預設更改

觸控列的預設顯示是 App 按鈕,這個實在是和上一台 MacBook Pro 的使用習慣搭不起來,只能手刀一路點到「系統偏好設定⋯」中的「鍵盤」,將觸控列預設值「App 按鈕」改為「展開的功能列」。

這樣一來,我就有「指揮中心」讓我左手的中指從觸控列當中獲得紓解,想切就切、想換就換,極為舒暢。另外在嘗試和 M1 Mac 相處時,在飆程式碼的時候很常遇到左手無名指會觸碰到觸控列上的調整亮度的按鈕,這部分之後要在思考一下怎麼調整觸控列會比較好。(我就手粗)

Photo by Tianyi Ma on Unsplash

通訊 APP 安裝

Teams

與非工程人員對話的絕妙平台(?)

Slack 工作空間

全部重加一次,Nice 抖!加、加、加,都加!

  • 公司工作空間
  • AWS Community Builders 工作空間
  • Kubeflow 工作空間
  • Presto SQL 工作空間
  • Delta Lake 工作空間
  • cdk.dev 工作空間
  • og-aws 工作空間

宅宅專區

環境變數

  1. 轉移舊有的
  2. 新增環境變數
    在轉移之際,在 ~/.bash_profile 最前頭中加入了以下命令,
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
# 以上命令的效果和下面是一樣的,在執行前我有安裝 go 。
$ PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin"; export PATH;

安裝brew

M1處理器的 MacBook 要安裝 brew 不用在特殊處理,透過以下指令安裝時,其預設的目錄就會是 /opt/homebrew ,有興趣的人可以參考這裡的討論串。安裝完成後,如果你不是使用個人的 M1 Mac ,你可能會需要以 -R 選項去修改 /opt/homebrew 的權限。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

將能啟動 homebrew 的目錄放入 PATH環境變數後,就可以在任何地點執行 brew。設定完後,安裝常用的套件,然後再慢慢累積,舊精釀,掰!

# 設定 PATH 環境變數,以我自己為例,我是把它放在 `~/.bash_profile` 裡頭。HOMEBREW="/opt/homebrew/bin:/opt/homebrew/sbin"
export PATH="$HOMEBREW:$PATH"
# 安裝常用(有想到)的套件
brew install git
brew install gpg
brew install npm
brew install pyenv
brew install wget
brew install svn
Photo by kazuend on Unsplash

透過 brew 安裝 php 8

透過 brew install php 時,遇到多次錯誤訊息,相當坎坷,這邊紀錄了過程。另外,再執行安裝前,有執行 sudo chown -R $(whoami):wheel /opt/homebrew

第一次執行 brew install php

# 第一次遇到的錯誤訊息
==> Installing php dependency: webp
==> Pouring webp--1.2.0.arm64_big_sur.bottle.tar.gz
Error: Interrupted system call @ rb_sysopen - /opt/homebrew/Cellar/webp/1.2.0/bin/cwebp
# 看完錯誤訊息做的事
export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include"

第二次執行 brew install php

# 第二次遇到的錯誤訊息
Error: Directory not empty @ dir_s_rmdir - /private/tmp/d20210425-37137-e4jzzz
# 看完錯誤訊息做的事
$ rm -rf /private/tmp/d20210425-37137-e4jzzz

第三次執行 brew install php

# 第三次遇到的錯誤訊息
==> Installing php dependency: gd
==> Pouring gd--2.3.2.arm64_big_sur.bottle.tar.gz
Error: Interrupted system call @ dir_initialize - /opt/homebrew/Cellar/gd/2.3.2/bin
# 看完錯誤訊息做的事
$ brew install php

第四次執行 brew install php

一開始執行 php -v是執行到 Mac 預設安裝的 php ,不過我在重新 source 一遍有修正過的 ~/.bash_profile後,執行的 php 就是 brew 所安裝的了。

# 第四次執行有跑完,不過途中有看到這行訊息
==> Installing php dependency: gd
==> Pouring gd--2.3.2.arm64_big_sur.bottle.tar.gz
Error: Failed to read Mach-O binary: /opt/homebrew/Cellar/gd/2.3.2/bin/annotate
$ php -v
PHP 8.0.3 (cli) (built: Apr 12 2021 00:29:32) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.3, Copyright (c) Zend Technologies
with Zend OPcache v8.0.3, Copyright (c), by Zend Technologies

如果你透過 brew 安裝完 php,查詢 php 的版本時,是第 7 版的,即 Mac 內建的,那麼可以考慮以下指令:

$ brew link php

透過 php 安裝 composer

透過 brew 安裝的 php 要去安裝 composer 時,我遭遇了以下錯誤訊息:

PHP Warning:  failed loading cafile stream: `/opt/homebrew/etc/openssl@1.1/cert.pem' in Command line code on line 1Warning: failed loading cafile stream: `/opt/homebrew/etc/openssl@1.1/cert.pem' in Command line code on line 1PHP Warning:  copy(): Failed to enable crypto in Command line code on line 1Warning: copy(): Failed to enable crypto in Command line code on line 1PHP Warning:  copy(https://getcomposer.org/installer): Failed to open stream: operation failed in Command line code on line 1Warning: copy(https://getcomposer.org/installer): Failed to open stream: operation failed in Command line code on line 1

用 brew 重新安裝了 openssl 後,我又透過以下指令在 ~/.bash_profile 中給 PATH 變數增加了值,然後就解決了。

echo 'export PATH="/opt/homebrew/opt/openssl@1.1/bin:$PATH"' >> /Users/$(whoami)/.bash_profile

按著官方網站的說明,將 composer 給順利了安裝起來。然後再額外執行一行指令,就能順利使用 composer 了。

# 官方文件給的操作指令
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"
# 額外指令
$ sudo mv composer.phar /usr/local/bin/composer
$ composer --version
Composer version 2.0.12 2021-04-01 10:14:59

AWS

  1. AWS CLI v2 安裝
  2. 八個帳號的權限設定重新來,Nice 抖!

Docker

第一次安裝時是 M1 RC3,在經歷迷途奇幻旅程之後,M1 Docker 已經 GA ,不過 GA 歸 GA ,文件上依舊建議要安裝 Rosetta2 ,因為有些二進制檔案仍然是 Darwin/AMD64 指令集架構。

softwareupdate --install-rosetta

IDE 工具

VS Code 安裝。在 M1 Mac 上就先安裝了 Visual Studio Code,在舊 MacBook 上,有用到 IntelliJ 和 VS Code。以編寫 Python 來說,個人認為 IntelliJ (PyCharm)依舊是友善許多,但考慮到 Codespaces 和只想專注在單一開發工具上,會逐步地將開發能量都放到 VS Code 上。

sublime 工作區

有時想測試殼層(shell)指令、Scala、或是 Python 的一些小區塊程式,或是一些暫時筆記的地方,我習慣寫在 sublime 上,所以在舊 MacBook 上的 sublime 檔案也要毫無保留地轉移到新的 M1 MacBook 上。

Photo by Tianyi Ma on Unsplash

M1接多螢幕

M1 MacBook Pro 最多只能接一台外接螢幕,在拿到新 MacBook 時,透過已擁有的連結器,確實只能接到一台外接螢幕。若是要保持原本的工作習慣,可能要考慮去買個 DisplayLink 分配器;最噴錢的狀況大概是再加買一台轉接器和一台巧控滑鼠。

經過了多次實(ㄆㄣ)驗(ㄑㄧ ㄢ ˊ)的歷程後,目前已經可以穩定雙螢幕。因為疫情在 2021 年 5 月開始爆發,目前也都還是 WFH 的狀態,所以先從 PC Home 購買了 ViewSonic 的 VA2710-MH 和 DELL 的 P2719H-4Y 來解決家裡工作的需求。這裡特別想吐槽 PC Home 一下,疫情爆發導致出貨變慢,這是可以理解的,不過我是足足等了 13 天才拿到我的雙螢幕,相比於其他管道購買東西拿到貨的速度(比如說富奕酒藏、蝦皮等等)也就是 2 到 3 天的等候時間。13 天,讓我目前想線上買東西,有一陣子都不會考慮 PC Home。

使用 Dell D6000 解決 M1 MacBook Pro 雙螢幕需求一瑀

回到雙螢幕,過程也是有點曲折,曾經嘗試搜尋一些討論串影片參考,也有聽過同事的選擇,不過最終我的解決方案是購買了 DELL 的 D6000 通用媒體插槽座,才解決了我的雙螢幕需求。(雖然有點限制,就是都只能水平擴展, D6000 貌似還不能支援垂直旋轉)

一開始是這樣,疫情爆發前,在公司本身就已經有雙螢幕, 一個是 VGA、一個是 HDMI。我先買了 Opro9 的 USB-C 10 埠多功能轉接器,加上 TekRepublic 的 TUA-300 外接顯示卡。在裝完 DisplayLink Manager 後,確實突破了 M1 MacBook Pro 只能外接一台顯示器的限制,但發現一個問題是,接的雙螢幕當中,沒有在操作的螢幕常常會斷電,很是困擾。然後在嘗試下一步的解決方案時,在一個週末到女友家爆發疫情後,就一直在女友家待到現在目前超過一個月。

而 WFH 之旅開始時,女友家原本有一台 Bevis 的顯示器以及一台有 15 年歷史、46 吋的東元液晶電視,我一開始用 HDMI 線透過 Opro9 的多功能轉接器接 M1 MacBook Pro 也是可正常運作,但沒多久,螢幕的訊號就再也偵測不到。

後續又再買了一台 TekRepublic 的 TUA-300 (對,就是在公司嘗試雙螢幕買的那個外接顯卡),回家接的時候,第一次接沒有問題,但是重開機後,就再也偵測不到 Dell 的 P2719 ,只要接上 TUA-300 再接 HDMI 到 P2719 螢幕,就會開始無限循環重開機。

接著再從蝦皮買了一台 Dell 的 DA300 Type-C 六合一轉接器,你鴨的,我夠買的那個賣場沒標「只支援一個顯示器」,而且貌似 DP 埠沒有作用,不過 VGA、HDMI、和 USB 孔都沒問題,我當以後旅行攜帶用的轉接器。

最後從全國電子買了一個 VGA 轉 HDMI 的轉接器、從蝦皮買了一台 Dell 的 D6000 才算是徹底解決了我在 M1 MacBook Pro 上雙螢幕的需求。有需要的朋友可以參考看看。

攝影師:Tranmautritam,連結:Pexels

小結

第一次轉移時,一切都蠻順利的,直到試圖用 brew 去安裝 php8 和 composer 。因為專案緣故,在部署和測試 CICD 流程時,需裝有 php8 和 composer 在本地機器驗證一些檔案的位置,而透過精釀先生安裝時,途中有遇到一些權限的問題,當時只想著要趕快安裝起來,所以沒有太仔細核對要給 brew 開放的權限。在一個不小心啟動 root 使用者並以它登入執行 chown -R ${user_name}:admin /var/db 之後,我的 M1 Mac 就壞掉了。

大部分指令無法執行,想登入 MacBook 都會一直轉圈圈,不論什麼等級的使用者皆然。所以最後送交公司管理者讓他檢查了一天之後,我們有了一個共識,那就是給它重灌。以我聽到的個人 M1 Mac 使用體驗都是正向良好的,唯獨加入公司管理機制的 M1 Mac ,小弟的體驗可說是相當曲折悲催。在第一次轉換到新筆電 GG 時,因為某些緣故,我還得額外再買一條 MegaSafe 2 充電器,不過是為了支援我個人的事務,我就當作是繳學費。最後祝未來有機會使用有額外一層管理機制的 M1 Mac 的小夥伴,能夠順順利利。

註釋

  1. 一般使用者使用遷移助理應該沒有問題才是,我的狀況是因為新筆電(MacBook Pro M1)有綁管理機制,不只遷移助理卡牆,甚至在一開始拿到時,要更新系統或是 APP 都還不能自己執行。

參考

  1. Adermann, N. and Jordi Boggiano, J., 2021. Download Composer. [online] Getcomposer.org. Available at: <https://getcomposer.org/download/> [Accessed 25 April 2021].
  2. Docker Inc., 2021. Docker Desktop for Apple silicon. [online] Docker Documentation. Available at: <https://docs.docker.com/docker-for-mac/apple-silicon/> [Accessed 25 April 2021].
  3. Matties, M., 2020. Rename Desktops? — Apple Community. [online] Discussions.apple.com. Available at: <https://discussions.apple.com/thread/251266416> [Accessed 12 April 2021].
  4. Taber, M., 2012. Where is the default terminal $PATH located on Mac?. [online] Stack Overflow. Available at: <https://stackoverflow.com/questions/9832770/where-is-the-default-terminal-path-located-on-mac/9832861#9832861> [Accessed 25 April 2021].
  5. claui, 2020. macOS 11 Big Sur compatibility on Apple Silicon · Issue #7857 · Homebrew/brew. [online] GitHub. Available at: <https://github.com/Homebrew/brew/issues/7857> [Accessed 25 April 2021].

--

--

Scott Hsieh (史考特)

10 x AWS-certified, Data Architect in the 104 Corporation. An AWS Data Hero