什么是MacPorts?

MacPorts是使用于Mac OS中第三方包管理工具。

MacPorts让你可以轻松编译、安装和管理开源软件。MacPorts可以分为两个核心部分:MacPort base和MacPorts ports。

每个MacPorts port都是一个Portfile,在这个文件中定义了这是什么应用、它的特性,安装它所需要的文件和指令。通过Portfile,你可以只执行一条命令就完成下载、编译和安装应用和库文件。通过MacPorts管理开源软件还有些其他的好处。例如:

  1. 为指定的port自动安装所有依赖包。

  2. 为安装的port提供卸载和升级功能。

  3. 将所有port限制在一个沙盒内,这样它就不会影响操作系统且不易崩溃。

  4. 让你可以为port预编译二进制的安装包,这样你就可以在其他地方快速安装该包而无需重新编译它的源代码。

MacPorts是在Mac OS X上开发的,但是它便于携带且可用于其他类Unix系统,尤其是BSD及其分支版本。

如何安装MacPorts?

1. 首先安装XCode。

    XCode是由苹果公司提供的开发包,它包含了编译器、代码库和其他用于开发Mac OS X应用的工具。

  你可以通过Mac App StoreApple developer website下载XCode,你也可以在网上搜索相关资源。(点击这里下载 XCode 5.1.dmg

  注意:请确保你的Mac OS X版本安装了和它匹配的最新的XCode,使用过期版本会造成port安装失败。另外需要注意的是在OS 10.6之前,XCode不是通过Mac OS X的Software Update Utility进行升级,在Mac OS X 10.7之后,它通过Mac App Store升级。

2. 安装MacPorts。

  如果你使用的是Mac OS X,你最好使用Mac OS X Package Installer来安装MacPorts,除非你不想将MacPorts安装到它的默认目录(/opt/local/)。

  2.1. Mac OS X Package Installer

    Mac OS X Package Installer能自动安装MacPorts,设置shell environment,并且运行selfupdate命令来更新ports tree和MacPorts base。

    你可以从MacPorts download directory下载最新的MacPorts Installer。以下直接给出几个OS X版本用到的下载链接:

      a. OS X 10.7 Lion: MacPorts-2.2.1-10.7-Lion.pkg

      b. OS X 10.8 Mountain Lion: MacPorts-2.2.0-10.8-MountainLion.pkg

      c. OS X 10.9 Mavericks: MacPorts-2.2.1-10.9-Mavericks.pkg

    下载完成后,直接双击Package Installer执行默认安装即可,安装完毕后,打开一个新的终端,执行:

$ port version
Version: 2.2.

    如果安装成功,则可以看见版本号,如果出现 command not found,可以尝试在这里(MacPorts and the Shell)查找原因。

3. 使用MacPorts。

  MacPorts port 命令是与MacPorts交互的主要手段。它用于更新Portfiles、MacPorts基础部件,安装和管理ports。

  3.1. help - 帮助命令。如果给出操作名称,则显示该操作的简要说明,如果没有给出操作名称,则显示port命令使用方法的基本说明。

$ port help
port
[-bcdfknopqRstuvy] [-D portdir] [-F cmdfile] action [privopts] [actionflags]
[[portname|pseudo-portname|port-url] [@version] [+-variant]... [option=value]...]... Supported actions
------------------
activate, archive, archivefetch, build, cat, cd, checksum, clean, configure,
contents, deactivate, dependents, deps, destroot, dir, distcheck, distfiles,
dmg, dpkg, echo, edit, exit, extract, fetch, file, gohome, help, info,
install, installed, lint, list, livecheck, load, location, log, logfile,
mdmg, mirror, mpkg, notes, outdated, patch, pkg, platform, portpkg,
provides, quit, rdependents, rdeps, rev-upgrade, rpm, search, select,
selfupdate, setrequested, space, srpm, sync, test, unarchive, uninstall,
unload, unsetrequested, upgrade, url, usage, variants, version, work Pseudo-portnames
----------------
Pseudo-portnames are words that may be used in place of a portname, and
which expand to some set of ports. The common pseudo-portnames are:
all, current, active, inactive, actinact, installed, uninstalled, outdated,
obsolete, requested, unrequested and leaves.
These pseudo-portnames expand to the set of ports named. Pseudo-portnames starting with variants:, variant:, description:, depends:,
depends_lib:, depends_run:, depends_build:, depends_fetch:, depends_extract:,
portdir:, homepage:, epoch:, platforms:, platform:, name:, long_description:,
maintainers:, maintainer:, categories:, category:, version:, revision:, and
license: each select a set of ports based on a regex search of metadata
about the ports. In all such cases, a standard regex pattern following
the colon will be used to select the set of ports to which the
pseudo-portname expands. Pseudo-portnames starting with depof:, rdepof:, dependentof:, and rdependentof:
select ports that are direct or recursive dependencies or dependents of the
following portname, respectively. Portnames that contain standard glob characters will be expanded to the
set of ports matching the glob pattern. Port expressions
----------------
Portnames, port glob patterns, and pseudo-portnames may be logically
combined using expressions consisting of and, or, not, !, (, and ). For more information
--------------------
See man pages: port(), macports.conf(), portfile(), portgroup(),
porthier(), portstyle(). Also, see http://www.macports.org. xaviermavericks:~ Xavier$ port help selfupdate
Usage: selfupdate --nosync Upgrade MacPorts itself and run the sync target

  

  3.2. selfupdate - 该操作用于更新MacPorts,该操作应该经常执行,来将本地的ports tree和全球MacPorts ports仓库同步以便你保持最新的port版本。同时它也会检查MacPorts base,并及时更新它。

  注意:selfupdate操作只适用于Mac OS X。如果你在其他平台运行MacPorts,你需要通过sync操作来更新ports tree,安装最新的MarPorts来更新当前MarPorts base。

  $ sudo port selfupdate - 更新当前ports tree和MacPorts base。

  $ sudo port -d selfupdate - Debug模式更新,会显示更新详情。

  3.3. sync - 同步ports tree,但不检查MacPorts base。

  3.4. list - 列出给定的ports的当前有效版本,如果未给定ports,则列出全部有效ports。因为全部的列表很长,如果你知道某个port名称,最好使用search操作。

xaviermavericks:~ Xavier$ port list
AppHack @1.1 aqua/AppHack
... xaviermavericks:~ Xavier$ port list zope-zsyncer
zope-zsyncer @0.6. zope/zope-zsyncer

  3.5. search - 该操作会搜索与给定名称或描述相匹配的结果。

  3.6. info - 获取port详细信息:描述,维护者等等。

  3.7. deps - 显示port的依赖包,这些依赖包需要在Portfile中明确列出才行。

xaviermavericks:~ Xavier$ port deps apache2
Full Name: apache2 @2.2.26_0+preforkmpm
Library Dependencies: apr, apr-util, expat, openssl, pcre, perl5, zlib

  3.8. variants - 该操作让你可以在安装port前检查它的不同变体。Variants是port的作者提供一些参数,让MacPorts在安装过程中使用。

xaviermavericks:~ Xavier$ port variants nmap
nmap has the variants:
no_pcre: build without pcre support
no_ssl: build without ssl support
universal: Build for multiple architectures
zenmap: build zenmap in addition to nmap

  3.9. install - 安装port,如果该port有variants,可以通过增加variants或者去除默认variants来进行安装。

普通安装
$ sudo port install nmap 添加variant安装
$ sudo port install nmap +no_ssl 去除variant安装
$ sudo port install fetchmail -ssl

  3.10. clean - 清理操作,用于删除MacPorts在build一个port时产生的临时文件。它还经常用于fetch操作失败后的清理崩溃了的文件。

sudo port clean --all vile

  3.11. uninstall - 卸载操作,卸载port。

  注意:要同时递归删除port所依赖的开发包,使用--follow-dependencies标记。如果该开发包有其他开发包依赖于它,它将不会被删除。

$ sudo port uninstall --follow-dependencies vile

  要在删除当前port前删除所有依赖于它的开发包,使用--follow-dependents。

$ sudo port uninstall --follow-dependents ncurses

  如果要删除一个port,但这个port又是其他ports所依赖的对象,那么MacPorts不会删除它,除非你先删除那些依赖于此包的开发包。你可以使用-f参数来强制执行删除。但谨慎使用,除非你真的很确定你在做什么。

  3.12. contents - 内容操作,显示某个port安装过的文件。

  3.13. installed - 列出已安装port。显示已安装的版本、变体和激活状态。使用 -v 参数显示该port是在哪个平台哪个cpu结构下build的。

xaviermavericks:~ Xavier$ port -v installed python27
The following ports are currently installed:
python27 @2.7.6_0 (active) platform='darwin 13' archs='x86_64'

  3.14. outdated - 列出过期port。使用该操作前先selfupdate或者sync一下,以便对比当前已安装port是否都是最新版本。

  3.15. upgrade - 更新操作。当一个Portfile发生更新时,使用该命令来更新它对应的port及其依赖包。如果你只想更新port,不想更新它的依赖包,那么可以使用 -n 参数,但记住,这样往往会有故障发生。

普通更新
$ sudo port upgrade gnome 只更新port,不更它的依赖包
$ sudo port -n upgrade gnome 更新所有过期port
$ sudo port upgrade outdated

    upgrade 默认更新行为是下载新的版本并启用它,但不会删除旧的版本。如果你要更新新版本同时卸载旧版本,使用 -u 参数。

$ sudo port -u upgrade vile

  3.16. dependents - 列出所有依赖本包的开发包。

xaviermavericks:~ Xavier$ port dependents python27
nodejs depends on python27
py27-pip depends on python27
py27-setuptools depends on python27

  3.17. livecheck - 检查远程仓库该port是否有更新。

  3.18. lint - 检查Portfile是否符合规范。

xaviermavericks:~ Xavier$ port lint python27
---> Verifying Portfile for python27
---> errors and warnings found.

  3.19. select - 在指定的分组,选择一个默认版本并创建链接。例如,python 可能被链接到 python 2.6。可用的 select 分组被安装在 ${prefix}/etc/select/ 的子目录中,使用 --summary 参数列出所有分组。要列出分组中的可用版本,使用 --list。查看当前分组选择的版本,使用 --show。要变更分组中选择的版本使用 --set。

port select --summary
port select --show python
port select --list python
port select --set python python34

参考:MacPorts Official Guide

[OSX] 在 OS X 中安装 MacPorts 指南的更多相关文章

  1. (转)[OSX] 在 OS X 中安装 MacPorts 指南

    原地址:http://www.cnblogs.com/ifantastic/p/3677066.html 什么是MacPorts? MacPorts是使用于Mac OS中第三方包管理工具. MacPo ...

  2. 如何在 OS X 中安装 ruby

    如何在 OS X 中安装 ruby 软件包下载 链接: http://pan.baidu.com/s/1mgMil5I 密码: tiqg 安装 http://brew.sh/ 1. 先安装 brew( ...

  3. Mac OS X 中安装JDK 7

    通过Mac系统的更新安装Java的版本均为JDK 6的版本,如果想要在Mac上安装JDK 7,就需要到Oracle的网站上去下载相应的安装包. 下面为详细教程: 最新版本为JDK8,目前需求JDK7够 ...

  4. Mac OS X 中安装JDK7

    1. 下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 当前版本1.7.0_ ...

  5. 在 Ubuntu 中安装 MySQL 指南

    安装MySQL 在Ubuntu上可以使用Ubuntu Software Center或者apt命令来安装MySQL,两种方式都十分方便. 1. 使用Ubuntu Software Center:打开U ...

  6. Mac OS X 中安装 brew

    不想被误导?直接看官方文档:   http://mxcl.github.com/homebrew/    先安装Git,打开一个shell cd /usr/local sudo mkdir homeb ...

  7. Mac OS X 下安装python的MySQLdb模块

    参考资料: mac os x下python安装MySQLdb模块   http://www.codeif.com/post/1073/ MAC OSX使用Python安装模块有关问题  http:// ...

  8. 如何在Mac OS X 中运行Lua (Running Lua on Mac OS X)

    参考文章:1) http://www.oschina.net/question/12_769552) http://rudamoura.com/luaonmacosx.html 最近在为iOS开发游戏 ...

  9. Mac OS X中MacPorts的安装使用备忘

    Mac下面除了用dmg.pkg来安装软件外,比较方便的还有用MacPorts来帮助你安装其他应用程序,跟BSD中的ports道理一样.MacPorts就像apt-get.yum一样,可以快速安装些软件 ...

随机推荐

  1. Ubuntu 地址导航栏修改为显示路径及如何恢复原模式?

    在Ubuntu中,文件位置默认不是和Windows地址栏一样的(位置项),而是显示是路径名称组合(路径栏),这对于文件路径的获得复制很不方便.比如,获得某个文件德 路径,如果是地址栏,直接复制一下就可 ...

  2. MFC绘图基础——上机操作步骤

    一.上机之前的介绍 软件环境:VC++6.0 目的:熟悉基本的MFC框架搭建和了解界面 二.MFC上机操作步骤 1,在Windows桌面上运行VC++6.0. 2,新建项目工程文件. 3,在MFC 应 ...

  3. Linux 下查看某个进程运行的堆栈信息

    1. 根据进程名称查询进程ID ps -ef | grep processName 2. 将进程的堆栈信息写入log gstack processId > s.log 3. 查看log vim ...

  4. Java如何处理已检查异常?

    在Java编程中,如何处理已检查异常? 此示例显示如何使用catch块处理已检查的异常. package com.yiibai; public class HandleCheckedException ...

  5. e774. 创建JList组件

    By default, a list allows more than one item to be selected. Also, the selected items need not be co ...

  6. e610. Setting Focus Traversal Keys in a Component

    When the focus is on a component, any focus traversal keys set for that component override the defau ...

  7. (原)从mp4,flv文件中解析出h264和aac,送解码器解码失败

    转载请注明出处:http://www.cnblogs.com/lihaiping/p/5285166.html 今天在做本地文件解码测试,发现从mp4,flv文件中读出来的帧数据,h264和aac帧直 ...

  8. (转)ffmpeg 从mp4上提取H264的nalu

     出自:http://blog.csdn.net/gavinr/article/details/7183499   1.获取数据ffmpeg读取mp4中的H264数据,并不能直接得到NALU,文件中也 ...

  9. mysql -- 远程访问mysql的解决方案

    1.改表法 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "u ...

  10. FusionCancer-人类癌症相关的融合基因的数据库

    RNA-seq 测序可以用于融合基因的发现,在过去的十几年里,RNA-seq 测序数据不断增加,发现的融合基因的数据也不断增加: FusionCancer 是一个人类癌症相关的融合基因的数据库,利用N ...