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 がシステムにインストールされます。/usr/binへのリンクにpython2.7も「python」というリンクを作成し/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作成をスキップし、システム バイナリとマニュアル ページを非表示にします。pythoninstall

于 2013-04-15T15:16:27.643 に答える