设置新的开发机器可能是一个临时的、手动的且耗时的过程。 dev-setup
旨在通过易于理解的指令和点文件/脚本来简化流程,以自动执行以下设置:
dev-setup
旨在更多地成为各种开发人员工具的有组织的参考。
您并不意味着要安装所有内容。
如果您对自动化感兴趣, dev-setup
提供了可自定义的设置脚本。对于开发人员来说,确实没有一刀切的解决方案,因此我们鼓励您进行调整以满足您的需求。
致谢:这个 repo 建立在 Mathias Bynens 和 Nicolas Hery 的出色工作之上。
Vagrant 和 Docker 都是很棒的工具,都是由这个存储库设置的。我发现 Vagrant 可以很好地确保开发与测试和生产层相匹配。我只是开始在业余项目中使用 Docker,它看起来非常有前途。然而,对于Mac用户来说,Docker和Vagrant都依赖于虚拟机,它们都有各自的考虑/优点/缺点。
Boxen 是一个很酷的解决方案,尽管有些人可能会发现它更适合“更成熟的公司或 devops 团队”。我看到过一些关于困难的讨论,因为它是在幕后使用 Puppet 的。
该存储库采用更轻量级的自动化方法,使用Homebrew、Homebrew Cask 和 shell 脚本的组合来进行基本的系统设置。它还为每个开发人员应用程序或工具提供易于理解的安装、配置和使用说明。
脚本在 OS X 10.10 Yosemite 和 10.11 El Capitan 上测试。
~
$ git clone https://github.com/donnemartin/dev-setup.git && cd dev-setup
由于您可能不想安装每个部分,因此.dots
脚本支持命令行参数以仅运行指定的部分。只需传入您要安装的脚本即可。以下是一些示例。
如需更多自定义,您可以克隆或分叉存储库并调整.dots
脚本及其关联组件以满足您的需求。
运行全部:
$ ./.dots all
运行bootstrap.sh
、 osxprep.sh
、 brew.sh
和osx.sh
:
$ ./.dots bootstrap osxprep brew osx
运行bootstrap.sh
、 osxprep.sh
、 brew.sh
和osx.sh
、 pydata.sh
、 aws.sh
和datastores.sh
:
$ ./.dots bootstrap osxprep brew osx pydata aws datastores
$ curl -O https://raw.githubusercontent.com/donnemartin/dev-setup/master/.dots && ./.dots [Add ARGS Here]
~
笔记:
.dots
最初会提示您输入密码。.dots
可能会要求您在安装的某些阶段重新输入密码。.dots
即可从上次中断的位置恢复。.dots
运行brew.sh
,这需要一段时间才能完成,因为一些公式需要从源安装。.dots
完成后,请务必重新启动计算机以使所有更新生效。我鼓励您通读第 1 部分,以便您更好地了解每个安装脚本的用途。以下讨论更详细地描述了运行 .dots 脚本时执行的内容。
bootstrap.sh
脚本会将 dev-setup 存储库同步到您的本地主目录。这将包括 Vim、bash、curl、git、制表符补全、别名、许多实用函数等的自定义。本存储库的第 2 节描述了一些自定义。
首先,分叉或克隆存储库。 bootstrap.sh
脚本将拉入最新版本并将文件复制到您的主文件夹~
:
$ source bootstrap.sh
要稍后更新,只需再次运行该命令即可。
或者,在避免确认提示的同时进行更新:
$ set -- -f; source bootstrap.sh
要在不使用 Git 的情况下将 dev-setup 同步到本地主目录,请运行以下命令:
$ cd ~; curl -#L https://github.com/donnemartin/dev-setup/tarball/master | tar -xzv --strip-components 1 --exclude={README.md,bootstrap.sh,LICENSE}
要稍后更新,只需再次运行该命令即可。
如果~/.path
存在,则在进行任何功能测试(例如检测正在使用的ls
版本)之前,它将与其他文件一起获取。
下面是一个示例~/.path
文件,它将/usr/local/bin
添加到$PATH
:
export PATH= " /usr/local/bin: $PATH "
如果~/.extra
存在,它将与其他文件一起获取。您可以使用它来添加一些自定义命令,而无需分叉整个存储库,或者添加您不想提交到公共存储库的命令。
我的~/.extra
看起来像这样:
# Git credentials
GIT_AUTHOR_NAME= " Donne Martin "
GIT_COMMITTER_NAME= " $GIT_AUTHOR_NAME "
git config --global user.name " $GIT_AUTHOR_NAME "
GIT_AUTHOR_EMAIL= " [email protected] "
GIT_COMMITTER_EMAIL= " $GIT_AUTHOR_EMAIL "
git config --global user.email " $GIT_AUTHOR_EMAIL "
# Pip should only run if there is a virtualenv currently activated
export PIP_REQUIRE_VIRTUALENV=true
# Install or upgrade a global package
# Usage: gpip install –upgrade pip setuptools virtualenv
gpip (){
PIP_REQUIRE_VIRTUALENV= " " pip " $@ "
}
您还可以使用~/.extra
覆盖 dev-setup 存储库中的设置、函数和别名,尽管最好分叉 dev-setup 存储库。
运行osxprep.sh
脚本:
$ ./osxprep.sh
osxprep.sh
将首先安装所有更新。如果需要重新启动,只需再次运行脚本即可。安装所有更新后, osxprep.sh
将安装 Xcode 命令行工具。
如果您想采用手动路线,您还可以通过运行“App Store”,选择“更新”图标,然后更新操作系统和已安装的应用程序来安装所有更新。
许多工具(例如 Homebrew)可以工作之前的一个重要依赖项是Xcode 的命令行工具。其中包括像 gcc 这样的编译器,它允许您从源代码构建。
如果您运行的是OS X 10.9 Mavericks 或更高版本,那么您可以直接从命令行安装 Xcode 命令行工具:
$ xcode-select --install
注意: osxprep.sh
脚本执行此命令。
运行上面的命令将显示一个对话框,您可以在其中执行以下任一操作:
如果您运行的是 10.8 或更低版本,则需要访问 http://developer.apple.com/downloads,并使用您的 Apple ID(与您用于 iTunes 和应用程序购买的 ID 相同)登录。不幸的是,迎接您的是一份相当烦人的调查问卷。所有问题都是必填问题,因此请随意回答。
到达下载页面后,搜索“命令行工具”,然后下载适用于 Xcode 的最新命令行工具 (OS X Mountain Lion) 。下载完成后打开.dmg文件,然后双击.mpkg安装程序以启动安装。完成后,您可以在 Finder 中卸载磁盘。
设置新 Mac 时,您可能需要安装 Homebrew,这是一个包管理器,可以简化应用程序或库的安装和更新。
由brew.sh
脚本安装的一些应用程序包括:Chrome、Firefox、Sublime Text、Atom、Dropbox、Evernote、Skype、Slack、Alfred、VirtualBox、Vagrant、Docker 等。有关已安装公式和应用程序的完整列表,直接参考带注释的brew.sh源文件并对其进行调整以满足您的需求。
运行brew.sh
脚本:
$ ./brew.sh
brew.sh
脚本需要一段时间才能完成,因为某些公式需要从源代码安装。
为了使您的终端自定义完全生效,请退出并重新启动终端
设置新 Mac 时,您可能需要设置适合开发人员的 OS X 默认值。 osx.sh
脚本还配置常见的第三方应用程序,例如 Sublime Text 和 Chrome。
注意:我强烈建议您阅读注释的 osx.sh 源文件并根据您的个人喜好调整任何设置。脚本默认值供您自定义。例如,如果您没有运行 SSD,您可能需要更改 SSD 部分中列出的一些设置。
运行osx.sh
脚本:
$ ./osx.sh
为了使您的终端自定义完全生效,请退出并重新启动终端。
要设置开发环境来使用 Python 和数据分析而不依赖更重量级的 Anaconda 发行版,请运行pydata.sh
脚本:
$ ./pydata.sh
这将安装 Virtualenv 和 Virtualenvwrapper。然后,它将设置两个虚拟环境,其中加载了在 Python 2 和 Python 3 中处理数据所需的包。
要切换到 Python 2 虚拟环境,请运行以下 Virtualenvwrapper 命令:
$ workon py2-data
要切换到 Python 3 虚拟环境,请运行以下 Virtualenvwrapper 命令:
$ workon py3-data
然后开始使用已安装的软件包,例如:
$ ipython notebook
第 3 节:Python 数据分析介绍了已安装的软件包和用法。
要设置开发环境以使用 Spark、Hadoop MapReduce 和 Amazon Web Services,请运行aws.sh
脚本:
$ ./aws.sh
第 4 节:大数据、AWS 和 Heroku 介绍了已安装的软件包和用法。
要设置通用数据存储,请运行datastores.sh
脚本:
$ ./datastores.sh
第 5 节:数据存储描述了已安装的软件包和用法。
要设置 JavaScript Web 开发环境,请运行web.sh
脚本:
$ ./web.sh
第 6 节:Web 开发描述了已安装的软件包和用法。
要设置 Android 开发环境,请运行android.sh
脚本:
$ ./android.sh
第 7 节:Android 开发介绍了已安装的软件包和用法。
对于终端来说,文本编辑器是开发人员最重要的工具。每个人都有自己的偏好,但除非您是 Vim 的铁杆用户,否则很多人都会告诉您 Sublime Text 是目前最好的。
brew.sh 脚本安装 Sublime Text。
如果您想单独安装,请继续下载。打开.dmg文件,将其拖放到“应用程序”文件夹中。
注意:此时,我将在 OS X Dock 上为 Sublime Text 创建一个快捷方式。为此,请右键单击正在运行的应用程序,然后选择选项 > 保留在 Dock 中。
Sublime Text 不是免费的,但我认为它有无限的“评估期”。不管怎样,我们会经常使用它,即使看似昂贵的 70 美元的价格标签也值得每一分钱。如果你能负担得起,我建议你支持这个很棒的工具。
osx.sh 脚本包含 Sublime Text 配置。
Soda 主题是 Sublime Text 的一个很棒的 UI 主题,特别是如果您使用深色主题并且认为侧边栏像拇指酸痛一样突出。
如果您使用 Will Bond 出色的 Sublime Package Control,您可以通过Package Control: Install Package
菜单项轻松安装 Soda 主题。 Soda Theme 包在包列表中列为Theme - Soda
。
或者,如果您是 git 用户,则可以通过将存储库直接克隆到 Sublime Text 应用程序设置区域中的Packages
目录来安装主题并保持最新状态。
您可以使用菜单项Preferences -> Browse Packages...
找到 Sublime Text Packages
目录。
在Packages
目录中,使用以下命令克隆主题存储库:
$ git clone https://github.com/buymeasoda/soda-theme/ "Theme - Soda"
Sublime Text 2 -> Preferences -> Settings - User
"theme": "Soda Light.sublime-theme"
或"theme": "Soda Dark.sublime-theme"
Sublime Text 2 用户设置示例
{
"theme": "Soda Light.sublime-theme"
}
Sublime Text -> Preferences -> Settings - User
"theme": "Soda Light 3.sublime-theme"
或"theme": "Soda Dark 3.sublime-theme"
Sublime Text 3 用户设置示例
{
"theme": "Soda Light 3.sublime-theme"
}
虽然 Monokai 是一个很棒的配色方案,但我发现注释可能很难看到。您可以按照这些说明更改默认主题的颜色。
我将评论颜色设置为#E6DB74
。
<dict>
...
<dict>
<key>foreground</key>
<string>#E6DB74</string>
</dict>
...
</dict>
Atom 是来自 GitHub 的一款出色的开源编辑器,正在迅速获得贡献者和流行度。
brew.sh 脚本安装 Atom。
如果您喜欢单独安装,请下载它,打开.dmg文件,然后拖放到“应用程序”文件夹中。
Atom 有一个很棒的包管理器,可以让您轻松安装核心包和社区包。
既然我们在航站楼待了这么多时间,我们应该努力把它打造成一个更加愉快、丰富多彩的地方。
bootstrap.sh 脚本和 osx.sh 脚本包含终端自定义。
与普通终端相比,我更喜欢 iTerm2,因为它还有一些额外的出色功能。下载并安装 iTerm2(最新版本,即使它说“测试版”)。
在 Finder 中,将 iTerm 应用程序文件拖放到“应用程序”文件夹中。
您现在可以通过 Launchpad 等启动 iTerm。
让我们快速更改一些首选项。在 iTerm > 首选项... 的“配置文件”选项卡中,使用“+”图标创建一个新配置文件,并将其重命名为您的名字。然后,选择其他操作... > 设置为默认值。在“窗口”部分下,将大小更改为更好的值,例如“列:125”和“行:35”。我还喜欢设置“常规”>“工作目录”>“重用上一个会话的目录”。最后,我更改了选项键的工作方式,以便我可以按照此处所述在单词之间快速跳转。
完成后,点击左上角的红色“X”(在 OS X 首选项窗格中自动保存)。关闭窗口并打开一个新窗口以查看大小变化。
既然我们在航站楼待了这么多时间,我们应该努力把它打造成一个更加愉快、丰富多彩的地方。接下来的工作可能看起来很多,但相信我,它会让开发体验变得更好。
现在让我们添加一些颜色。我非常喜欢 Solarized 配色方案。从科学角度来看,它对眼睛来说应该是最佳的。我只是觉得它很漂亮。
此时,您还可以更改计算机的名称,该名称显示在该终端提示符中。如果您想这样做,请转到“系统偏好设置” > “共享” 。例如,我将我的名称从“Donne's MacBook Pro”更改为“MacBook Pro”,因此它在终端中显示为MacBook-Pro
。
现在我们有了一个可以使用的终端!
虽然 Sublime Text 将是我们的主要编辑器,但学习 Vim 的一些非常基本的用法是个好主意。它是终端内非常流行的文本编辑器,通常预安装在任何 Unix 系统上。
例如,当您运行 Git 提交时,它将打开 Vim 以允许您输入提交消息。
我建议你阅读 Vim 教程。掌握编辑器的两种“模式”的概念,插入(按i
)和正常(按Esc
退出插入模式),将是感觉最不自然的部分。之后它只是记住一些重要的按键。
bootstrap.sh 脚本包含 Vim 自定义。
VirtualBox 创建和管理虚拟机。对于其商业竞争对手VMware来说,这是一个可靠的免费解决方案。
brew.sh 脚本安装 VirtualBox
如果您喜欢单独安装,可以在此处下载或运行:
$ brew update
$ brew install caskroom/cask/brew-cask
$ brew cask install --appdir="/Applications" virtualbox
Vagrant 创建并配置开发环境。您可以将其视为 VirtualBox 和 Ansible、Chef、Puppet 和 Salt 等配置管理工具的更高级别包装器。 Vagrant 还支持 Docker 容器和 Amazon EC2 等服务器环境。
brew.sh 脚本安装 Vagrant。
如果您喜欢单独安装,可以在此处下载或运行:
$ brew update
$ brew install caskroom/cask/brew-cask
$ brew cask install --appdir="/Applications" vagrant
Docker 可自动在软件容器内部署应用程序。我认为下面的引述很好地解释了 docker:“Docker 是一种工具,可以将应用程序及其依赖项打包到可以在任何 Linux 服务器上运行的虚拟容器中。这有助于实现应用程序运行位置的灵活性和可移植性,无论是在本地还是在本地、公有云、私有云、裸机等”。
brew.sh 脚本安装 Docker。
如果您喜欢单独安装,可以在此处下载或运行:
$ brew update
$ brew install docker
$ brew install boot2docker
初始化并启动boot2docker
(只需执行一次):
$ boot2docker init
启动虚拟机:
$ boot2docker up
设置DOCKER_HOST
环境变量并根据boot2coker up
命令的输出填写 IP 和 PORT:
$ export DOCKER_HOST=tcp://IP:PORT
没有 Git 的开发人员算什么?
当您运行安装 Xcode 命令行工具部分时,应该已经安装了 Git。
要检查您的 Git 版本,请运行以下命令:
$ git --version
$ which git
应该输出/usr/local/bin/git
。
让我们设置一些基本配置。将 .gitconfig 文件下载到您的主目录:
$ cd ~
$ curl -O https://raw.githubusercontent.com/donnemartin/dev-setup/master/.gitconfig
它将为status
、 branch
和diff
Git 命令以及几个别名添加一些颜色。请随意查看该文件的内容,并根据您的喜好添加内容。
接下来,我们将定义您的 Git 用户(应与您用于 GitHub 和 Heroku 的名称和电子邮件相同):
$ git config --global user.name "Your Name Here"
$ git config --global user.email "[email protected]"
它们将被添加到您的.gitconfig
文件中。
要将代码推送到 GitHub 存储库,我们将使用推荐的 HTTPS 方法(相对于 SSH)。因此,您不必每次都输入用户名和密码,让我们启用 Git 密码缓存,如下所述:
$ git config --global credential.helper osxkeychain
注意:在 Mac 上,请务必记住将.DS_Store
(放置在文件夹中的隐藏 OS X 系统文件)添加到.gitignore
文件中。您可以查看此存储库的 .gitignore 文件以获取灵感。另请查看 GitHub 的 .gitignore 模板集合。
包管理器使安装和更新应用程序(对于操作系统)或库(对于编程语言)变得更加容易。 OS X 最流行的一种是 Homebrew。
brew.sh 脚本安装 Homebrew 和许多有用的 Homebrew 公式和应用程序。
如果您希望单独安装,请运行以下命令并按照屏幕上的步骤操作:
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
要安装软件包(或 Homebrew 词汇中的公式),只需键入:
$ brew install <formula>
要更新 Homebrew 的公式目录,请运行:
$ brew update
注意:我发现命令有时会因为错误而失败。如果发生这种情况,请运行以下命令(当您安装了 Git 时):
$ cd /usr/local
$ git fetch origin
$ git reset --hard origin/master
要查看是否有任何软件包需要更新:
$ brew outdated
要更新包:
$ brew upgrade <formula>
Homebrew 会保留已安装的旧版本软件包,以防您想要回滚。这很少是必要的,因此您可以进行一些清理以摆脱那些旧版本:
$ brew cleanup
要查看您已安装的内容(及其版本号):
$ brew list --versions
Ruby 已经安装在 Unix 系统上,但我们不想搞乱该安装。更重要的是,我们希望能够使用最新版本的Ruby。
brew.sh
提供了 rbenv 和 ruby-build,允许您在同一台计算机上管理多个版本的 Ruby。 brew.sh
将以下行添加到您的.extra
文件中以初始化rbenv
:
eval "$(rbenv init -)"
rbenv
使用ruby-build
下载、编译和安装新版本的 Ruby。您可以看到所有可供下载和安装的版本:
$ ruby-build --definitions
要安装新版本的 Ruby:
# list all available versions installed on the system:
$ rbenv install -l
# install a Ruby version:
$ rbenv install 2.2.3
切换 Ruby 版本:
# set a local application-specific Ruby version in the current directory
$ rbenv local 1.9.3
# set the global version of Ruby to be used in all shells
$ rbenv global 2.0.0
默认情况下, rbenv
会将 Ruby 版本安装到~/.rbenv/versions
下的同名目录中。因为您的用户拥有这个目录,所以您不再需要使用sudo
来安装 gems。
OS X 与 Linux 一样,出厂时已经安装了 Python。但你不想弄乱系统Python(一些系统工具依赖它等),所以我们将使用Homebrew安装我们自己的版本。它还将使我们能够获得最新版本的 Python 2.7 和 Python 3。
brew.sh 脚本安装最新版本的 Python 2 和 Python 3。
Pip 是 Python 包管理器。
pydata.sh 脚本安装 pip。
这里有几个 Pip 命令可以帮助您入门。要安装 Python 包:
$ pip install <package>
升级包:
$ pip install --upgrade <package>
要查看已安装的内容:
$ pip freeze
要卸载软件包:
$ pip uninstall <package>
Virtualenv 是一个为每个项目创建隔离的 Python 环境的工具。对于特定项目,最好不要全局安装所需的包,而是将它们安装在项目中的独立文件夹中(例如名为venv
的文件夹),该文件夹将由 virtualenv 管理。
优点是不同的项目可能需要不同版本的包,如果全局安装包将很难管理。它还允许您保持全局/usr/local/lib/python2.7/site-packages
文件夹干净。
pydata.sh 脚本安装 Virtualenv。
假设您在名为myproject
的目录中有一个项目。要为该项目设置 virtualenv:
$ cd myproject/
$ virtualenv venv --distribute
如果您希望 virtualenv 也继承全局安装的包(如上面提到的 IPython 或 Numpy),请使用:
$ virtualenv venv --distribute --system-site-packages
这些命令会在您的项目中创建一个venv
子目录,其中安装了所有内容。不过,您需要先激活它(在您正在处理项目的每个终端中):
$ source venv/bin/activate
您应该会在终端提示符的开头看到(venv)
表明您正在 virtualenv 中工作。现在当你安装一些东西时:
$ pip install <package>
它将安装在venv
文件夹中,并且不会与其他项目冲突。
重要提示:请记住将venv
添加到项目的.gitignore
文件中,这样就不会在源代码中包含所有这些内容!
Virtualenvwrapper 是一组扩展,其中包括用于创建和删除虚拟环境以及管理开发工作流程的包装器,从而可以更轻松地同时处理多个项目,而不会在其依赖项中引入冲突。
主要特点包括:
pydata.sh 脚本安装 Virtualenvwrapper。
创建一个新的虚拟环境。当您创建新环境时,它会自动成为活动环境:
$ mkvirtualenv [env name]
删除现有的虚拟环境。必须先停用环境(见下文),然后才能将其删除:
$ rmvirtualenv [env name]
激活虚拟环境。如果没有传递参数,还将列出所有现有的虚拟环境:
$ workon [env name]
停用当前活动的虚拟环境。请注意,workon 将在激活新环境之前自动停用当前环境:
$ deactivate
Anaconda 是 Python 编程语言的免费发行版,用于大规模数据处理、预测分析和科学计算,旨在简化包管理和部署。
pydata.sh 脚本安装运行 Python 数据应用程序所需的包。或者,您可以安装更重量级的 Anaconda。
按照说明安装 Anaconda 或更轻量级的 miniconda。
IPython 是一个很棒的项目,它提供了比在命令行中运行$ python
获得的更好的 Python shell。它有许多很酷的功能(从 Python shell 运行 Unix 命令、轻松复制和粘贴、内联创建 Matplotlib 图表等),我将让您参考文档来发现它们。
IPython Notebook 是一个基于 Web 的交互式计算环境,您可以在其中将代码执行、文本、数学、绘图和富媒体组合到单个文档中。
pydata.sh 脚本安装 IPython Notebook。如果您想单独安装它,请运行:
$ pip install "ipython[notebook]"
如果您遇到有关 pyzmq 的问题,请参阅以下 Stack Overflow 帖子并运行:
$ pip uninstall ipython
$ pip install "ipython[all]"
$ ipython notebook
如果您想查看一些示例,这里有一些我大量使用 IPython Notebooks 的存储库:
NumPy 添加了对大型多维数组和矩阵的 Python 支持,以及用于对这些数组进行操作的大型高级数学函数库。
pydata.sh 脚本安装 NumPy。如果您想单独安装它,请运行:
$ pip install numpy
请参阅以下 Numpy IPython 笔记本。
Pandas 是一个用 Python 编写的用于数据操作和分析的软件库。提供用于操作数值表和时间序列的数据结构和操作。
pydata.sh 脚本安装 Pandas。如果您想单独安装它,请运行:
$ pip install pandas
请参阅以下 pandas IPython 笔记本。
Matplotlib 是一个 Python 2D 绘图库,可以以各种硬拷贝格式和跨平台的交互环境生成出版质量的图形。
pydata.sh 脚本安装 matplotlib。如果您想单独安装它,请运行:
$ pip install matplotlib
请参阅以下 matplotlib IPython 笔记本。
Seaborn是一个基于matplotlib的Python可视化库。它提供了一个高级接口来绘制有吸引力的统计图形。
pydata.sh 脚本安装 matplotlib。如果您想单独安装它,请运行:
$ pip install seaborn
请参阅以下带有 Seaborn IPython Notebooks 的 matplotlib。
Scikit-learn 添加了对大型多维数组和矩阵的 Python 支持,以及用于对这些数组进行操作的大型高级数学函数库。
pydata.sh 脚本安装 Scikit-learn。如果您想单独安装它,请运行:
$ pip install scikit-learn
请参阅以下 scikit-learn IPython 笔记本。
SciPy 是基于 Python 的 Numpy 扩展构建的数学算法和便利函数的集合。它通过提供以下功能为交互式 Python 会话添加了重要功能: