/ Usr / bin / install làm gì ngoài việc sao chép?


11
  1. Có phải make installvới một Makefile hầu hết các cuộc gọi thời gian /usr/bin/install?

  2. Những công việc cần thiết làm /usr/bin/installgì ngoài việc sao chép các tập tin vừa biên dịch vào /usr/bin/local?

  3. Trang man nói /usr/bin/installcác tập tin sao chép và đặt thuộc tính. Những thuộc tính nào là rất quan trọng để thiết lập?

  4. Có phải nó chỉ đặt chế độ cho phép và chủ sở hữu / nhóm, không cần thiết?

"Có thực hiện cài đặt với Makefile hầu hết thời gian gọi / usr / bin / install không?" Không, nó làm bất cứ điều gì nó muốn. Đó là một mục tiêu thực hiện. Là câu hỏi của bạn về cài đặt thực thi? Hay về làm cho? Nó không rõ ràng.
Faheem Mitha

cả hai. @FaheemMitha
Tim

Ok, tốt, 1 và 2 là những câu hỏi khác nhau, và câu trả lời cho 1, có lẽ là không, nhưng định nghĩa "hầu hết thời gian". Dù sao thì tôi cũng không chắc về điểm 1.
Faheem Mitha

Câu trả lời:


17

install cung cấp một số tính năng ngoài việc sao chép tập tin vào một thư mục.

  • các -stùy chọn loại bỏ các bảng biểu tượng từ một, tiết kiệm không gian thực thi
  • các -mtùy chọn thiết lập bit cho phép. Các tập tin trong thư mục của nhà phát triển đã được tạo theo chủ đề của họ, điều này có thể ngăn người khác thực thi chúng. install -m 755 file1 /usr/local/binđảm bảo rằng tất cả mọi người có thể thực thi tệp, đó có thể là những gì nhà phát triển muốn cho một tệp trong thư mục dùng chung.
  • các -o-gtùy chọn thiết lập các chủ sở hữu và nhóm. Với cp, chủ sở hữu và nhóm của tệp đích sẽ được đặt thành uid và gid của bất kỳ ai đã chạy cp, và với cp -p, chủ sở hữu và nhóm của tệp đích sẽ giống như tệp trong thư mục bản dựng, không ai trong số đó có thể là những gì nhà phát triển muốn. Các wallchương trình cần phải được trong nhóm tty, các screenchương trình cần phải được nhóm utmpvv
  • nó làm giảm số lượng các lệnh cần được đặt trong một công thức makefile. install -s -m 755 -o root -g bin file1 file2 lib/* $(DESTDIR)là hơn gọn gàng hơn bốn lệnh cp, strip, chmod, và chown.

Điểm đạn cuối cùng có khả năng là lý do tại sao installlệnh được phát minh và tại sao nhiều makefile sử dụng nó.

Installkhông phải lúc nào cũng được sử dụng Tôi đã thấy cp -r lib $(DESTDIR)/libkhi có toàn bộ cây để sao chép và ./install.shnếu nhà phát triển thích sử dụng tập lệnh tùy chỉnh. Nhiều gói có install.shnguồn gốc từ gói đi kèm với X11, giống như installnhưng hỗ trợ -ttùy chọn (biến đổi) để đổi tên các tệp đích theo cách được chỉ định.


2
  1. Vì những lệnh nào được sử dụng trong makefile chủ yếu phụ thuộc vào các nhà phát triển dự án, nên rất khó để đưa ra câu trả lời chắc chắn ở đây. Nói chung tôi sẽ nói rằng nên sử dụng installlệnh trong tệp tạo tệp cho bất kỳ quy trình cài đặt nào được đề cập trong 2, nhưng một lần nữa installkhông phải là POSIX vì vậy luôn luôn sử dụng nó có thể không phải là cách tiếp cận dễ dàng nhất

    AFAIK hầu hết các công cụ có thể được sử dụng để tự động tạo tệp tạo tệp thích automakecmakesẽ sử dụng install.

  2. Thường installđược sử dụng để sao chép tệp và đặt quyền / chủ sở hữu / nhóm trong một lệnh như bạn nói. Một chức năng thường được sử dụng khác là loại bỏ các ký hiệu không cần thiết (ví dụ: các biểu tượng gỡ lỗi) khỏi tệp nhị phân không còn cần đến chúng nữa. Nó cũng có một vài tùy chọn bổ sung cho những việc như tạo bản sao lưu trước khi cài đặt và hoạt động trong bối cảnh SELinux có thể hữu ích.

Quyền nào để chọn phụ thuộc vào chính tệp. Hầu hết các tệp được cài đặt đều có thể đọc được bởi mọi người, nhưng chỉ có thể ghi bằng root (ý tưởng là đặt các tệp chương trình ở nơi mọi người có thể truy cập nhưng không thể bị giả mạo). Đây không phải là trường hợp của tất cả mọi thứ, nếu tệp chứa dữ liệu nhạy cảm thì thông thường giới hạn quyền truy cập vào một nhóm hoặc chỉ root.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.