"make install"和"make altinstall"之间的细节差异

qiu*_*989 58 install makefile

这是我的情况:

我正在使用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
Run Code Online (Sandbox Code Playgroud)

这会将Python 2.7安装到我的系统中.它将创建一个链接,"python",也/usr/bin链接到.因此,当我输入时,系统将为我启动Python 2.7.4,就像我输入时一样.python2.7/usr/bin>python>python2.7

但是当我以这种方式安装时:

cd Python2.7.4
./configure --prefix=/usr
make
su root
make altinstall
Run Code Online (Sandbox Code Playgroud)

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

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

Col*_*lin 98

我们来看看生成的Makefile!

一,安装目标:

install:         altinstall bininstall maninstall
Run Code Online (Sandbox Code Playgroud)

它做的一切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)
Run Code Online (Sandbox Code Playgroud)

而这里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)
Run Code Online (Sandbox Code Playgroud)

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

  • 很棒的答案,但TLDR应该在最上面。 (5认同)
  • TLDR si 通常在末尾。 (5认同)
  • 确切地说,`man`程序在运行时查找已安装的手册页.要在运行`altinstall`之后查看2.7手册页,你需要使用`man python2.7` (3认同)
  • 可以在 [Python 的 UNIX 文档](https://docs.python.org/3/using/unix.html?highlight=altinstall#building-python) 中找到关于使用 `make altinstall` 而不是 `make install` 的具体指导。 (2认同)

小智 20

简单地说:altinstall目标将确保您机器上的默认 Python 不被触及,或者避免覆盖系统Python。