分类 Mac使用 下的文章

最近维护一个Java项目,发现项目的JDK需求是1.6版本,由于之前电脑上从来没有安装过,所以记录下此次的安装过程,顺便提供下几个JDK版本的目录下载地址。

硬件环境

交代下我的电脑版本:macOS Catalina 10.15.7

homebrew安装jenv

brew install jenv

安装完成以后需要配置下
Bash用户

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
exec $SHELL -l

Zsh用户

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc
exec $SHELL -l

执行jenv doctor,如果能正常输出,说明安装完成。

为了能够正确的设置JAVA_HOME,启用export插件

jenv enable-plugin export

因为项目使用到maven,启用maven插件

jenv enable-plugin maven

安装JDK6

直接使用苹果官方的JDK6的安装包,会出现 “ Java for macOS 2017-001 无法安装在此磁盘上。已安装本软件包的更高版本 ”的提示,需要对安装包做下处理。
打开“脚本编辑器”应用,新建草稿,然后拷贝下列内容,然后点击运行(顶部三角形按钮):

set theDMG to choose file with prompt "Please select javaforosx.dmg:" of type {"dmg"}
do shell script "hdiutil mount " & quoted form of POSIX path of theDMG
do shell script "pkgutil --expand /Volumes/Java\\ for\\ macOS\\ 2017-001/JavaForOSX.pkg ~/tmp"
do shell script "hdiutil unmount /Volumes/Java\\ for\\ macOS\\ 2017-001/"
do shell script "sed -i '' 's/return false/return true/g' ~/tmp/Distribution"
do shell script "pkgutil --flatten ~/tmp ~/Desktop/Java.pkg"
do shell script "rm -rf ~/tmp"
display dialog "Modified Java.pkg saved on desktop" buttons {"Ok"}

运行完之后会让你选择dmg安装包,然后就会在系统桌面上生成一个Java.pkg文件,点击就可以安装。

安装JDK7和8

去官网下载JDK7和8,由于现在Oracle下载需要登录,我是从最下面的第三方链接下载的,下载完点击直接安装。

添加JDK到jenv

注意Java安装目录都在/Library/Java/JavaVirtualMachines/,不同的版本二级目录名称会不一样,如果使用我提供的安装包,目录名称无需修改。
JDK6

jenv add /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/

JDK7

jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/

JDK8

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/

jenv查看版本

jenv versions

jenv切换版本

设置全局模式下的JDK版本:

jenv global 1.8

设置某个工作目录下的JDK版本,会在当前目录下创建一个.java-version的文件:

jenv local 1.8

设置当前Shell session中的JDK版本:

jenv shell 1.8

查看版本是否设置成功:

java -version

苹果官方JDK6下载地址:
https://support.apple.com/kb/DL1572?locale=zh_CN
第三方JDK7和JDK8下载地址:
https://files-cdn.liferay.com/mirrors/download.oracle.com/otn-pub/java/jdk/
本地备用下载地址:
jdk1.6-macosx-x64.pkg
jdk-7u80-macosx-x64.dmg
jdk-8u221-macosx-x64.dmg

最近更新Mac系统以后,打开终端发现每次顶部都会提示Mac系统的默认shell已经切换为zsh,通过网上查询发现,在macOS Catalina之后,苹果已经更新了默认的shell。

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
chengyong-Mac:~ chengyong$

按照提示输入“chsh -s /bin/zsh”之后发现之前bash下配置的所有的环境变量都失效了,需要迁移过来。

解决办法是再Home目录下新建 .zshrc 文件并在开头添加:

export PATH=$HOME/bin:/usr/local/bin:$PATH
source $HOME/.bash_profile

如果你有 .bashrc 文件,还需要继续添加:

source $HOME/.bashrc 

然后退出当前用户重新登录,再即可完成之前的环境变量的引入。

P.S. 由于 .bash_profile 是隐藏文件,如果想要查看目录下的隐藏文件,可以同时按下 Shift + Command + >. 三个按键,即可显示隐藏文件夹。

最近转岗项目经理后,已经很久没摸过家里面笔记本了,所以今天下班后,特地给Macbook开机了下,然后看到Flutter最近开始势头往上走,所以顺着Flutter官方手册把Flutter环境全部搭建了一遍。

前面都没有什么问题,在最后执行flutter doctor进行检查的时候问题出现了,先是告诉我没安装CocoaPods。

chengyong-Mac:~ chengyong$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.12.13+hotfix.8, on Mac OS X 10.14.6 18G95, locale zh-Hans-US)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
[✗] Xcode - develop for iOS and macOS
    ✗ Xcode installation is incomplete; a full installation is necessary for iOS development.
      Download at: https://developer.apple.com/xcode/download/
      Or install Xcode via the App Store.
      Once installed, run:
        sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
        sudo xcodebuild -runFirstLaunch
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage
        on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install:
        sudo gem install cocoapods
[✓] Android Studio (version 3.6)
[✓] Connected device (1 available)

! Doctor found issues in 1 category.

然后我就按照他的指导,使用sudo gem install cocoapods命令以为可以顺利安装时,此时问题出现了,我心里面开始有点小慌张了,报错信息如下。

chengyong-Mac:~ chengyong$ sudo gem install cocoapods
Building native extensions.  This could take a while...
ERROR:  Error installing cocoapods:
    ERROR: Failed to build gem native extension.

    current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.12.2/ext/ffi_c
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby -r ./siteconf20200311-1195-1fkgxdl.rb extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/include/ruby.h

extconf failed, exit code 1

Gem files will remain installed in /Library/Ruby/Gems/2.3.0/gems/ffi-1.12.2 for inspection.
Results logged to /Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/ffi-1.12.2/gem_make.out

此时,我把这里面一些关键信息扔给了Google,Google很快给了我一个stackoverflow的链接,看问题的日期还是很新的问题,这个问题里面并没有正面的回答原提问者的问题,但还是给了一个link指引告诉解决方案,两个链接贴在下面。

https://stackoverflow.com/questions/60481623
https://stackoverflow.com/questions/46377667

然后我们找到第二个链接里面的最高赞回答,按照他的思路来,问题顺利解决。

复盘下问题的原因:回答者的意思是,这是苹果官方的一个bug,对于在macOS 10.14安装完Xcode 11后,Xcode 11附带了macOS 10.15 SDK,并且其中包含了ruby2.6的头文件,但却不包含macOS 10.14的ruby2.3的头文件。既然Xcode 11都已经有了这两个SDK,那么我们不必再安装旧的头文件来污染系统目录,而是在使用ruby的时候直接通过选择该SDK,就可以找到适当的ruby2.3头文件。

切换使用10.14 SDK

sudo xcode-select --switch /Library/Developer/CommandLineTools
ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'

切换回Xcode 11 默认SDK

sudo xcode-select --switch /Applications/Xcode.app

解决完问题后,从github上拉了个开源项目运行了下,顺利跑起来了,而且最新的Android Studio能直接在Android和iPhone设备上同时调试,优秀。

在windows使用第三方vnc软件连接mac的过程中,偶尔会出现卡在登录页面一直菊花转圈。

问题现状:
1、之前能正常vnc连接,某一次无法连接
2、ssh可以正常连接
3、mac电脑能正常使用远程桌面连接
4、windows上的vnc重新登录也无果

解决方案:
1、使用ssh登录进入系统
2、切换到root账户,查看登录信息

sudo ps -ef|grep login

3、查看输出的结果,关闭除了 /System/Library/CoreServices/logind 以外的其他login进程
4、重新使用vnc远程连接
5、正常出现密码框,登录成功

一些常用的终端使用技巧

1、设置代理

很多时候网络环境不满足要求,需要设置代理,通常只需要当次终端内需要,好处是简单直接,并且影响面很小。

Mac环境下

export HTTP_PROXY=http://127.0.0.1:1087   //http代理
export ALL_PROXY=socks5://127.0.0.1:1086  //ss代理

windows环境下

set http_proxy=http://127.0.0.1:1080      //http代理
set https_proxy=http://127.0.0.1:1080     //https代理

2、更改主机名、计算机名

有时候终端内显示的HostName和ComputerName不是你喜欢的,可以使用下面的方式来改变。

HostName:

sudo scutil --set HostName MacBookPro

ComputerName

sudo scutil --set ComputerName MacBookPro

3、禁止 DS_Store

Mac下面压缩的时候总会自动生成 .DS_store 文件,用户可以自行选择是否需要生成,执行下面命令之后需要重启Mac生效。

禁止 .DS_store生成:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

批量删除 .DS_store 文件

# find: 主命令  
# . : 当前目录下(可变)  
# -name: 通过名查找  
# ".DS_Store": 后缀  
# -type f: 一般正规文件  
# -print: 查询结果打印
# -exec: 命令扩展,查询结束后要执行 command 命令
# {}: 查询结果放到 {} 中
# \;: 扩展命令结束符,表示 到 ; 结束

find . -name ".DS_Store" -type f -print -exec rm -rf {} \;

恢复 .DS_store生成:

defaults delete com.apple.desktopservices DSDontWriteNetworkStores

4、安装HomeBrew

HomeBrew是Mac下面的一个包管理器,方便我们安装一些Mac OS没有的UNIX工具、软件。

安装HomeBrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

确认HomeBrew是否安装正常

安装好HomeBrew之后,在Terminal执行下面命令确保正常安装:

brew doctor

若上面命令执行过程出现 hombrew libevent not link 的错误,执行下面命令即可:

sudo chown -R $USER $(brew --prefix)