Mac实用技巧之:三种安装/卸载/更新软件的方式及其优缺点

Mac实用技巧之:三种安装/卸载/更新软件的方式及其优缺点

macOS软件的本质

非常重要: 只有理解了软件的本质,才更容易理解它的安装和卸载,所以下面的这段关于macOS软件的本质的说明,必须认真看完。

macOS软件扩展名

扩展名就是文件名后面的.xxx,比如图片是.jpg.png等等(如果看不到,可以点击“访达”→“偏好设置”→勾选“显示所有文件扩展名”),又比如windows软件的扩展名是.exe,那么macOS软件的扩展名是什么呢?

首先,我们来看看应用程序里的软件,可以看到所有软件都是.app格式的,如果你看不到扩展名,可以打开一下:访达偏好设置高级显示所有文件扩展名
image.jpg

由上可知,macOS的软件都是.app格式的,事实上,绝大多数macOS的软件都是.app格式的,但有少数不是,比如我所知道的flash player和launchrocket,它们是以偏好设置的方式安装的,安装后不会出现在“应用程序”文件夹中,而是显示在“系统偏好设置”里(如下图)
Xnip2019-06-23_12-35-57.jpg

它们安装的目录,是在/Library/PreferencePanes/下(全局,所有用户都可用)或~/Library/PreferencePanes/(当前用户拥有,其他用户不可用),它们的后缀为.prefPane,意思是“Preferences Panel”(即“偏好设置面板”)。

有界面的软件格式,目前我知道的除了.app外,就只有.PrefPane了,而且.PrefPane是极少的,所以几乎所有的macOS软件都是.app格式的。

当然我说的“几乎所有的macOS软件都是.app格式的”,是指有界面的软件,至于那些没有界面的命令行软件,一般人用不到,用的到的人应该都懂,命令行软件是另一类软件,它是没有扩展名的,一般用户可以不用理它。

.app的本质

由前面可知,macOS绝大多数软件的格式都是.app,那么.app究竟是什么呢?事实上,.app格式的本质是一个文件夹,这也是为什么你想直接把你安装好的app发给别人发不了的原因(压缩一下就可以发),你可以右击它→显示包内容来查看它里面有什么。
image.jpg

点击“查看包内容”里面的内容,可见它有一个“Contents”文件夹包含了所有文件,然后里面又有很多子文件夹
image.jpg

.PrefPane格式,其实它本质也是一个文件夹,只不过它是作为偏好设置使用的,所以写成另一个扩展名,而且这种格式极少,也许还有少数其它的我还不知道的格式,但万变不离其宗,那就是:它们的本质都是文件夹!

安装软件的三种方法

这里只说方法,具体操作请看后面的内容。

  • 1、在AppStore安装;
  • 2、下载安装包安装(最常用);
  • 3、使用命令安装。

直接在App Store安装

这个是最简单的了,打开App Store,在里面搜索到你要安装的软件,点安装即可(当然要先登录)
ScreenFlow1232.gif

但是,我必须强调一下,对于用习惯iPhone而又第一次用Mac的童鞋,他/她可能理所当然的认为Mac的所有软件也都是从AppStore安装的,就像iPhone那样,事实上恰恰相反,Mac上绝大多数软件都不是在AppStore上安装的,即使AppStore上有!

原因有几个:

  • 1、AppStore有沙盒机制,会阻止一些软件实现它本身该有的功能,所以很多软件在AppStore上根本没有,比如Adobe系列软件,什么PS,AI,Pr,AE等等;
  • 2、收费软件在AppStore上会被苹果抽成,这些软件公司不愿意在AppStore上放自己的软件;
  • 3、AppStore要审核,速度很慢,对于要快速更新版本的软件来说,它等不及AppStore那繁琐的审核;
  • 4、重点:大多数收费软件有破解版,AppStore都是正版的要收费的,有些软件还非常贵,每个大版本都收费(比如Parallels Desktop),所以即使AppStore上有,你也不一定要去AppStore下载,而是去网上的网站下载破解版自己安装(比如去xclient.info)。

在哪里下载软件?

有人可能要问: 软件不在AppStore安装,那要怎么安装?
答: 下载软件安装包自己安装!

然后你们的下一个问题肯定是:在哪儿下载?
答: 下载的地方不一定,要看具体的软件!

  • 1、在软件官网:一般公司开发的软件都有官网,所以该公司的官网一般都会有安装包(如果软件是收费的,那么官网的软件肯定就是要激活付费的,当然,一般都会给你试用个14天),那怎么知道一个软件的官网呢?当然是直接在网上搜索呀;
  • 2、在githubgithub是全世界最大的开源代码托管网站(已被微软收购),所以对于开源软件,一般会在github上;
  • 3、在软件下载网站:跟农夫山泉一样,软件下载网站不生产软件,它们只是软件的搬运工!由于很多人都不知道去哪儿下载软件,特别是一些软件虽然官网有,但它是收费的,而很多人想找破解版,所以就会去软件下载站找。软件下载网站一般都是有网站开发技术的个人自己做的,他们从各种地方收集软件,上传到一些网盘,然后把下载链接放在网站上,供大家下载,可能有人会问,他们这么做为了什么?赚钱吗?因为如果不赚钱,谁愿意弄?确实是赚钱的,赚钱的方式有几种,一种是挂广告,当他们的网站有很多人访问,就会有一部分人点击广告,这些站长就会有广告收入;另一种是做会员,比如会员的下载速度更快,会员可以加入他们的专属聊天群,在群里可以问问题之类的;还有直接贴出收款码让大家捐赠的。但是,由于软件下载站都是个人做的,他们很可能做着做着就不做了,比如个人原因没有时间和精力,比如赚不到钱之类的,所以,有些软件下载网站现在有,但过段时间或者几年后可能就访问不了了。目前我知道的软件下载站有:xclientimacsomacwk链刻macdo,以前还有一个叫“waitsun”的,现在这个站没有了,原因就像我前面说的,这些都是个人做的,人家可能由于各种原因不做了。
  • 4、在论坛:论坛的软件都是大家分享的,相对来说没那么容易找,目前我知道的比较好的论坛是:威锋论坛
  • 5、万能搜索方法:在百度等搜索引擎搜索,软件名后面加上“for mac”或者加上“mac版”,比如搜索“百度网盘Mac版”。

然后你们肯定还会问:下载后怎么安装?
答: 这个下边有说到,自己往下看。

可能还会有人问: AppStore安装的在AppStore点更新就行,自己下载安装的要怎么更新?
答: 有些软件自己有做更新功能,你点软件的更新就行,比如QQ、微信、QQ音乐等等;有些开发者比较懒,他没做更新功能,你无法在软件上点击某个按钮来更新,这时你只能重新下载最新版,重新安装(覆盖掉原来的就好);还有就是破解版的软件,就算软件本身自带更新功能,你也不能用,因为你本身就用的不是正版,你一更新就更新成正版了,就又要你激活了,所以破解版的软件你要更新,其实就是要重新下载一个新版本重新安装。

使用安装包安装

特别注意:有些人在网上提问自己新买的Mac怎么安装不了软件,结果一看他/她给的图,里面的软件后缀竟然是.exe.exe是Windows软件安装包,在macOS上是安装不了的,同理,macOS的安装包,在Windows上也是安装不了的。


前面说过,macOS的软件(或者叫“应用程序”/App)本质是一个文件夹,只不过macOS能识别.app扩展,并自动读取它里面的.icns图标显示为App图标。

而文件夹是不方便在网络上传输的,我们从网上下载任何的软件也好,其它文件也好,如果它不是单个文件,那么都会被压缩成一个压缩包,比如.zip.rar.tar.gz.tar.bz2等等,其实这样做的根本原因只有一个,那就是让一个文件夹变成一个文件,以方便上传和下载。

其实除了前面说的格式外,macOS还有一种非常常见的“把一个/多个文件夹”变成一个文件的方法,那就是你们很多人可能已经见过的,甚至很常见的.dmg格式,当然还有另一种比较少见的格式,叫.pkg

所以,总结起来,macOS的软件安装包,有以下几种格式

  • dmg
  • pkg
  • 压缩包(.zip.rar.tar.gz.tar.bz2都属于压缩包格式)

而所谓的“安装”软件,其实就是把xxx.app这个文件夹从包里拿出来,然后放到访达的“应用程序”文件夹里!怎么拿出来呢?对于.zip.rar.tar.gz.tar.bz2这些压缩格式,双击解压即可,然后把解压出来的“xxx.app”移动到“应用程序”文件夹就行。

而对于.dmg格式,由于它不是压缩包格式,所以没有“解压”的说法,dmg是disk image的缩写,中文翻译过来叫“磁盘镜像”。这种镜像文件,双击打开就会像插入了一个U盘(或移动硬盘)一样,打开之后,我们将里面的“xxx.app”拖动到访达的“应用程序”文件夹就可以。

事实上绝大多数dmg镜像打开之后,它自带一个“应用程序”快捷方式(macOS上叫“替身”),我们一般都把它移动到这个“应用程序替身”上,事实上这个“替身”就是访达的“应用程序”文件夹,你移到这个“应用程序替身”上,跟移到访达中的“应用程序”文件夹是完全一样的。另外,由于dmg镜像打开后是像插入了一个u盘(或移动硬盘),所以我们使用完后,要把它“推出”,在桌面右击推出或在“访达”的侧边栏推出都可以,否则你安装多个软件后,会发现桌面多了很多图标,很多人都不知道它是啥,还问怎么删除。

安装“安装包格式为.dmg”的软件

  • 其实前面已经说过,就是双击xxx.dmg,打开之后把里面的xxx.app拖动到它旁边的“应用程序”快捷方式上就行了
    install software on mac.gif
  • 有些dmg镜像打开后,里面只有一个xxx.app,但没有“应用程序”快捷入口,也就是你没地方可拖,怎么办?其实那个“应用程序”快捷入口只是一个快捷方式,没有这个快捷方式你就自己手动拖动到访达的“应用程序”目录里也是一样的,你可以试试那些有“应用程序”快捷入口的dmg,在你把.app程序拖入“应用程序”里的时候,拖到它上方停留一会儿,不要放手,一会儿访达的“应用程序”界面就会自动打开。
  • 少部分虽然打开dmg镜像后也是.app格式程序,但它却不是直接拖到『应用程序』文件夹里就行,而是要双击安装,比如『各种输入法软件』,因为输入法是系统级的,输入法其实是被安装到/Library/Input Methods/目录下的,但它的本质还是.app格式的
    输入法的安装.gif
  • 另外在我们双击打开dmg磁盘镜像时,它会挂载到了系统上(在访达/Finder)左侧可以看到(在桌面也能看到有一个图标),类似于插了一个U盘/移动硬盘,所以在安装完软件后,要记得在『访达/Finder』左侧那里点击那个向上的三角图标把dmg『推出』,或者右击它然后选择『推出』,又或者也可以到桌面找到对应图标右击选择『推出』,也可以选中图标后按command+E推出(E表示Eject,弹出的意思),这相当于windows的『弹出』U盘/移动硬盘。

关于dmg,可以再看看这篇文章:为什么 MACOS 安装 DMG 可以一拖了事,而 WINDOWS 下大部分软件必须要启动安装程序?

注意:前面说过,dmg是一种磁盘镜像,你打开dmg文件,就好像插入了一个移动硬盘,而移动硬盘是可以放任何文件的,这是不是意味着,dmg文件里也可以有任意文件呢?是的!大多数dmg格式的软件安装包,你双击打开后它里面就一个“xxx.app”(其实就是一个文件夹),但也有一些,里面放的是另一个dmg文件(对于一些破解软件来说更是如此),总之你要明白,dmg文件里放的未必就是.app程序,有可能是其它任何格式的,因为它本质就是一个虚拟的硬盘(只不过是只读的,你只能把里面的东西拖出来,但不能拖东西进去),放什么格式的文件都可以的。

特别说一下macwk网站上的软件

macwk网站是一个macOS软件分享网站,它会把各种好用的软件上传到网盘并放出链接供大家下载,但是,他们比一般的macOS软件分享网站高端点,还做了一些方便大家的工具(其实都可以用命令的,只不过有些人一看到命令就头疼)。

另外,这个网站还把一些软件做了包装,让一些本来移动到“应用程序”文件夹就可以安装完成的软件,需要双击,然后用它的安装程序安装,其实它最终也是把xxx.app移动到“应用程序”文件夹,只不过它多做了一些应用签名的检查之类的自动操作,因为本来这些是要手动做的(有些还要运行命令),他们把这个过程做成傻瓜化的弹窗询问,你只要点:是、否、安装、取消、删除等等按钮即可。而且这主要是针对破解软件的,因为破解软件会遇到比较多签名问题,权限问题等等。

这样安装软件确实很方便,但大家要清楚,这并不是安装软件的标准方法,也许有一天,这个网站因为各种原因,可能不再运营了,打不开了,到时你别因为离开了这个网站制作的傻瓜安装方式,就不会安装软件了。

以下是使用macwk网站制作的ScreenFlow傻瓜安装包安装ScreenFlow的过程
Xnip2021-08-10_14-55-06.jpg

Xnip2021-08-10_14-57-07.jpg

Xnip2021-08-10_14-58-26.jpg

事实上真正要安装的软件只不过被隐藏了而已,你按cmd+shift+.就能显示出那些隐藏文件,然后就能从里面找出你真正要安装的那个文件。

安装“安装包格式为.pkg”的软件

pkg是package(程序包的意思),pkg格式的软件一般需要比较大的系统权限,属于系统级程序,这种软件比较像windows的软件安装方式,需要你先双击打开它,然后点击下一步下一步这样安装(但不要更改它的安装路径),而且一般需要输入密码获取系统权限,但它的“下一步”非常少,不会像windows那样下一步个没完的。

安装“安装包格式为压缩包”的软件

常见的压缩包格式有.zip.rar.tar.gz.tar.bz2.7z等等,当然还有其它的压缩包格式,我就不一一列举。安装方式非常简单,双击解压出xxx.app,然后把解压出来的“xxx.app”移动到访达中的“应用程序”文件夹就行。

安装格式为.prefPane的软件

前面已经说过,这种软件是作为“偏好设置”的扩展,它的后缀是.prefPane,当然你下载下来可能也是压缩包,需要先解压出来,然后双击xxx.prefPane就会弹出窗口问你只安装给当前用户,还是让所有用户都能用。

安装完成后,它不会出现在“应用程序”里面,而是在系统偏好设置里面,比如flash player和launchrocket:
Xnip2019-06-23_12-35-57.jpg

他们安装的目录,是在/Library/PreferencePanes/下(全局,所有用户都可用)或~/Library/PreferencePanes/(当前用户拥有,其他用户不可用)。

这种卸载的话,目前我只知道如果你用brew install xxx方式安装的,你可以用brew remove xxx来卸载,但如果你是用安装包安装的,那么就只能看安装包中是不是有卸载工具,或者自己去安装目录中删除也行。

但是这种格式的软件极少,基本上只有Flash Player了(以前网页播放视频都用Flash Player),不过Adobe官方都不再更新Flash Player,苹果电脑上也非常不推荐使用Flash Player,它会导致电脑发热非常大,个别网站还在使用Flash Player是因为它们不更新技术,还是用的老旧的技术!

使用命令安装

1、使用Homebrew安装

这种安装方式一般是高级用户使用(比如IT从业人员),一般用户不需要掌握,或者有时候需要使用它安装一些东西,也只需要按网上的安装方法执行命令即可。

这种安装方式一般是安装一般编程方面的软件(一般这种软件没有界面),要使用Homebrew,先执行以下命令安装Homebrew:

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

然后可以使用brew search xxx搜索软件,搜索到软件之后,用brew install xxxx安装软件。另外,Homebrew也可以安装有程序界面的应用程序,比如Chrome浏览器,比如Sublime text,它的用法是brew cask install xxxx,使用方法详见Mac安装Homebrew并更换国内镜像源

2、还有一种是MacPorts

与homebrew类似,但它不会复用系统已有资源,都是重新编译,所以用它安装程序比较占空间比较臃肿,网上都不太建议用这种方式,当然也有少部分人用!

3、源码编译

这种方式IT从业人员专用,一般用户不需要了解,其实就连IT从业人员也比较少用(相对前面的方法)。

优缺点及卸载方式

App Store安装方式

优点

  • 简单方便,只需要在App Store上搜索到需要安装的软件,点击安装就好了!
  • 安全,App Store上的软件都给过苹果官方审核,并且软件是在苹果的沙盒中运行,无法对系统造成破坏,也无法偷偷非法上传一些数据(据说国内大部分软件都会偷偷上传一些数据,但一般来说无所谓啦,大家都这么用)。

缺点

  • 也是因为在沙盒中运行的原因,因为沙盒对软件有比较大的限制,所以软件在沙盒中运行未必能发挥它的全部功能,有些软件因为需要较大的系统权限,干脆就不放入App Store中了,直接在官网提供dmg安装镜像;
  • 下载速度慢,有时候在AppStore下载软件会很慢,可能你下载dmg安装包早下载好了,AppStore还没下载完(现在国内iCloud被云上贵州接管后,情况好很多了);
  • 更新慢,App Store需要审核,如果它认为软件有什么问题还需要重新修改重新审核,所以App Store版本比下载安装包的版本更新慢;
  • 收费软件在AppStore上支付,是要被苹果抽成的,但软件开发公司有时候不愿意被抽成,所以软件公司不愿意把软件放在AppStore上,而是放在官网上让用户自己下载安装;
  • 收费软件在App Store肯定是要收费的,而下载安装包则有些网站(如xclient.info)提供破解版的。
  • 上传到AppStore很麻烦,开发者懒得上传(特别对于开源软件),直接在github发布出来大家就可以下载,开发者可能就懒得去上传到Appstore了。

卸载方式

  • 在『启动台(Launchpad)』中鼠标长按软件图标(按到它害怕的发抖为止),即会变成抖动的图标,点击左上角的叉即可删除;
  • 或者在『启动台(Launchpad)』界面下,按住option键,程序图标也会变成抖动的可删除的状态,删除要卸载的软件即可(更方便)。

注意,下图的两点:

  • 只有一个软件出来叉,其他三个没有出来,是因为他们不害怕你,所以没有叉吗?当然不是!那是因为出来叉的那个软件是App Store安装的,其他两个是下载安装包安装的,所以不会出来叉
  • gif图中第一个软件的叉后来闪了几下,那是我在演示option键,按着option就会出来叉,放开,叉就消失
    uninstall software.gif

安装包安装方式

优点

  • 更新快,不需要等待苹果官方审核,直接发到自己的官网上即可;
  • 大型软件通常是通过自己下载安装包的方式安装的(当然也可能有安装器,比如Adobe系列软件,Adobe就专门做了一个安装器)。
  • 可下载一些破解版软件。

缺点

  • 相对来说比较麻烦一点;
  • 如果是破解软件,有可能被后台偷偷上传一些数据(说实话破解软件就可能被上传,目前破解软件一般是TNT团队破解的,应该不至于偷偷上传隐私吧,反正我用了几年也没啥感觉);
  • 有可能系统会遭到软件的破坏(这种情况应该很少,我用六年没遇到过,而且我没装过杀毒软件,事实上macOS也不需要装杀毒软件)。

卸载方式

  • 只要是安装到『应用程序』里的,自己去『应用程序』文件夹直接删除对应的软件即可,可以鼠标右键删除,也可选中后按command+Delete(但这样会有一定的垃圾留下).
  • 如果后悔不想删除了,可以直接在删除软件的地方command+Z返回,也可以去废纸篓右击→放回原处。值得一提的是,如果你在废纸篓中用comamnd+Delete删除一个文件,其实并不是我们想像的『永久删除』,而是把文件『放回原处』,如果要用快捷键删除,应该是按command+shift+delete,但即使这样,Mac还是会弹出提示,问你是否真的要删除,可见对于文件Mac还是很谨慎的。如果你真的不想提示删除那个文件,那你可以按option+command+shift+delete来直接不提示删除。
    ScreenFlowdde.gif

  • 如果是pkg,或者少部分下一步下一步这样安装的.app软件,卸载都是需要用软件自带的卸载工具,有可能打开软件后,有一个菜单选项是『卸载』,有可能卸载程序是在dmg包里面,如果你把dmg包删除了,那你就无法卸载了,要卸载的话,再去下载回来,然后打开里面的卸载程序就可以卸载了。

  • 借助第三方卸载软件
    推荐免费卸载软件:AppCleaner,可以开启它的“Smart Delete”,这样删除的时候也是直接在“应用程序”里直接删除,AppCleaner会自动监控到你在删除哪个app,并阻止直接删除,而是弹出一个窗口,列出该软件除了软件本体以外,还有哪些相关的文件,我们再点击删除,就可以删除干净。

命令安装方式

优点

  • 方便、快速安装一些编程需要使用的工具或者应用(如浏览器)

缺点

  • 需要用命令,虽然并不复杂,但是大部分人一看到命令还是头疼!

卸载方式

  • 用Homebrew或者MacPorts安装的,也是使用命令卸载,brew install xxx是安装,brew uninstall xxx就是卸载了
  • 源码安装的,是直接到程序目录删除对应程序就好了(会安装的人肯定会删除)

更新软件的方法

App Store安装的软件

App Store安装的软件直接在App Store中更新即可。

安装包安装的软件

  • 有些软件自带更新功能,那么你只需要用软件自带的更新功能,一般都是在软件的设置里,自己找找肯定能找到的;当然有可能你太久没更新了,连自带的更新功能都不管用,这时直接去下载一个新版本就好了;
  • 有些软件没有自带更新功能(开发者比较懒,没做这样的功能),那你就再下载一次新版本,覆盖安装一次;
  • 对于破解软件,要看破解方式,有些是给你一个破解好的安装包,这种软件就算它自带有更新功能你肯定也不能用,因为用了那就会从官网更新,到时更新的就是破解版了。而另一种破解的方式是让你直接下载官网的安装包,然后给你破解工具,这种因为用的本来就是官网的安装包,当然就可以用软件自带的更新方式来更新了,只不过更新后要用破解工具重新破解一遍(比如Adobe系列软件用Adobe Zii破解),而且软件更新后,破解软件有可能也要更新成新版本才能破解(这个更新其实就是下载一个新版本,因为破解工具不太可能还给你做个更新功能)。

软件到底被安装到哪儿了?

“应用程序”文件夹

绝大多数软件都是安装到“应用程序”文件夹中的,因为它就是默认的存储应用程序(即软件)的文件夹,比如AppStore安装的、dmg安装包安装的、以及用brew命令安装的非命令型软件,都是安装到“应用程序”文件夹里的。

“Cellar”文件夹

所有用brew命令安装的命令型软件,都会被安装到/usr/local/Cellar/,具体可参考brew的安装文件夹

特定文件夹

少数软件比较特殊,它们不会被安装到“应用程序”文件夹,而是安装到特定文件夹中。

比如输入法软件,你安装之后在“应用程序”文件夹中是找不到的,因为输入法属于系统级别的,它需要在顶部输入法切换栏中显示,以及需要能被输入法快捷键切换,它是被安装到系统的输入法安装目录中,该目录位于

/Library/Input\ Methods/

又比如偏好设置类的软件,它是被安装到以下目录中的

/Library/PreferencePanes/

关于输入法:我已经反复说过,安装在“应用程序”目录中的的软件才会显示在“启动台”中,很明显,输入肯定是不会显示在“启动台”中的,于是有些不懂的童鞋想找输入法的设置,在“应用程序”文件夹和“启动台”找遍了,死活找不到自己安装的输入法在哪儿,更别说对它进行设置了。

其实你要给你安装的输入法修改设置,很简单,在屏幕右上角(顶部菜单栏右侧)就有输入法图标,你先切换到你安装的输入法,再次点击它,弹出来的菜单中就会显示这个输入法的设置菜单,包括搜索、百度之类的输入法还会有登录、修改皮肤的菜单等等。

一定要安装到“应用程序”文件夹吗?

这里不是输入法这样的特殊软件,而是指那些本应该安装到“应用程序”文件夹中的软件,一定要安装到“应用文件夹”吗?

其实不是的,你放在什么文件夹都能运行的,只不过只有在“应用程序”文件夹中的软件才会显示在“启动台”中,当然,由于“应用程序”文件夹是默认安装软件的文件夹,如果你不在这个文件夹中运行软件,有些软件可能会提示你:你当前不在“应用程序”文件夹中,是否要移动到“应用程序”文件夹?你不移动当然也是一样可以运行的。

使用安装包安装软件可能遇到的问题

打不开“XXX”,因为它来自身份不明的开发者。

当软件开发者没有使用开发者ID证书对软件进行签名,并且也无法检测出它是否包含恶意软件时,就会报这个提示。

“打不开“XXX”,因为它来自身份不明的开发者。macOS无法验证此App不包含恶意软件。”
image.jpg

macOS默认只信任“Mac App Store下载的软件”以及“拥有开发者ID签名的软件”,我们可以在这里系统偏好设置安全与隐私允许从以下位置下载的App看到这两个选项
image.jpg

而有时候一些个人开发者赖得去注册认证,或者搞破解软件的也不可能用开发者ID去签名(因为破解肯定无法通过公证,无论是否有恶意代码,所以你签名也没用),所以macOS默认不让用户安装此类软件。

遇到这种报错,先别点取消,而是先打开系统偏好设置安全与隐私,然后点取消(点取消的时候注意一下安全与隐私界面的变化,它其实是会出现一个“仍要打开”按钮的),我们点这个“仍要打开”即可打开。

如果你不想每次都这样,那你可以在系统偏好设置安全与隐私允许从以下位置下载的App里选择“允许所有来源”,不过这个选项默认是不显示的,我们需要以下命令来让它显示(事实上运行之后它默认就选中了)

sudo spctl --master-disable

注意:该命令会要求你输入密码,但是输入密码的过程你是看不见的,你只要保证自己输入对了,回车就可以。


关于sudo spctl --master-disable这个命令,你可以用man spctl,然后找到--master-disable选项的解释是这样的

Disable the assessment subsystem altogether. Operations that would be denied by system policy will be allowed to proceed; assessment APIs always report success. Requires root access.

翻译:完全禁用评估子系统。那些本应该被系统策略禁止的操作将会被允许继续进行;评估API将永远报告成功(译者注:如果你不禁用评估子系统,那么通过评估时才会报告成功),需要root权限。

“XXX”已损坏,无法打开。 您应该将它移到废纸篓。

错误如下
image.jpg

现在问题来了,都是从网络下载的软件,为什么有些只报“无法打开,因为它来自身份不明的开发者”,而有些却报“xxx已损坏,无法打开。您应该将它移到废纸篓”呢?

出现这个错误基本上是由于软件是破解软件,因为破解软件都是需要修改软件的某些部分,以达到破解的目的的,我猜是因为这些修改无法通过macOS系统的检测,所以被报xxx已损坏,但这貌似也不是因为它检测出了恶意程序,因为如果是的话,它会直接报告检测出恶意程序。

而如果我们执行了前面所说的这个命令后,其实是不会报“xxx已损坏”这样的错误的

sudo spctl --master-disable

因为前面已经说了,sudo spctl --master-disable是完全禁用macOS的评估子系统,macOS软件将不会对你从网络下载的软件的安全性进行评估。

事实上,执行了上边这个命令,也就是“允许任何来源”后,你再打开之前报“xxx已损坏的软件”,它会直接问你“该软件是从互连网下载的,你确定要打开它吗?”(首次打开会报,确定要打开后,下次就不会报了)
image.jpg

如果是浏览器下载的,一般会显示是哪个浏览器下载的,并且还会显示是从哪个链接下载的,如果是迅雷或者其它下载器下载,一般不显示下载链接,只显示是下载工具的名称。

那么macOS是怎么记录某个软件是谁从哪儿下载的呢?其实它是记录在本地的一个sqlite3数据库中的,数据库文件位置如下

~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2

我们用数据库工具(例如Navicat Premium)打开该数据库文件,可以看到数据库结构如下(一屏截不下,所以分两张截了,第二张图是拼到第一张图右边的)
image.jpg
image.jpg

当然我们也可以直接用命令查看该数据库

sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 "select * from LSQuarantineEvent;"

但是显示的字段太多有点乱,我挑几个主要字段,命令如下

sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 "select LSQuarantineAgentBundleIdentifier,LSQuarantineAgentName,LSQuarantineDataURLString,LSQuarantineSenderName,LSQuarantineOriginURLString from LSQuarantineEvent;"

有人可能不想允许任何来源(即不执行sudo spctl --master-disable),而是喜欢去“系统偏好设置→安全与隐私”点“仍要打开”(认为这样稍微安全点),可是遇到这种报xxx已损坏的错误,在“系统偏好设置→安全与隐私”里不显示“仍要打开”按钮,那要怎么办呢?

办法肯定是有的,那就是通过删除该软件的com.apple.quarantine属性来取消评估子系统对它的检查。这种方法不会禁用系统的评估系统,只会告诉评估子系统不要检查“xxx.app”,也就是单独给某个app放行。前面系统所有来源的方式,相当于不要门卫,所有人都能进,而删除com.apple.quarantine属性的方法,就相当于给某个人一个VIP特权,门卫将不会对这个人做检查。

使用以下命令可显示该app的所有属性(但就我见过的来说,其实只有com.apple.quarantine一个属性)

xattr /path/to/xxx.app

注意/path/to/xxx.app是你要操作的软件的路径,这个路径不需要手动输入,你只需要把前面的命令全部粘贴到终端,然后按一个空格,然后把软件(也就是“xxx.app”)拖到终端里面,它自动就会显示路径,然后回车执行即可,只要是在命令里要用到软件路径,都可以用这种方法(因为有些名称有空格的软件你直接输入是不行的,要用反斜杠转义空格,那样更麻烦,你直接拖进去它会自动转义)。

上边的命令如果正常,应该会显示
image.jpg

使用以下命令可删除“xxx.app”的com.apple.quarantine属性,删除后再用xattr /path/to/xxx.app去查看该软件的属性,你会发现那个属性没有了(也就是被删掉子)

xattr -r -d com.apple.quarantine /path/to/xxx.app
  • xattr:x表示extended,attr就是attributes,所以xattr就是扩展属性的意思,其实这个命令是用来控制macOS的扩展属性的
  • -d: delete (指定删除某个属性),本例中的com.apple.quarantine就是隔离属性,删掉它,软件就不会被系统隔离而不能运行;
  • -r: recursive (递归,对文件夹内的每一个文件包括文件夹本身进行都分别进行同样的操作);
  • -c: clear (删除所有属性)

所以有些写成-rd-rc的都一样,clear虽然是清除所有属性,但我看很多时候其实就只有com.apple.quarantine一个属性,所以所谓的清除,其实就是清除掉了一个属性而已,跟直接删除该属性没什么区别。

无法打开“XXXX”,因为Apple无法检查其是否包含恶意软件

这个报错据说是Catalina上才有,其实跟“XXX已损坏,无法打开。 您应该将它移到废纸篓。”是一样的,只不过改了提示而已。

以下命令是用于覆盖软件的签名的(前面两种方法都不行时,可以试试这种方法)

codesign --sign - --force --deep /path/to/xxx.app
  • --sign可以写成-s
  • --force可以写成-f
  • --deep不能写成-d,因为在这里-d--display的缩写,就算没有--display-d也容易被理解为--delete,所以--deep没有简写。
  • /Applications/Parallels\ Desktop.app是要签名的软件路径

如果提示没有codesign这个命令,你需要用以下命令安装一下“Command Line Tools for xcode”

xcode-select --install

如果xcode-select --install提示无法下载,可以手动安装:xcode-select –install 不能安装该软件,因为当前无法从软件更新服务器获得

下边解释一下这个覆盖签名(或者叫重签名),我们主要是看这个选项--sign -,在Unix系的系统中,--xxx表示使用xxx这个选项,而它后面空格跟着的就表示它的值,对于--sign -来说,--sign就是选项,-就是它的值,是的,这个比较特殊,用一个横杠来做它的值。

我们可以用man codesign命令来查看它的手册,在手册里按/就表示搜索,后面跟上要搜索的关键字,如果页面中有多个关键字,用n来移动到下一个,我们要搜索的关键字是SIGNING IDENTITIES(要用n移动到第二个关键字),然后就能看到下图所示的文字(点击图片可放大)
image.jpg

这段文字解释了用横杠-作为签名值的作用,我们来翻译一下:

如果标识是单个字母“-”(破折号),则执行临时签名。 临时签名根本不使用身份,而是仅标识一个代码实例。 临时签名代码的使用受到重大限制; 使用此之前,请查阅文档。

方法三如果做完还是闪退,那说明这个软件确实有问题,你需要等待新版本或者尝试旧版本。

关于关闭sip

什么是sip,怎样关闭sip我就不说了,请直接看:macOS关闭SIP & 重置NVRAM & 重置SMC

这里我要重点指出,部分破解软件下载站提示某些软件需要关闭SIP才能正常使,但事实上未必需要,我实测Navicat Premium Essentials破解版(16.1.9)使用以下命令重签名后,就能正常打开了,根本无需关闭sip

xattr -r -d com.apple.quarantine /path/to/xxx.app

参考:
在Mac上安全地打开App
Understanding output of xattr -p com.apple.quarantine

文件访问权限问题(一定要看)

macOS跟Windows相比,权限方面更加的严格。打开:系统偏好设置→安全与隐私→隐私,如下图:
image.jpg

上图中左侧的一列就是软件的权限,点击左下角的锁,输入密码开锁后,即可设置哪些软件允许使用哪些权限。

一般软件需要什么权限,它都会弹窗告诉你,然后点击之后,就会自动跳到隐私里面让你去勾选。

  • 浏览器要下载文件,一般是下载到“下载”文件夹,那么它申请的就是访问“下载”文件夹的权限;
  • 用微信视频、语音打电话,那么分别要给它摄像头权限和麦克风权限;
  • 远程会议需要分享桌面,它需要屏幕录制权限(因为分享桌面的原理其实就是不断的录制桌面并源源不断的传到接收的用户那边,它们才能“看见”你的屏幕),包括录屏软件、直播推流软件以及滚动截屏类软件(因为滚动截屏其实是不断录制你滚动的页面最后拼出一张长图),都需要屏幕录制权限;

这里特别讲一下“文件与文件夹”权限和“完全磁盘访问权限”的区别
image.jpg
完全磁盘访问权限,给了软件这个权限,那么软件就能访问整个磁盘的所有文件,谁需要这个权限呢?像Alfred就需要,毕竟它的搜索是需要访问全盘的,另外清理类软件也需要,如果没权限访问磁盘,怎么扫描出需要清理的文件呢?还有终端类软件也需要,因为你可能进入任何一个文件夹进行操作,如果不给全盘访问权限,你会经常遇到无法进入的文件夹。

而“文件与文件夹”权限,其实主要是用户目录下的预设的一些文件夹,比如:下载、桌面、文稿、图片、音乐、影片等等这些文件夹,这些文件夹都可以分开给权限的,比如只给某个软件下载目录权限,那么它就只能访问下载目录,其它目录它是不能访问的。

一般情况下,你使用某个软件的时候,如果需要用到某个权限,它会弹窗告诉你,让你点击直接路径到隐私设置里,而且很多时候给了权限需要重启该软件,但权限都是只需要给一次,给过之后,下次就不会再问你要权限了。

当然,如果软件重装了,它又会重装要权限,因为对系统来说,这是一个新安装的软件!

总之,一款软件需要什么权限,其实不需要你自己去猜,它需要某个权限的时候自然会弹窗告诉你它要什么权限。

打赏
订阅评论
提醒
guest

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

0 评论
内联反馈
查看所有评论
linyu
linyu
3 年 前

赞୧(๑•̀◡•́๑)૭

0
希望看到您的想法,请您发表评论x

扫码在手机查看
iPhone请用自带相机扫
安卓用UC/QQ浏览器扫

Mac实用技巧之:三种安装/卸载/更新软件的方式及其优缺点