Vị trí cài đặt thông thường cho các ứng dụng trong Linux là gì?


72

Tôi hiện đang cài đặt NetBeans và thư mục cài đặt mặc định là /home/thomasowens/netbeans-6.8. Tôi không phải là fan hâm mộ của vị trí đó, vì vậy tôi nhìn vào /etc, /bin, /usr/bin, và /sbin. Linux có một nơi mà theo quy ước, giống như C:\Program Filesthư mục của Windows không?

Câu trả lời:


98

Theo Tiêu chuẩn phân cấp hệ thống tập tin , có một số nơi có thể chấp nhận được, tùy thuộc vào ứng dụng. Tôi đang trích dẫn từ nó rộng rãi ở đây.

  • bin tất nhiên là viết tắt của "nhị phân"
  • sbin là viết tắt của "máy chủ nhị phân", nếu không được định nghĩa là:

    Các tiện ích được sử dụng cho quản trị hệ thống (và các lệnh chỉ gốc khác)

  • /usr dành cho dữ liệu có thể chia sẻ, chỉ đọc và có thể chia sẻ giữa các máy chủ tuân thủ FHS khác nhau (nếu bạn có nhiều máy trên mạng và chúng đều có cùng kiến ​​trúc, bạn có thể chia sẻ một thư mục / usr với mọi máy trên mạng)

  • /usr/local được quản trị viên hệ thống sử dụng khi cài đặt phần mềm cục bộ (nghĩa là, đối với các ứng dụng chỉ được cài đặt trên máy này, không phải trên mọi máy trên mạng).

Kết hợp những thứ này lại với nhau:

  • /usr/bin là thư mục chính của các lệnh thực thi trên hệ thống.
  • /usr/sbin dành cho mọi nhị phân không thiết yếu được sử dụng bởi quản trị viên hệ thống.
  • Chương trình quản trị hệ thống được yêu cầu để sửa chữa hệ thống, khôi phục hệ thống, lắp đặt / usr, hoặc các chức năng cần thiết khác phải được đặt trong /sbinthay (ví dụ, những điều bạn cần phải truy cập để gắn kết /usr/sbinđi vào /sbin)
  • Tương tự, các lệnh người dùng thiết yếu có thể cần thiết trước khi /usrđược gắn vào/bin
  • Bất cứ điều gì chỉ được cài đặt trên máy cục bộ nên đi vào /usr/local/binhoặc/usr/local/sbin

Có một cách sử dụng khác cho / usr / local. Hầu hết mọi thứ bạn cài đặt thông qua trình quản lý gói của distro sẽ được đặt trong / usr; thay vào đó, nhiều người đặt những thứ họ đã biên soạn bằng tay / usr / local. Điều này giúp họ tránh khỏi hệ thống quản lý gói và cho phép bạn phát hiện những gì bạn đã cài đặt từ bản phân phối (và không cần sao lưu vì bạn có thể lấy lại) và những gì bạn đã biên dịch bằng tay; nó cũng cho phép bạn chạy các phiên bản khác nhau cùng một lúc (ví dụ: / usr / bin / firefox vs / usr / local / bin / firefox).


Ngay khi bạn nghĩ mọi thứ đã ổn định, có một nơi khác, có lẽ là nơi tương đương gần nhất c:\Program Files- /opt:

/opt được dành riêng cho việc cài đặt các gói phần mềm ứng dụng bổ trợ.

/optcó lẽ là tương đương gần c:\program files, ở chỗ nó là một nơi mà bạn mong đợi để tìm một ứng dụng với tất cả các file của nó với nhau trong một thư mục, thay vì rải rác khắp /usr/bin, /var/etc. Nó thường chỉ được sử dụng bởi các gói rất lớn, nhưng trong trường hợp này, do Netbeans muốn có thư mục riêng của mình, có lẽ sẽ hợp lý nhất khi đặt nó dưới / opt / netbeans


3
hấp dẫn. nếu tôi đã thiết kế Linux, tôi sẽ đặt các ứng dụng được chia sẻ mạng vào / usr / shared và sau đó đặt các ứng dụng máy chủ cục bộ riêng tư vào / usr. bằng cách đó tôi có thể chia sẻ / usr / chia sẻ mà không cần, thông qua thừa kế, chia sẻ / usr.
djangofan

1
Câu trả lời thực sự tốt đẹp. Tôi cũng thích bình luận về việc giữ mọi thứ tránh khỏi hệ thống quản lý gói.
DaveParillo

1
Chắc chắn / chọn "gói bên thứ 3 đầy đủ". Hầu hết các cài đặt sẽ phân chia các nhị phân, thư viện, tệp, v.v. thành các thư mục khác nhau, nhưng khi bạn có thư mục "tất cả trong một", / opt giúp bạn dễ dàng xử lý.
Avery Payne

Vài câu hỏi nhanh: 1) Nếu / usr được cho là có thể chia sẻ được trong số tất cả các máy trên mạng, điều đó không có nghĩa là tất cả các thư mục con cũng có thể chia sẻ được, do đó làm cho / usr / cục bộ hiển thị với các máy khác trên mạng? 2) FHS 3 là gì) Khi bạn nói về các lệnh cần thiết để gắn / usr, bạn có đang nói về cách hệ điều hành khởi động từ, giả sử, tắt máy không? Tôi xin lỗi vì đã bắn phá các câu hỏi 7 năm sau, nhưng tôi mới biết về Linux và có câu hỏi tương tự sau khi thấy hướng dẫn cài đặt nói nơi để đặt công cụ, nhưng không phải TẠI SAO để đặt nó ở đó. +1 btw
Ungeheuer

5

Thực sự nó đi xuống sở thích cá nhân. Tôi sẽ giải thích cho tôi về những gì nó có giá trị.

/ usr, / usr / bin thường là nơi dành cho phần mềm được cài đặt bởi hệ thống sẽ được cài đặt. Khi tôi tự cài đặt mọi thứ, tôi sẽ cài đặt chúng ở một trong nhiều nơi:

  1. Nếu đó chỉ là tập lệnh hoặc chương trình nhỏ mà tôi sẽ sử dụng, tôi sẽ cài đặt nó trong ~ / bin - đây là nơi hầu hết các công cụ của tôi kết thúc.
  2. Nếu nó giống như bạn mô tả (NetBeans) với một cây tệp đầy đủ của riêng nó, tôi sẽ cài đặt nó trong / opt
  3. Nếu nó là một tệp thực thi duy nhất, tôi sẽ cài đặt nó trong / usr / local / bin

Tại sao tôi phân biệt giữa # 2 & # 3? Không có ý tưởng, đó chỉ là một thói quen mà tôi đã phát triển theo thời gian. Nó thực sự phát hiện ra rằng / opt thường kết thúc việc trở thành một tập tin sâu, nhưng chỉ có 2 hoặc 3 'thứ' thực tế được cài đặt. Tại thời điểm này, tôi có các ghi chú lampp và hoa sen được cài đặt trong opt, 2 thư mục mà mỗi thư mục đều có những cái cây khá lớn bên dưới chúng. Trong / usr / local / bin, tôi có 20 hoặc 30 mục, nhưng không có thư mục con.

Tôi không cài đặt những thứ trong / usr / bin hoặc / usr / sbin vì tôi muốn giữ những thứ mà tôi thêm thủ công (không phải là một phần của việc cài đặt đơn giản từ kho lưu trữ tiêu chuẩn).


1

Trong khi Tiêu chuẩn phân cấp hệ thống tập tin cung cấp một số hướng dẫn. Tôi thấy rằng hầu hết các bản phân phối muốn cài đặt các gói vào /usr/share.

Vì điều này, tôi đã áp dụng thực tiễn cài đặt bất kỳ ứng dụng nào không được cài đặt thông qua trình quản lý gói (rpm / apt-get / emerge) trong /usr/local. Điều này cho phép tôi giữ các ứng dụng và thư viện không được quản lý thông qua quản lý gói tách biệt với các ứng dụng.

Đó là một kỹ thuật đã giúp tôi quản lý hệ thống của mình dưới cả Fedora Core và Gentoo.


0

Tôi đã có thể nghĩ rằng vị trí mặc định là /bin, đó là nơi mọi thứ được cài đặt theo mặc định nếu sử dụng apt-get hoặc tương tự ...

... Tuy nhiên, khi nói đến các chương trình hiện đại hơn (hoặc các chương trình không có trình cài đặt) có nhiều tệp bổ sung, tôi muốn đặt chúng trong thư mục riêng của chúng trong đó /bin.


3
Sự khác biệt giữa / bin, / usr / bin và / sbin là gì? / bin có ý nghĩa nhất, vì nó dành cho các tệp BINary.
Thomas Owens

0

Thông thường họ cài đặt trong nhiều thư mục, chủ yếu là / usr, / local, / bin, v.v. Bạn có thể tìm hiểu nơi chương trình cài đặt từ Trình cài đặt GDebi (trong tab tệp). Nếu bạn định chuyển Netbeans, tôi khuyên bạn nên chuyển nó sang / opt, bởi vì đó là nơi Google dường như cài đặt công cụ của nó.


0

Đồng ý với câu trả lời của James Polley, nhưng trên thực tế, thư mục mặc định có rất nhiều ý nghĩa trừ khi bạn cần chia sẻ ứng dụng giữa nhiều tài khoản. Ví dụ, tôi cần cài đặt Eclipse 3.0 (lỗi thời) để thực hiện Flex hoạt động trong Linux và tôi đặt nó trong $ HOME / eclipse3.


0

Tôi thích sử dụng / ứng dụng cho hầu hết các ứng dụng bổ trợ mà tôi cài đặt trên nhiều máy chủ. Tôi giữ một bản sao của thư mục trong / installs / apps trên máy chủ nfs của tôi. Khi tôi tạo bất kỳ máy chủ linux mới nào, tôi gắn thư mục cài đặt và sao chép / ứng dụng và tôi có nhiều ứng dụng phổ biến khác nhau trên máy chủ mới. Tôi xóa những mục tôi không cần cho máy chủ mới này và tôi đã hoàn thành. Chà, có lẽ tôi cần chạy một tập lệnh hoặc ba tập lệnh để thiết lập các biến môi trường hoặc câu lệnh đường dẫn nhưng đó là những gì cần thiết để thiết lập nhiều máy chủ mới.

Tôi đến từ nền tảng Windows và .net. Một trong những lời hứa của .net là hầu hết các ứng dụng có thể được cài đặt bằng cách sử dụng Windows xcopy. Tôi tìm kiếm điều tương tự trong Linux. Nếu có sẵn, tôi chọn tarball qua RPM hoặc yum, v.v. để tôi có thể triển khai đến / ứng dụng với cp -r và thêm ứng dụng vào máy chủ nfs của mình để triển khai trong tương lai.


2
Câu hỏi yêu cầu quy ước. Bạn đã mô tả những gì bạn làm, cá nhân. Bạn có thể ít nhất liên quan điều này với một hội nghị?
fixer1234
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.