标签 macOS 下的文章

Mac 中有些软件是通过 pkg 包进行安装的,其中有很多是系统包。如果我们只通过删除 Applications 目录下的图标是不能完全删除的。

PKG 包安装原理

pkg 包的安装原理非常简单,它解压后就会把文件分门别类解压到指定的位置。

这样安装虽然简单,但是卸载就非常困难了。我们需要把安装时候散落在各个位置的文件全部找到并删除掉。

PKG 分析

在终端中运行 pkgutil --pkgs 命令就可以看到已经安装过的包名

com.betafish.adblock-mac
org.nodejs.node.pkg
com.diumoo.diumoo
in.sinew.Enpass-Desktop
com.audioguidia.radioFMOSX
com.eusoft.freeeudic
com.hewbo.chmreader
com.netease.163music
com.wutian.weibo
com.teamviewer.teamviewer14AuthPlugin
com.microsoft.Excel
com.atpill.atpill
com.mitledas.ChmPages

com.apple 开头的包多数是系统包,请不要删除

运行 pkgutil --files com.microsoft.Excel 就可以看到分布在各个地方的文件

usr/local/include/node/v8-profiler.h
usr/local/include/node/v8-testing.h
usr/local/include/node/v8-util.h
usr/local/include/node/v8-value-serializer-version.h
usr/local/include/node/v8-version-string.h
usr/local/include/node/v8-version.h
...

PKG 包卸载

如果依据上面的分析,一个目录一个目录删除简直太痛苦了。而系统自带的包管理工具 pkgutil 比起其他系统的包管理来说又非常弱,连最基本的 uninstall 的功能都没有提供。那么我们如何快速删除已经安装过的 pkg 包呢?

uninstall-pkg.png

借助 UninstallPKG 不仅可以轻松查看安装包所有文件的位置,还能卸载那些已经失效的安装包。比起使用终端操作,更加直观方便。

下载地址

https://xclient.info/s/uninstall-pkg.html

Mac 自带 php-fpm,在终端执行 php-fpm,会报如下错误:

ERROR: failed to open configuration file '/private/etc/php-fpm.conf': No such file or directory (2)
ERROR: failed to load configuration file '/private/etc/php-fpm.conf'
ERROR: FPM initialization failed

错误信息显示,不能打开配置文件,cd /private/etc,发现没有 php-fpm.conf 文件,但是有 php-fpm.conf.default 文件。这个文件是默认配置,我们可以复制一份,改名为 php-fpm.conf,然后再根据需要改动配置。

sudo cp /etc/php-fpm.d/www.conf.default /etc/php-fpm.d/www.conf
sudo cp /etc/php-fpm.conf.default /etc/php-fpm.conf
sudo cp /etc/php.ini.default /etc/php.ini

执行 php-fpm,再次报错:

ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory (2)
ERROR: failed to post process the configuration
ERROR: FPM initialization failed

错误信息显示,不能打开错误日志文件。cd /usr/var/log 发现根本没有这个目录,甚至连 var 目录都没有,加上为了避免权限问题,干脆配置到 /usr/local/var/log 目录。首先手动建立这些目录

mkdir /usr/local/var/log
mkdir /usr/local/var/run

然后修改 php-fpm.conf 以下内容:

error_log = /usr/local/var/log/php-fpm.log
pid = /usr/local/var/run/php-fpm.pid

执行 php-fpm,再次报错:

NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root
NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root

于是 sudo php-fpm,再次报错:

ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (48)
ERROR: FPM initialization failed

sudo killall php-fpm

然后通过运行 php-fpm 命令即可正常启动 php-fpm

最后为了方便启动管理,我们给 php-fpm 启动、关闭、重启建个别名,方便以后操作

vim ~/.bash_profile

alias php-start="sudo php-fpm"
alias php-stop="kill -INT `cat /usr/local/var/run/php-fpm.pid`"
alias php-restart="kill -USR2 `cat /usr/local/var/run/php-fpm.pid`"