0%

前言

此篇文章,主要讲解Shadowdsocks的使用和配置。以及与VPN的对比。
注意:此文章部分链接需要翻墙才能打开。

为什么要翻墙

  • 以下是15年某篇文章的标题:全球前30大英文网站中这16个天朝不能正常访问,配图请看:

  • 你可以尝试打开一下网站:
    GoogleFaceBookYoutubeWikipediaTwitterDropbox

  • 查看一些国外的技术网站:stackoverflowgithub(翻墙之后会更流畅!)

  • 程序员需要一个自由的互联网

翻墙的几种手段

这里介绍不介绍,修改Hosts蓝灯GoAgentTor等方式,关于这些翻墙方式可以看一下这篇文章:如何选择翻墙方式

VPN

VPN 其实就是把你整个网关出口跟远端服务器之间建立一个隧道,你的所有的出口数据都会经过VPN服务器进行转发。

优点:

  • 全局代理,配置简单。

缺点:

  • 缺点也很明显,无差别代理,访问国内网站,相当于先跳转到国外,再访问国内网站,速度可想而知。网上可以找到各种免费的VPN代理,也有收费。这里推荐GreenVPN,注册之后可以有免费的VPN用,也可以付费。(PS,网上各种假冒网站,注意甄别!)

具体如何使用,这里就不过多介绍了,

总结:VPN 适合需要系统全局翻墙,并且是按需使用的方式。

Shadowdsocks

有关Shadowdsocks的介绍,可以详细的看一下这篇文章:whats-shadowsocks

Shadowsocks 的优劣:
优势:

  • 安全。所有数据流量全部经过加密,加密算法可选并支持自定义算法。另外,远程 DNS 解析也使得本地的 ISP 无法通过 DNS 查询获取你所访问的网站。
  • 速度相对较快。由于其隐蔽性,只会有很少的数据包会被 GFW 丢弃,从而保证了连接速度。
  • 客户端配置简单。配置时只需要填写 IP /域名端口号密码,然后选择加密方式即可。
  • 智能切换。 传统的 VPN 方式,在切换网络时非常不方便, 比如连上国外的 VPN 之后会发现访问国内的网站速度严重下降。 ShadowSocks 支持 PAC 列表,根据 PAC 中的规则,有针对性地选用恰当的网络访问方式,兼顾了访问速度与访问效率。移动客户端还支持针对不同应用设置单独代理。
  • 代码开源。不像某些蜜罐式的翻墙工具,开源的代码保证了无后门,从而为上网的隐私性与安全性提供保障。
  • 跨平台。支持主流系统包括 WindowsLinuxMacAndroid, IOS,都有对应的客户端支持。

关于它优势的一面可以看一下这篇文章:翻墙软件的选择和安全系数

劣势

  • 技术成本。若自己搭建 ShadowSocks 服务,需要一定的技术成本。因为大部分服务端是基于运行 LinuxVPS(虚拟主机)搭建,因此需要学会使用 putty 等远程管理工具的使用方法,并掌握一定的Linux基本命令行操作。
  • 金钱成本。租用国外的服务器,需要价格不菲的费用。 若使用免费 ShadowSocks 账号,可能有一定的安全成本。有一些人会将自己的 ShadowSocks 节点免费分享出来,这些人是非常值得肯定和称赞的!但是其中有一小部分人别有居心,例如在 ShadowSocks 的服务器端监听网络流量,进行中间人攻击等,这类钓鱼服务器会严重损害用户的个人信息安全。 若购买收费的 ShadowSocks 账号, 需要一定的金钱成本 由于很多 ShadowSocks 卖家都是以盈利为目的,需要花费一定的费用。 那么,自己想要有一个影梭账号的话,到底是选用哪种比较好呢?可以看到网上很多卖 ShadowSocks 账号的,有的价格很便宜,比自己搭服务器划算多了,是不是直接购买一个账号比较好呢? 在这里我建议大家自己搭服务器

上面介绍的优势,就是我推荐大家使用的理由,而劣势就是写文章的缘由。

关于VPN

虽然Shadowdsocks很好用,但是有的时候,总会碰到一个先有鸡还是有蛋的情况,你要配置Shadowdsocks,但是需要先翻墙,所以为了避免这种情况,最好还有备一个VPN还是有必要的。

使用和配置Shadowdsocks客户端

客户端下载

  • Windows(GitHub)

  • Mac(GitHub)

  • 由于iOS系统安全性,需要越狱才能安装Shadowdsocks,如果你已经越狱,你可以自行编译安装,源码

  • iOS不越狱客户端推荐(以下软件使用了iOS9系统的新特性,也就是话说仅支持iOS9+

    • Surge:强烈推荐,虽然价格偏高,但是使用体验最好
    • Shadowrocket:价格便宜,买不起上面的,就买这个吧
    • potatso:价格比上面贵一些,但是代码开源,有能力的可以自己编译安装。
  • Android(Google Play)

客户端使用

这里只介绍MAC系统使用,如果已经有了Shadowsocks帐号:

  1. 服务器设定 -> IP端口加密密码,一一对应填写。

  2. 测试服务器是否配置成功:

    • 勾选配置好的服务器,选择全局模式,然后打开Google,如果可以就进行下一步。
    • 如果打不开,检查填写有误,检查是否使用了默认的443端口,是否开启了其它代理。
  3. 更新 PAC

  4. 测试 PAC 是否生效,选择自动模式代理,再次打开Google,如果可以打开,说明配置成功。


配置Shadowdsocks服务器

这里只介绍,购买VPS服务器,来搭建Shadowdsocks服务端。不讨论购买现成的帐号。

服务器选择一:搬瓦工bandwagonhost

关键字:价格低一键配置支付宝

价格:$2.99/月,也会有$3.99一年的特价机器。

篇幅有限,具体配置见:搬瓦工搭建Shadowsocks服务器详细图文教程

服务器购买注意:买价格最便宜的就可以了,优先:洛杉矶佛罗里达(也可以随时切换)。

服务器选择二:Vultr

关键字:本人使用配置高,可做服务器速度快

价格:$5/月

服务器购买注意:必须选择日本VPS!!

篇幅有限,具体配置可以参考:Vultr 搭建安装 Shadowsocks

注意:由于Vultr没有一键配置选项,所以需要手动配置,但是网上已经有人给出一键安装的脚本:Shadowsocks Python版一键安装脚本

小广告一下:如果选择了Vultr可以使用我这个链接,大家都会得到$20美元:http://www.vultr.com/?ref=6936225-3B

总结与注意:

要想简单便宜,可以选择搬瓦工,但我自己贴身体会来讲,虽然刷网页虽然够了,但是看视频下载文件,还是有些慢,这个时候你可以选择Vultr

Shadowdsocks配合其它软件使用

shadowsocks代理属于socks5代理,通俗的理解,socks5只是局部代理,不能像vpn那样把整个电脑都代理。因此,一般情况下只有支持socks5的软件才能使用shadowsocks代理。当然我们也可以借助其它软件来实现,具体见下面介绍:

Dropbox配置代理

设置->网络->手动->:

配置见图,即可走本地Shadowdsocks代理

存在的问题:Dropbox 安装之后,第一次启动是不走代理的,需要全局代理也不行。不清楚是什么原因,我是使用VPN第一次启动的。

使用proxifier代理指定程序

具体参见:Proxifier:给某个单独应用配置代理上网服务

终端走代理的方法

# 在终端下使用 
export ALL_PROXY=socks5://127.0.0.1:1080
# 清除代理
unset ALL_PROXY

为了测试是否成功可以curl -i http://ip.cn 查看ip

以上命令只对本窗口生效,为了方便呢,可以在~/.bash_profile中加上这个。(如果没有bash_profile文件自行创建)

function setproxy() {
# export {HTTP,HTTPS,FTP}_PROXY="http://127.0.0.1:3128" 也可以设置http代理
export ALL_PROXY=socks5://127.0.0.1:1080
}

function unsetproxy() {
# unset {HTTP,HTTPS,FTP}_PROXY
unset ALL_PROXY
}

需要使用代理的时候setproxy,不用了就unsetproxy
就可以很方便的在shell环境下切换设置代理了。

ProxyChains-NG终端下代理

具体参加:Mac下安装及配置 ProxyChains-NG 实现终端下代理

如果安装成功之后,不能使用代理的话,需要关闭 SIP,具体见: 解决os x el capitan proxychains 不能用 (关闭SIP)

路由器上使用Shadowdsocks代理局域网

每个路由器都不太一样,自行谷歌吧。

Shadowdsocks 进阶

Shadowdsocks加速的几种方案

方案一:国内服务器安装Haproxy代理Shadowsocks实现加速
方案三:使用锐速加速
方案四:FilnalSpeed加速方案
具体使用,自行谷歌。

Shadowdsocks多用户配置

搬瓦工VPS shadowsocks多用户端口配置

最近项目碰到 Xcode 代码无法显示的问题,具体如下:

类名和方法名都无法显示, 并且无法跳转

在百度的搜索下大多找到的是以下方法:

1. clean 一下
2. 清除所有工程 Organizer-projects - 把项目Remove from Organizer
3. 关闭xcode重新打开即可。
4. 实在不行就重启吧。

但是都没有解决问题, 于是通过谷歌找到以下解决方案:

  1. 删除模块缓存
    首先关闭 Xcode ,然后删除 ~/Library/Developer/Xcode/DerivedData/ModuleCache 目录下的所有文件
  2. 修改 Enable Modules 的值
    到你的项目的 Build Settings 中,找到 Enable Modules
    如果值是 YES ,修改为 NO,然后 编译以下,会报错,之后再修改为 YES

经过上面两个操作之后,你还需要 Clean(Shift + Command + K)一下

最终解决了我的问题!!

附上stackoverflow原帖: http://stackoverflow.com/questions/36165865/xcode-7-3-syntax-highlighting-and-code-completion-issues-with-swift

前言

虽然MWeb可以方便上传本地图片到图床,但是操作还是比较麻烦,如果能够截图之后就直接上传图床,并且返回Markdown格式的链接,岂不是更方便。

思路

  1. 获取剪贴板内容,判断是否是图片
  2. 如果是图片,保存到本地缓存,拿到路径
  3. 使用七牛SDK上传图片,返回图片地址

代码

#!/usr/bin/python
# -*- coding: utf-8 -*-

import datetime
import os
import sys
import atexit
import imghdr
from subprocess import call
from os.path import expanduser, exists, basename, getsize

from qiniu import Auth, put_file, etag

# 获取剪贴板里的图片,并且保存到 本地 tmp 文件夹
def capture():
try:
call(['/usr/local/bin/pngpaste', '-v'], stderr=open('/dev/null', 'w'))
except OSError:
print('please preinstall pngpaste use `brew install pngpaste` before use this script')
sys.exit()

file_name = datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S.png')
file_path = os.path.join('/tmp', file_name)
atexit.register(lambda x: os.remove(x) if os.path.exists(x) else None, file_path)
save = call(['/usr/local/bin/pngpaste', file_path])
if save == 1:
sys.exit()
return file_path, file_name


if sys.argv.__len__() == 1:
file_path, file_name = capture()

else:
# 任意字符代表捕获粘贴板
file_path = expanduser(sys.argv[-1])
if not exists(file_path):
file_path, file_name = capture()
else:
if imghdr.what(file_path) not in ['jpeg', 'jpg', 'png']:
sys.exit('file type error')
file_name = basename(file_path)


#需要填写你的 Access Key 和 Secret Key
access_key = ''
secret_key = ''

#域名前缀
qiniu_URL = ''

#构建鉴权对象
q = Auth(access_key, secret_key)

#要上传的空间
bucket_name = ''

#上传到七牛后保存的文件名
key = file_name

#生成上传 Token,可以指定过期时间等
token = q.upload_token(bucket_name, key, 3600)

#要上传文件的本地路径
localfile = file_path

#上传文件到七牛
info = put_file(token, key, localfile)

if info:
print qiniu_URL + file_name
else:
print '上传失败!'

代码说明

需要安装 pngpaste,可以使用 homebrew 安装: brew install pngpaste

代码存在的问题

仅能识别截图,不能上传file。

添加到 Alfred

新建一个Workflow,设置快捷键,然后把代码拷贝到 Run Script,第三个是获取打印的结果。

获取到 Python 打印的 字符串到剪贴板

演示

Proxifier 简介

Proxifier是一款功能非常强大的socks5客户端,可以让不支持通过代理服务器工作的网络程序能通过https或socks代理或代理链。支持socks4,socks5,http代理协议,支持tcp,udp协议,可以指定端口,指定ip,指定程序等运行模式,兼容性非常好。

配合 ShadowSocks 代理指定程序

  1. 前提是 ShadowSocks 已经配置好,然后去官网下载 Proxifier 安装。

  2. 添加一个ShadowSocks的本地代理

  1. 添加一个规则

注意

经过上面的操作就可以通过 ShadowSocks 的 1080 端口走代理了。不过需要注意的是,这个软件默认是全部走代理的,记得修改一下:

媒体类型

为了区分不同数据类型,HTTP 给每种通过 Web 传输的对象打上了名为 MIME 类型的数据格式标签,当 Web 浏览器从服务器中取出一个对象时,会去查看相关的

常见的 MIME 类型:

  • HTML 格式的文本文档由 text/html 类型来标记。
  • 普通的 ASCII 文本是有 text/plain 类型来标记。
  • JPEG 图片为 image/jpeg 类型
  • GIF 图片为 image/gif 类型
  • Apple QuickTime 视频为 video/quicktime 类型
  • 微软的 PowerPoint 演示文件为 application/vnd.ms-powerpoint 类型。

HTTP 报文

一个 HTTP 事务由一条(客户端发往服务器的)请求命令和一个(从服务器返回给客户端的)响应结果组成。这种通信是通过名为 HTTP 报文(HTTP message)的格式化数据块进行的如图所示:

报文实例

浏览器发送了一条 HTTP 请求报文。这条请求的起始行中有一个 GET 命令,且本地资源为 /tools.html 。 这条请求说明它使用的是 1.0 版的 HTTP 协议。 请求报文没有主体,因为从服务器上 GET 一个简单的文档不需要请求数据。

服务器会回送一条 HTTP 响应报文。这条响应中包含了 HTTP 的版本号(HTTP/1.0)、 一个成功状态码(200)、一个描述性的原因短语(OK), 以及一块响应首部字段, 在所有这些内容之后跟着包含了所请求文档的响应主体。 Content-Length 首部说明了响应主体的长度, Content-Type 首部说明了文档的 MIME 类型。

解析实例

  1. 请求

    • 请求行:包含了请求方法、请求资源路径、HTTP 协议版本
      GET /tools.html HTTP/1.1

    • 请求头:包含了对客户端的环境描述、客户端请求的主机地址等信息

      Host: www.joes-hardware.com     // 客户端想访问的服务器主机地址
      User-Agent: Mozilla/4.75 (Win98; U)
      // 客户端的类型,客户端的软件环境
      Accept: text/html, image/gif, image/jpeg     // 客户端所能接收的数据类型
      Accept-Language: en     // 客户端的语言环境
      Accept-Encoding: gzip     // 客户端支持的数据压缩格式
    • 请求体:客户端发给服务器的具体数据,比如文件数据

  2. 响应:服务器返回客户端想要的数据

    • 客户端向服务器发送请求,服务器应当做出响应,即返回数据给客户端

    • HTTP 协议规定:1个完整的响应包含以下内容:

      • 状态行:包含了 HTTP 协议版本、状态码、状态英文名称

        HTTP/1.1 200 OK

      • 响应头:包含了对服务器的描述、对返回数据的描述

        Server: Apache-Coyote/1.1         // 服务器的类型
        Content-Type: image/jpeg         // 返回数据的类型
        Content-Length: 56811         // 返回数据的长度
        Date: Mon, 23 Jun 2014 12:54:52 GMT    // 响应的时间
      • 实体内容:服务器返回给客户端的具体数据,比如文件数据

HTTP 报文包括以下是三个部分

  • 起始行

    报文的第一行就是起始行,在请求报文中用来说明要做些什么, 在响应报文中说 明出现了什么情况。

  • 首部字段

    起始行后面有零个或多个首部字段。 每个首部字段都包含一个名字和一个值, 为 了便于解析, 两者之间用冒号(:)来分隔。 首部以一个空行结束。 添加一个首 部字段和添加新行一样简单。

  • 主体

    空行之后就是可选的报文主体了,其中包含了所有类型的数据。 请求主体中包括 了要发送给 Web 服务器的数据;响应主体中装载了要返回给客户端的数据。 起 始行和首部都是文本形式且都是结构化的, 而主体则不同, 主体中可以包含任意 的二进制数据(比如图片、视频、音轨、软件程序)。 当然, 主体中也可以包含 文本。

整理自《HTTP 权威指南》

1. 安装

要安装Aria2其实有好几种方法,在此介绍算是最简单的一种,因为其他方法都要自行编译,比较麻烦,而这次介绍的方法只需直接使用 Homebrew 命令行安装即可,一条命令就全部自动搞掂。不过如果你从没安装过 Homebrew,那就要再折腾一下先,其实 Homebrew 是一个功能强大的软件安装包,你可以通过它安装很多流行的开源免费软件。至于如何安装 Homebrew,可以参考这里的教程。

brew install aria2

2. 设置配置文件

aria2有两种下载模式:一种是直接命令行模式下载,平时可以用用。另一种是RPC模式,在这种模式下aria2启动后会在后台安静的等待下载请求,下载完成后也仍然后安全的驻留在后台不会自动退出。本文使用RPC模式,用以下配置文件来配置此模式(此配置文件参考1),此配置文件保存在~/.aria2/aria2.conf,如果 没有,自行创建。
用文本编辑器打开(如果没有自行创建) aria2.conf,将 雪月秋水君 提供的以下配置直接拷贝进去:
(注意修改路径名)

#用户名
#rpc-user=user
#密码
#rpc-passwd=passwd
#上面的认证方式不建议使用,建议使用下面的token方式
#设置加密的密钥
#rpc-secret=token
#允许rpc
enable-rpc=true
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
#允许外部访问,false的话只监听本地端口
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
#rpc-listen-port=6800
#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=5
#断点续传
continue=true
#同服务器连接数
max-connection-per-server=5
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=10
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0
#断开速度过慢的连接
#lowest-speed-limit=0
#验证用,需要1.16.1之后的release版本
#referer=*
#文件保存路径, 默认为当前启动位置
dir=/Users/xxx/Downloads
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc « prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=prealloc

默认下载路径的「/Users/xxx/Downloads」可以改为任何你想要的绝对路径。此处写为 Downloads 目录,xxx 请自行替换成你的 Mac 用户名,然后保存,退出编辑器。

3. 下载模式一:命令操作(这里直接忽略)

Download from WEB:
aria2c http://example.org/mylinux.iso
Download from 2 sources:
aria2c http://a/f.iso ftp://b/f.iso
Download using 2 connections per host:
aria2c -x2 http://a/f.iso
BitTorrent:
aria2c http://example.org/mylinux.torrent
BitTorrent Magnet URI:
aria2c 'magnet:?xt=urn:btih:ds2io3u2oj309xd'
Metalink:
aria2c http://example.org/mylinux.metalink
Download URIs found in text file:
aria2c -i uris.txt
下载 aria2 的 service启动脚本 及加入开机自启动项
sudo cd /etc/systemd/system/
wget https://github.com/bostoneboy/raspberry_pi_stuff/raw/master/system/aria2c.service
systemctl enable aria2c.service
以进程的方式启动aria2
systemctl start aria2c.service

更多官方公布的详细命令指南如下:
http://aria2.sourceforge.net/manual/en/html/aria2c.html

4. 下载模式二:RPC 模式

启动命令格式 :aria2c --conf-path=<PATH> -D
PATH必须是绝对路径,-D表示使Aria2在后台运行,即使关闭终端也不会停止运行

在终端输入aria2c --conf-path="/Users/用户名/.aria2/aria2.conf" -D,然后 aria2 就启动了,

5. 如何进行下载操作?

  • 这时候你要下载文件时,还必须将文件下载链接转换成  Aria2的格式,然后再用命令行进行下载,过程比较麻烦和复杂,这里就不多说了,因为我介绍的方法可让这过程非常简单。以下推荐一个非常好用的系统,其实就是一个 Html + JS 写的网站,其整合了 Aria2 的服务,做了一个漂亮的管理界面,其下载地址:

      https://github.com/ziahamza/webui-Aria2
    
  • 下载后也不需创建任何 web 服务器,只需直接双击运行 index.html 方便即可,当然前提是你已启动了 Aria2 服务(运行上面的命令行),你可以直接在 webui-aria2 里面进行添加下载链接,然后就可以看到下载的状态速度和时间了。

6. 百度网盘下载

7. 设置开机自启动 Aria2

点击 Mac 左上角的苹果 logo,进入系统偏好设置。点击左下倒数第二个的「用户与群组」,再点击上面的「登录项」。此时,在终端输入:open /usr/local/aria2/bin/会弹出一个窗口,将里面的aria2c 文件拖入到刚刚的「登录项」窗口内,将它打勾。OK,这样就能正常的开机启动啦。

如果你想关掉后台的 aria2,可以到活动监视器中找到 aria2c 杀掉,也可以在终端输入kill aria2之后按 Tab 键,aria2 会自动变成进程号,回车即可杀掉它。

0.介绍

mac系统也是基于unix的系统,所以也继承类很多unix的特性,包括软件的编译,安装等。ubuntu下有快捷命令apt-get install来快速安装软件。centos下有yum install来快速安装。所以,mac下也有一种方式,就是使用brew。

brew是Mac下的一个包管理工具,它从下载源码解压然后 ./configure && make install ,同时会包含相关依存库。并自动配置好各种环境变量,而且非常易于卸载。 这个对程序员来说简直是福音,简单的指令,就能快速安装和升级本地的各种开发环境。

home brew 官网是 http://brew.sh/index_zh-cn.html

1. 安装brew

打开 itrem 。输入一条命令即可安装好 brew。

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

这样一个简单的命令,我们就安装好来brew 。来验证一下,输入brew命令:

Example usage:
brew [info | home | options ] [FORMULA...]
brew install FORMULA...
brew uninstall FORMULA...
brew search [foo]
brew list [FORMULA...]
brew update
brew upgrade [FORMULA...]
brew pin/unpin [FORMULA...]

Troubleshooting:
brew doctor
brew install -vd FORMULA
brew [--env | config]

Brewing:
brew create [URL [--no-fetch]]
brew edit [FORMULA...]
open https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Formula-Cookbook.md

Further help:
man brew
brew home

出现了很多帮助命令,说明我们已经安装成功了。

2.brew命令使用

用 brew 安装源码

安装好了brew之后,我们就可以用这个命令安装各种源码了。比如安装一下wget工具。这个工具能在命令行中帮我们下载各种数据。

brew install wget

这样一个简单的命令就可以了。它会帮我们下载好wget,并且编译执行安装,还会下载各种依赖包,设置好各种配置和参数。

安装好的 wget 会被安装到/usr/local/Cellar/wget/下。并且将wget命令软链接至 /usr/local/bin 目录下。这样全局就都可以使用wget命令了。

我们同样可以使用brew安装好git,node,openssl,svn等各种。

安装好的这些软件都会统一安装到/usr/local/Cellar/目录下,统一管理。而且安装目录代码会被同步到/usr/local/opt/下,任何的增删改都会保持这2个目录的同步。并且已经软链好各种命令到/usr/local/bin下。

我们去看看:

$ ls -l /usr/loal/bin
-rwxr-xr-x 1 yangyi admin 791 3 26 17:47 brew
lrwxr-xr-x 1 yangyi admin 30 3 27 13:34 node -> ../Cellar/node/0.12.1/bin/node
lrwxr-xr-x 1 yangyi admin 30 4 14 15:16 wget -> ../Cellar/wget/1.16.3/bin/wget/usr/local/Cellar 和 /usr/local/opt/ 同步,增删改都会同步。
$ ls /usr/local/opt
brew-cask nginx node openssl pcre pkg-config wget xz
$ ls /usr/local/Cellar/
brew-cask nginx node openssl pcre pkg-config wget xz

brew 的常用命令

常用的命令没几个:

brew install wget # 安装源码
brew info svn # 显示软件的各种信息,包括版本啊源码地址啊等等
brew uninstall wget # 卸载软件,很爽,一键静默卸载
brew search git # 模糊搜索brew 支持的软件。如果不加软件名,就会列出所有它支持的软件。多的很。
brew list # 列出本机通过brew安装的所有软件
brew update # 跟新brew软件自身
brew upgrade wget # 更新安装过的软件,如果不加软件名,就更新所有可以更新的软件
brew cleanup # 清除下载的各种缓存

3.brew cask

brew cask 是在brew 的基础上一个增强的工具,用来安装Mac上的Gui程序应用包(.dmg/.pkg), 比如qq、chrome、xun lei等。它先下载解压到统一的目录中(/opt/homebrew-cask/Caskroom),省掉了自己去下载、解压、拖拽(安装)等蛋疼步骤,同样,卸载相当容易与干净。然后再软链到~/Applications/目录下, 一气呵成。非常方便,而且还包含很多在 AppStore 里没有的常用软件。

brew cask的官网是:http://caskroom.io

github地址是:https://github.com/caskroom/homebrew-cask

brew cask 的安装

也同样是一条命令搞定,前提是已经安装了brew:

brew install caskroom/cask/brew-cask

brew cask help

看安装成功没?也是出现各种命令和帮助手册:

brew-cask provides a friendly homebrew-style CLI workflow for the
administration of Mac applications distributed as binaries.

Commands:

audit verifies installability of Casks
cat dump raw source of the given Cask to the standard output
cleanup cleans up cached downloads and tracker symlinks
create creates the given Cask and opens it in an editor
doctor checks for configuration issues
edit edits the given Cask
fetch downloads remote application files to local cache
home opens the homepage of the given Cask
info displays information about the given Cask
install installs the given Cask
list with no args, lists installed Casks; given installed Casks, lists staged files
search searches all known Casks
style checks Cask style using RuboCop
uninstall uninstalls the given Cask
update a synonym for 'brew update'
zap zaps all files associated with the given Cask

See also "man brew-cask"

好,我们来来下一个iTerm来看看:

brew cask install iterm2

简单的2条命令就可以了,非常之快,它会讲软件安装到/opt/homebrew-cask/Caskroom目录下,并且软链到~/Applications了,这样就能在应用程序里找到它。就能方便的使用。

$ cd /opt/homebrew-cask/Caskroom/
$ ls
iterm2

这是我们刚才安装的iTerm2了。

再看看软链,用户自己手动下载安装的App会被安装到~/Applications,进这个目录看看:

$ cd ~/Applications
$ ls -l
total 8
drwxr-xr-x 3 shun staff 102 3 5 23:42 Windows 10 Applications.app
lrwxr-xr-x 1 shun staff 50 3 16 11:09 iTerm.app -> /opt/homebrew-cask/Caskroom/iterm2/2.1.4/iTerm.app

看到了吧。我们刚才的iTerm就软链到了统一的安装目录。

brew cask 常用命令

下面说一些常用到的各种命令。

brew cask install qq # 下载安装软件
brew cask uninstall qq # 卸载软件
brew cask search qq # 模糊搜索软件,如果不加软件名,就列出所有它支持的软件
brew cask info qq # 显示这个软件的详细信息,如果已经用cask安装了,也会显示其安装目录信息等
brew cask list # 列出本机按照过的软件列表
brew cask cleanup # 清除下载的缓存以及各种链接信息
brew update && brew upgrade brew-cask # 更新cask自身

或许你已经注意到了,好像并没有提供更新用cask安装软件命令啊。的确是没有。是的。目前 homebrew-cask 并没有命令直接更新所有已安装的软件,软件更新主要是通过软件自身的更新流程,不过也可以通过以下所示命令先删除 APP,再重新安装。

brew cask uninstall APP && brew cask install APP

软件同样也会安装到/opt/homebrew-cask/Caskroom目录下。

整理自(原文): https://www.zybuluo.com/phper/note/87055