1. ホーム
  2. makefile

[解決済み] make installとmake altinstallの違いについて

2023-03-31 05:10:23

質問

以下は私の場合です。

私は 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をインストールします。Python"というリンクが /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 ?

どのように解決するのですか?

生成された 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 マニュアルページへの "unversioned" リンクを作成するだけです。

# 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 はシステムバイナリとマニュアルページを隠します。