web-dev-qa-db-fra.com

Différence de détails entre "make install" et "make altinstall"

Voici mon cas:

J'utilise buntu 10.04 (Lucid Lynx). La valeur par défaut du système Python est v2.6.5, mais j'ai besoin de Python v2.7. J'ai donc téléchargé la source depuis python.org et essayé de l'installer).

La première fois que je l'ai installé, j'ai couru:

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

Cela installe Python 2.7 sur mon système. Il créera un lien, "python", dans /usr/bin lien vers python2.7 aussi dans /usr/bin. Alors quand je tape >python, le système démarrera Python 2.7.4 pour moi comme lorsque je tape >python2.7.

Mais quand j'installe de cette façon:

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

Le lien "python" dans /usr/bin existe toujours et des liens vers python2.6 qui est la version système par défaut. Bien sûr, je peux le supprimer et créer un nouveau lien logiciel menant à python2.7.

Quelle est la différence entre la commande "make install" et "make altinstall", à l'exception du lien dans /usr/bin?

50
qiuhan1989

Jetons un coup d'œil au Makefile généré!

Tout d'abord, la cible d'installation:

install:         altinstall bininstall maninstall

Il fait tout altinstall, avec bininstall et maninstall

Voici bininstall; il crée simplement le python et d'autres liens symboliques.

# 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)

Et voici maninstall, il crée simplement des liens "non versionnés" vers les pages de manuel 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 ignore la création du lien python et des liens des pages de manuel, install masquera les fichiers binaires du système et les pages de manuel.

89
Collin