“ make install”和“ make altinstall”之间的细节差异


74

这是我的情况:

我正在使用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

Answers:


121

让我们看一下生成的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)

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


好的,这个答案很好,我了解。谢谢。我还有一个问题,就是您刚刚提到“ maininstall”用于创建手册页。您对“手册页”是什么意思?命令“ man python”的结果?
qiuhan1989

3
确实,该man程序在运行时会查找已安装的手册页。要在运行后查看2.7手册页altinstall,您需要使用man python2.7
Collin

1
有关使用make altinstallover的特定指南,请make install参见Python的UNIX文档
布雷特·坎农

17
很棒的答案,但TLDR应该在最上面。
Ryuu

3
TLDR通常是在末尾。
Reda Drissi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.