在Mac OS X 10.6 Snow Leopard上安装Mercurial

14

在Mac OS X 10.6雪豹上安装Mercurial

我使用以下方法从源代码安装了Mercurial 1.3.1:

cd ~/src
curl -O https://www.mercurial-scm.org/release/mercurial-1.3.1.tar.gz
tar -xzvf mercurial-1.3.1.tar.gz
cd mercurial-1.3.1
make all
sudo make install

这将在/usr/local/lib/python2.6/site-packages/中安装Mercurial的site-packages文件。我知道从Mac Disk Image安装Mercurial会将文件安装到/Library/Python/2.6/site-packages/,这是Mac OS X默认Python安装的site-packages目录。

我已经安装了Python 2.6.2+作为框架,并将其site-packages目录设置在:

 

/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages

使用这种方式安装Mercurial后,我必须执行以下命令:

 

PYTHONPATH=/usr/local/lib/python2.6/site-packages:"${PYTHONPATH}"

才能使Mercurial正常工作。

问题

  • 如何从源代码安装Mercurial并将site-packages安装到不同的目录?
  • 将site-packages放在当前位置有优势还是劣势?将其放置于现有的Python site-package目录中是否更好?
  • 我需要担心virtualenv是否正常工作,因为我修改了PYTHONPATH(或其他任何冲突)吗?

从源代码安装的原因

Dan BenjaminHivelogic在他的文章“在Snow Leopard上安装Mercurial”中提供了从源代码安装Mercurial的好处和说明。


Macports是一个选择;然而,在这种情况下,我对从源代码安装Mercurial感兴趣。对我来说,使用Mercurial自行更新似乎很自然,尽管您必须解决先有鸡还是先有蛋的问题,这也是我提出问题的原因。 - Matthew Rankin
5个回答

13

为什么需要使用MacPorts?Python的easy_install是最简单和无错误的方法:


easy_install -U mercurial

这只是一个简单的金弹头,一直如此。


通过macports或easy_install安装都是可选的。然而,我的问题是关于从源代码安装Mecurial。 - Matthew Rankin

8

将mercurial - 或任何Python包 - 安装到您的用户主目录中。这样,您就可以从任何Python(相同版本)或任何虚拟环境中访问它们。有关详细信息,请参见PEP 370

$ cd mercurial-x.y.z/
$ python2.6 setup.py install --user
$ ~/.local/bin/hg
...

但是为什么你想要手动构建mercurial?我使用macports

$ sudo port install mercurial
$ which hg
/opt/local/bin/hg
更新:现在我只是使用PyPM将mercurial安装到 ~/.local/bin/hg 中。

8
特别是如果您有Python 2.6可用,您可以执行以下操作:python setup.py install --user,这将使用~/.local作为前缀安装Mercurial。您不需要更改PYTHONPATH,只需将~/.local/bin添加到PATH即可。
关于优缺点:这完全取决于您的PYTHONPATH通常看起来像什么,因为修改它自然会修改软件包的加载顺序(如果您安装了一个版本的Mercurial并使用不同的前缀安装了另一个版本,则这变得相关)。一般来说,我尝试将所有自定义软件包放入特定的site-packages文件夹中(例如/usr/local/lib/python2.6/site-packages)。再次强调:如果您是唯一使用这些库的人,则Python 2.6的distutils提供的--user标志使此类操作非常容易(通过将~/.local添加到模块的默认搜索路径中)。
只要您的PYTHONPATH被一致地使用,virtualenv应该可以正常工作。

5

正如Sridhar所建议的,MacPorts在多种架构和版本的MacOSX上都可以正常工作,并允许更新等功能:

$ port variants mercurial
mercurial has the variants:
   bash_completion: Completion support for bash
   zsh_completion: Install mercurial zsh completion file
$

这样你就可以使用:

$ sudo port install mercurial +bash_completion
--->  Computing dependencies for mercurial
--->  Fetching mercurial
--->  Attempting to fetch mercurial-1.3.1.tar.gz from http://arn.se.distfiles.macports.org/python
--->  Attempting to fetch mercurial-1.3.1.tar.gz from http://www.selenic.com/mercurial/release/
--->  Verifying checksum(s) for mercurial
--->  Extracting mercurial
--->  Configuring mercurial
--->  Building mercurial
--->  Staging mercurial into destroot
--->  Installing mercurial @1.3.1_0+bash_completion
--->  Activating mercurial @1.3.1_0+bash_completion
--->  Cleaning mercurial
$

1

所有这些答案对于普通的Mac OS X用户来说都很复杂,因为它们是针对其他安装平台特定的。目前Mercurial网站提供一个安装程序包(压缩为zip文件)。


2
有链接给我们吗?(很傻,SO不允许我的评论是“链接?”(太短了。)) - Olie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接