Подтвердить что ты не робот

Разница в деталях между "make install" и "make altinstall"

Вот мой случай:

Я использую ubuntu10.04, а python по умолчанию - 2.6.5. Но мне нужна версия python 2.7. Поэтому я загрузил источник с python.org и попытался установить его.

Вот первый раз, когда я его устанавливаю:

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

Это установит python2.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?

Спасибо заранее.

4b9b3361

Ответ 1

Посмотрим на сгенерированный 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)

Tl; dr: altinstall пропустит создание ссылки python и ссылок на страницы руководства, install скроет системные двоичные файлы и страницы руководства.