2013-04-15 24 views
31

Đây là trường hợp của tôi:Sự khác biệt về chi tiết giữa "make install" và "make altinstall"

Tôi đang sử dụng ubuntu10.04 và trăn mặc định của hệ thống là 2.6.5. Nhưng tôi cần python phiên bản 2.7. Vì vậy, tôi đã tải xuống mã nguồn từ python.org và cố cài đặt nó.

Đây là lần đầu tiên tôi cài đặt nó:

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

này sẽ cài đặt python2.7 trong hệ thống của tôi, nó sẽ tạo ra một liên kết "trăn" trong/usr/bin liên kết đến python2.7 cũng trong/usr/bin. Vì vậy, khi tôi gõ> python, hệ thống sẽ bắt đầu python 2.7.4 cho tôi giống như khi tôi gõ> python2.7.

Nhưng nếu tôi cài đặt theo cách này:

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

Liên kết "trăn" trong/usr/bin vẫn còn tồn tại và liên kết với python2.6 đó là phiên bản mặc định của hệ thống. Tất nhiên tôi có thể loại bỏ nó và tạo một liên kết mềm mới liên kết đến python2.7.

Câu hỏi của tôi là sự khác biệt giữa lệnh "make install" và "make altinstall" ngoại trừ liên kết trong/usr là gì?

Cảm ơn bạn trước.

Trả lời

53

Chúng ta hãy xem Makefile đã tạo!

Thứ nhất, mục tiêu cài đặt:

install:   altinstall bininstall maninstall 

Nó tất cả mọi thứ altinstall có, cùng với bininstallmaninstall

Dưới đây là bininstall, nó chỉ tạo ra python và các liên kết tượng trưng.

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

Và đây là maninstall, nó chỉ tạo liên kết "không phiên bản" với các trang hướng dẫn sử dụng 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 bỏ qua việc tạo ra các liên kết python và các liên kết của nhãn hiệu trang, install sẽ ẩn những chương trình hệ thống và hướng dẫn trang.

+0

Ok, câu trả lời này là tốt và tôi hiểu. Cảm ơn bạn. Tôi có một câu hỏi nữa là bạn vừa đề cập đến "cài đặt chính" được sử dụng để tạo các trang thủ công. Ý bạn là gì đối với "trang thủ công"? Kết quả của lệnh "man python"? – qiuhan1989

+2

Chính xác, chương trình 'man' tìm các trang hướng dẫn cài đặt khi nó được chạy. Để xem 2,7 trang man sau khi chạy 'altinstall', bạn sẽ cần sử dụng' man python2.7' – Collin

+0

Ok, câu trả lời rất rõ ràng! Cảm ơn nhiều! – qiuhan1989

Các vấn đề liên quan