这是我的情况:

我在用Ubuntu 10.04(Lucid Lynx)。系统的默认Python为v2.6.5,但我需要Python v2.7。因此,我从python.org下载了源,并尝试安装它。

我第一次安装它时,我跑了:

cd Python2.7.4
./configure --prefix=/usr
make
su root
make install

这会将 Python 2.7 安装到我的系统中。/usr/bin链接到python2.7也在/usr/bin。所以当我输入>python,该系统将对我启动Python 2.7.4,就像我输入时一样>python2.7

但是当我这样安装时:

cd Python2.7.4
./configure --prefix=/usr
make
su root
make altinstall

链接" python"/usr/bin仍然存在并链接到python2.6这是默认系统版本。当然,我可以将其删除并创建一个新的软链接,以链接到python2.7

命令" make install"和" make altinstall"有什么区别,除了链接/usr/bin

答案

让我们看一下生成的makefile!

首先,安装目标:

install:         altinstall bininstall maninstall

它做了一切altinstall确实,以及bininstallmaninstall

这是bininstall;它只是创建python和其他符号链接。

# Install the interpreter by creating a symlink chain:
#  $(PYTHON) -> python2 -> python$(VERSION))
# Also create equivalent chains for other installed files
bininstall:     altbininstall
        -if test -f $(DESTDIR)$(BINDIR)/$(PYTHON) -o -h $(DESTDIR)$(BINDIR)/$(PYTHON); \
        then rm -f $(DESTDIR)$(BINDIR)/$(PYTHON); \
        else true; \
        fi
        (cd $(DESTDIR)$(BINDIR); $(LN) -s python2$(EXE) $(PYTHON))
        -rm -f $(DESTDIR)$(BINDIR)/python2$(EXE)
        (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python2$(EXE))
        ... (More links created)

这是maninstall,它只是创建了与Python手册页面的"无依关系"链接。

# Install the unversioned manual pages
maninstall:     altmaninstall
        -rm -f $(DESTDIR)$(MANDIR)/man1/python2.1
        (cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python$(VERSION).1 python2.1)
        -rm -f $(DESTDIR)$(MANDIR)/man1/python.1
        (cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python2.1 python.1)

总而言之:altinstall跳过创建python链接和手册页链接,install将隐藏系统二进制文件和手动页面。

来自: stackoverflow.com