Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile “之间的细节差异”;“使安装”;及;制作altinstall“;_Makefile_Installation - Fatal编程技术网

Makefile “之间的细节差异”;“使安装”;及;制作altinstall“;

Makefile “之间的细节差异”;“使安装”;及;制作altinstall“;,makefile,installation,Makefile,Installation,我的情况如下: 我正在使用(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”,链接到/usr/bin中的python2.7。因此,当我键入>py

我的情况如下:

我正在使用(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”,链接到
/usr/bin
中的
python2.7
。因此,当我键入
>python
时,系统将为我启动python2.7.4,就像我键入
>python2.7
时一样

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

cd Python2.7.4
./configure --prefix=/usr
make
su root
make altinstall
/usr/bin
中的链接“python”仍然存在,并且链接到默认系统版本的
python2.6
。当然,我可以删除它并创建一个新的软链接,链接到
python2.7


除了
/usr/bin
中的链接,命令“makeinstall”和“makealtinstall”之间有什么区别?

让我们看看生成的Makefile

首先,安装目标:

install:         altinstall bininstall maninstall
它完成了
altinstall
的所有功能,以及
bininstall
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
将隐藏系统二进制文件和手动页面。

好的,这个答案很好,我理解。非常感谢。我还有一个问题,就是你刚才提到的“maininstall”用于创建手册页面。“手册页”是什么意思?“man python”命令的结果?确切地说,
man
程序在运行时查找已安装的手册页。要在运行
altinstall
后查看2.7手册页,您需要使用
man python2.7
有关在
make install
上使用
make altinstall
的具体指导。答案非常棒,但TLDR应该位于顶部。TLDR通常位于末尾。
# 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)