91

这是我的情况:

我正在使用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 安装到我的系统中。它将在链接中创建一个链接“python”,/usr/binpython2.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

4

2 回答 2

149

我们来看看生成的Makefile!

一、安装目标:

install:         altinstall bininstall maninstall

它做所有事情altinstallbininstall以及maninstall

这是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)

TLDR:altinstall跳过创建python链接和手册页链接,install将隐藏系统二进制文件和手册页。

于 2013-04-15T15:16:27.643 回答
0

Altinstall 将确保您机器上的默认 python 未被触及。

于 2021-12-28T23:54:18.483 回答