假设我们想要在Mac OS X中安装:
MySQL,这是一个开源的免费的数据库,当然备Oracle收购之后有一些变化。
postgreSQL,这又是另外一个开源的免费的数据库。
perl,这是一种流行的编程语言。
lua,这又是另外一种流行的编程语言。
watch,这是一个实用程序,可以默认每隔2秒重复执行某条命令,比如你想监控一个目录下的文件生成情况,这条命令就很有用。
tree,这是一个实用程序,可以提供类似于ls -R的功能,但是输出是更加直观的树状结构。
当然,我们可以在网络中一个一个地找这些程序,然后一个一个地安装,用不同的安装方法,但是,你也可以选择非常简单的方法,这就是本文要介绍的MacPorts。
在Linux中如果我们要安装一些软件,要解决各个软件之间的包依赖性关系,我们会使用到apt-get(Ubuntu)或者yum(Redhat,CentOS)或者zypper(openSUSE),如果你熟悉一些Linux的话,对于这些软件包管理程序应该有所耳闻。而MacPorts正是在Mac OS X上的软件包管理程序。
安装MacPorts最简单的方法是直接下载dmg文件,双击安装 - Lion版安装文件 | Snow Leopard版安装文件。
MacPorts安装完以后,我们就可以通过命令行的方式来安装其它软件了,可以参看具体命令文档。以下列出常用的命令:
1. 更新本地软件库列表,该命令可以不定时多次执行(sudo以后需要输入密码,输入你自己用户的密码即可)。
sudo port selfupdate
2. 列出软件库中有哪些软件,注意,该命令会输出大量软件名称,因此建议添加more来查看,或者使用后面的search命令。
port list | more
3. 检索需要安装的软件。
port search
当然,还有更精确地搜索,比如如果直接port search tree会出现上百个结果,但是如果执行以下命令,就只会出现一个结果。
$ port search --name --exact tree
tree @1.6.0 (sysutils)
display tree-view of directories with optional color/HTML output
4. 列出已经通过port安装的软件。
port installed
5. 安装软件,一些具有依赖性的软件会连带自动安装,比如安装LUA,会安装ncurses和readline。
sudo port install
6. 卸载软件。
sudo port uninstall
7. 清理未成功安装的软件,比如一些软件由于编译问题或者其它原因没有安装成功。
sudo port clean --all
8. 查看安装的软件都安装了哪些内容。
port contents
比如查看tree都安装了哪些内容。
$ port contents tree
Port tree contains:
/opt/local/bin/tree
/opt/local/share/doc/tree/CHANGES
/opt/local/share/doc/tree/LICENSE
/opt/local/share/doc/tree/README
/opt/local/share/man/man1/tree.1.gz
9. 升级当前安装过的软件。
sudo port upgrade
升级全部有新版本的软件。升级以后将会保留以前的旧版本,只是将旧版本设置为Inactive。
sudo port upgrade outdated
当确认新版本软件工作正常以后,可以通过以下命令删除所有旧版本软件。
sudo port uninstall inactive
或者通过以下命令,删除指定的旧版本软件。
sudo port uninstall makedepend @1.0.2_0
如果想在升级的时候就直接删除旧版本软件,可以在upgrade时使用-u参数。
sudo port -u upgrade
10. Troubleshooting
由于MacPorts与Xcode联系紧密,因此如果在升级完操作系统(比如从10.8升级到10.9),可能之前运行正常的MacPorts就无法使用了,比如出现以下报错。
localhost:~ Kamussudo port selfupdate
WARNING: Improper use of the sudo command could lead to data loss
or the deletion of important system files. Please double-check your
typing when using sudo. Type "man sudo" for more information.
To proceed, enter your password, or type Ctrl-C to abort.
Password:
---> Updating MacPorts base sources using rsync
MacPorts base version 2.1.2 installed,
MacPorts base version 2.2.1 downloaded.
---> Updating the ports tree
---> MacPorts base is outdated, installing new version 2.2.1
Installing new MacPorts release in /opt/local as root:admin; permissions 0755; Tcl-Package in /Library/Tcl
Error: /opt/local/bin/port: port selfupdate failed: Error installing new MacPorts base: command execution failed
localhost:~ Kamus sudo port selfupdate
---> Updating MacPorts base sources using rsync
MacPorts base version 2.1.2 installed,
MacPorts base version 2.2.1 downloaded.
---> Updating the ports tree
---> MacPorts base is outdated, installing new version 2.2.1
Installing new MacPorts release in /opt/local as root:admin; permissions 0755; Tcl-Package in /Library/Tcl
Error: /opt/local/bin/port: port selfupdate failed: Error installing new MacPorts base: command execution failed
解决方法是将Xcode的Command Line Tools再安装一遍,通过以下方法。
$ sudo xcode-select --install
然后再运行port命令就功能正常了。
localhost:~ Kamus$ sudo port selfupdate
---> Updating MacPorts base sources using rsync
MacPorts base version 2.1.2 installed,
MacPorts base version 2.2.1 downloaded.
---> Updating the ports tree
---> MacPorts base is outdated, installing new version 2.2.1
Installing new MacPorts release in /opt/local as root:admin; permissions 0755; Tcl-Package in /Library/Tcl
The ports tree has been updated. To upgrade your installed ports, you should run
port upgrade outdated
学习了,谢谢大师