关于macOS的目录和软件安装

文章更新

  1. 20170312-初次成文

为什么会有这篇文章

最近运行brew updagre,发现一些软件有了冲突,记得上次更新还是在几个月之前,发现有一些软件也觉得过期想要卸载了,装了homebrew,所以可以使用brew uninstall方便的卸载掉他们,但是无意中发现其实Homebrew装软件的原则是不破坏原来的系统自带软件或者稳定性,所以将所有装的软件全部放到了/usr/local/Cellar目录下,这还好说,但是有的软件,总会在系统中同时存在几个版本,比如在升级wget这个工具的时候,系统自带的在/usr/bin目录下,Homebrew装的在/usr/local/Cellar/wget目录下,一个1.18,一个1.19,但是/usr/local/opt目录下的wget又是个什么鬼?好了,下文慢慢扯。

macOS系统的目录结构

因为 Mac 属于一种类 Unix 系统,因此 Mac OS X 目录 = Unix 系统通用目录 + 独有目录,Mac OS X已经是被认证的Unix系统,所以其目录结构基本符合Unix系统目录结构。但是有很多目录在Finder中并看不到,这是因为这些目录的被设置了隐藏属性,我们可以在终端窗口中利用unix命令查看。

Unix 通用目录

  1. /bin 传统unix命令的存放目录,如ls,rm,mv等。
  2. /sbin 传统unix管理类命令存放目录,如fdisk,ifconfig等等。
  3. /usr 第三方程序安装目录。
  4. /dev 设备文件存放目录,如何代表硬盘的/dev/disk0。
  5. /usr/bin, /usr/sbin, /usr/lib,其中/usr/lib目录中存放了共享库(动态链接库).
  6. /etc 标准unix系统配置文件存放目录,如用户密码文件/etc/passwd。此目录实际为指向/private/etc的链接。
  7. /tmp 临时文件存放目录,其权限为所有人任意读写。此目录实际为指向/private/tmp的链接。
  8. /var 存放经常变化的文件,如日志文件。此目录实际为指向/private/var的链接。

macOS独有目录

  1. /Applications 应用程序目录,默认所有的GUI应用程序都安装在这里
  2. /Library 系统的数据文件、帮助文件、文档等等
  3. /Network 网络节点存放目录
  4. /System 只包含一个名为Library的目录,这个子目录中存放了系统的绝大部分组件,如各种framework,以及内核模块,字体文件等等。
  5. /Users 存放用户的个人资料和配置。每个用户有自己的单独目录。
  6. /Volumes 文件系统挂载点存放目录。
  7. /cores 内核转储文件存放目录。当一个进程崩溃时,如果系统允许则会产生转储文件。
  8. /private 里面的子目录存放了/tmp, /var, /etc等链接目录的目标目录。

用户资料存放位置

对于普通OS X用户来说,对系统目录树结构的理解与否并不影响正常使用系统,以至于OS X把很多目录都故意隐藏,让普通用户通过Finder不能看到。用户真正关心的是把自己的资料存放到哪里更加方便和安全。

Windows用户通常会把个人资料存放在非系统盘的其它分区中,因为Windows系统一旦死掉,C盘的内容很可能就找不回来了。Mac OS X的用户则不用担心这个问题,OS X发生崩溃和不能启动的概率实在是太低了,就算是系统出现问题,由于用户目录和系统目录是彼此独立的,所以也容易找回。所以通常情况下,用户直接把资料存放在自己的用户目录中,OS X也建议用户这么做,并且已经为用户准备好了常用的子目录。

应用程序、文档、下载、音乐、电影、图片、公共,对于普通用户来说这些子目录也就够用了,当然如果你觉得不够,可以自己随便添加。

从Windows过来的用户,如果还想保持原来的习惯,把用户文件和系统文件存放在不同的分区中,那么就需要利用“磁盘工具”重新分区,把系统分区调整小一些,留出空间建立一个新的HFS+分区,使用的时候把这个分区挂载到系统目录树上。

关于/usr/local和opt目录

其实在unix系统下,这两个目录的区别还是有一些的

  1. /usr/local下一般是你安装软件的目录,这个目录就相当于在windows下的programefiles这个目录
  2. /opt这个目录是一些大型软件的安装目录,或者是一些服务程序的安装目录

但是在安装了Homebrew的macOS系统上,区别嘛,直接看图吧。

usr/local/opt目录下的文件

看到了么?所有的文件,都指向了Cellar目录下的程序,也就是说这个目录目前放的,主要是用来兼容程序使用的目的。

使用Homebrew管理macOS的软件

Homebrew的介绍我统一搬家到这个帖子,请使劲戳。

参考文章

  1. linux下面/usr/local和opt目录有何区别
  2. Mac OS X 的系统目录结构
  3. 有趣的 Homebrew 命名邏輯
  4. 使用homebrew提升使用Mac的幸福感
  5. Homebrew refusing to link OpenSSL
分享到