【问题标题】:Difference in details between "make install" and "make altinstall"“make install”和“make altinstall”在细节上的区别
【发布时间】:2013-04-07 18:16:09
【问题描述】:

这是我的情况:

我正在使用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 中创建一个链接“python”,链接到python2.7 也在/usr/bin 中。所以当我输入>python时,系统将为我启动Python 2.7.4,就像我输入>python2.7时一样。

但是当我这样安装时:

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

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

“make install”和“make altinstall”命令有什么区别,除了/usr/bin中的链接?

【问题讨论】:

    标签: makefile installation


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我们来看看生成的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”的结果?
      • 没错,man 程序在运行时会查找已安装的手册页。要在运行 altinstall 后查看 2.7 手册页,您需要使用 man python2.7
      • make install 上使用make altinstall 的具体指导可以在Python's UNIX documentation 中找到。
      • 很棒的答案,但 TLDR 应该在顶部。
      • TLDR si 按照惯例放在最后。
      猜你喜欢
      • 2021-11-04
      • 2019-01-21
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多