2013-04-15 11 views
31

Qui è il mio caso:Differenza di dettagli tra "make install" e "rendere altinstall"

Sto usando l'ubuntu10.04 e il pitone di default del sistema è 2.6.5. Ma ho bisogno di Python versione 2.7. Così ho scaricato il codice sorgente da python.org e ho provato ad installarlo.

Ecco la prima volta che lo installo:

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

Questo installerà python2.7 nel mio sistema, si creerà un collegamento "pitone" in/usr/bin collegamento a python2.7 anche in/usr/bin. Quindi quando scrivo> python, il sistema avvierà python 2.7.4 per me proprio come quando scrivo> python2.7.

Ma se installo in questo modo:

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

Il link "pitone" in/usr/bin esiste ancora e sul collegamento di python2.6 che è la versione di default del sistema. Ovviamente posso rimuoverlo e creare un nuovo soft link che collega a python2.7.

La mia domanda è qual è la differenza tra il comando "make install" e "make altinstall" tranne il link in/usr?

Grazie in anticipo.

risposta

53

Diamo un'occhiata al Makefile generato!

In primo luogo, l'obiettivo di installazione:

install:   altinstall bininstall maninstall 

Fa tutto altinstall fa, insieme a bininstall e maninstall

Ecco bininstall, si crea solo le python e altri collegamenti simbolici.

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

Ed ecco maninstall, si crea solo collegamenti "senza versione" alle pagine di manuale di pitone.

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

Tl; dr: altinstall salta la creazione del collegamento python ei collegamenti pagine di manuale, install nasconderà i binari di sistema e le pagine di manuale.

+0

Ok, questa risposta è buona e capisco. Grazie. Ho un'ulteriore domanda che hai appena citato il "maininstall" è usato per creare le pagine di manuale. Cosa intendi per "manuale"? Il risultato del comando "man python"? – qiuhan1989

+2

Esatto, il programma 'man' cerca le pagine di manuale installate quando viene eseguito. Per vedere le pagine man di 2.7 dopo aver eseguito 'altinstall', dovrai usare' man python2.7' – Collin

+0

Ok, risposta molto chiara! Grazie mille! – qiuhan1989