it-swarm-vi.com

Tôi nên tự cài đặt phần mềm ở đâu?

Tôi cần biên dịch một số phần mềm trên máy Fedora của mình. Đâu là nơi tốt nhất để đặt nó để không can thiệp vào phần mềm đóng gói?

130
theotherreceive

Nguyên tắc chung, ít nhất là trên các hệ thống có hương vị Debian:

  • /usr/local cho những thứ "toàn hệ thống". /usr/local có xu hướng ở mặc định của một bản phân phối $PATH và tuân theo phân cấp thư mục UNIX tiêu chuẩn với /usr/local/bin, /usr/local/lib, Vân vân.

  • /opt cho những thứ bạn không tin tưởng để tạo ra toàn hệ thống, với tiền tố trên mỗi ứng dụng là i.e. /opt/firefox-3.6.8, /opt/mono-2.6.7, và như thế. Những thứ ở đây đòi hỏi phải quản lý cẩn thận hơn, nhưng cũng ít có khả năng phá vỡ hệ thống của bạn và dễ dàng gỡ bỏ hơn vì bạn chỉ cần xóa thư mục và nó đã biến mất.

92
directhex

Nếu bạn thực sự không muốn nó can thiệp gì cả, đừng đặt nó ở bất cứ đâu trong $PATH.

Nếu bạn muốn nó trong $PATH, Ít nhất hãy đảm bảo không cài đặt thành /usr/local. Tôi đã thấy rằng rất nhiều phần mềm trông ở đó ngay cả khi phần mềm được cài đặt bởi distro vào /usr.

Cách ưa thích của tôi để cài đặt phần mềm được biên dịch tùy chỉnh là trong thư mục $HOME Của tôi. Bằng cách đó, bạn không phải sử dụng Sudo cho bất cứ điều gì và nó được phân tách rất độc đáo với phần còn lại của hệ thống. Ví dụ:

mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install

Và nếu bạn muốn, sau đó bạn có thể thêm /home/username/stage/bin Vào $PATH.

50
Sandy

FHS nói hãy đặt nó vào/usr/local nơi phân phối không được chạm vào nó. /usr/local/bin cho các nhị phân /usr/local/src cho nguồn và /usr/local/lib cho các thư viện. Xem thông số FHS để biết thêm thông tin

21
xenoterracide

Hầu hết thời gian, tôi thích đặt công cụ biên dịch của riêng mình vào /opt. Đó là một nơi giả chuẩn. Bạn cũng có thể xem xét /usr/local, nhưng tôi thích giữ công cụ của mình cách ly 100%.

10
Scott Anderson

Đặt chúng vào /usr/local/src.

Những gì tôi làm là trích xuất nguồn trong thư mục này. Nó sẽ tạo ra một con đường như

/usr/local/src/postgresql-8.3.7

Sau đó, tôi tạo một liên kết tượng trưng cho nó:

/usr/local/src # ln -s  postgresql-8.3.7 postgresql

Làm tất cả tòa nhà của bạn trong /usr/local/src/postgresql.

Làm mọi thứ theo cách này sẽ giúp ích khi bạn cần bật giữa các phiên bản và tài liệu về phiên bản bạn đang sử dụng.

9
Stephen Jazdzewski

Điều này nhắc nhở tôi, tôi cần sử dụng checkinstall thường xuyên hơn! Bằng cách đó tôi chỉ làm như bình thường

 ./configure
 make

theo dõi bởi

 Sudo checkinstall

để tạo tệp . deb ...

6
Kevin Cantu

Theo FHS , /usr/local/ được sử dụng cho các ứng dụng được biên dịch từ nguồn, trong khi /opt/ được sử dụng cho các ứng dụng bên thứ 3 không được nhà cung cấp hệ điều hành của bạn hỗ trợ.

5
Aaron Toponce

Nếu có khả năng - Tôi khuyên bạn nên biên dịch phần mềm của mình và sau đó tạo gói FC (tôi tin rằng nó sử dụng yum để cài đặt gói phần mềm). Sau đó, bạn có thể cài đặt gói phần mềm được biên dịch của riêng bạn và gỡ bỏ nó mà không làm hỏng toàn bộ hệ thống.

5
Eimantas

Nếu bạn muốn có thể dễ dàng cài đặt và xóa một số ứng dụng do mình tự xây dựng, bạn có thể sử dụng Stow như một trình quản lý gói đơn giản.

5
Daniel James

Hai điều tôi khuyên bạn nên:

Toàn hệ thống: sử dụng stow và cài đặt theo/usr/local/stow/gói-phiên bản. Sau đó, bạn có thể dễ dàng chuyển đổi giữa các phiên bản.

Ở nhà tôi, hoặc nếu tôi không có quyền/usr/local write, cá nhân tôi cài đặt các chương trình theo ~/.local, được gợi ý bởi tiêu chuẩn XDG .

Bạn cũng có thể sử dụng stow cục bộ, mặc dù tôi chưa bao giờ làm :)

4
elmarco

Thực sự không khó để tạo ra deb hoặc vòng/phút từ tarball nguồn. Bằng cách đó, bạn có thể sử dụng các tiện ích của trình quản lý gói của distro để giữ cho hệ thống của bạn sạch sẽ. Đây là những gì tôi làm, hầu hết thời gian: chỉ cần tạo ra một vòng/phút nhỏ.

3
wzzrd

Tôi có một chút thiết lập khác với hầu hết mọi người vì tôi phát triển rất nhiều. Tôi có một thư mục/home/jackson/bin/mà tôi cài đặt vào đó và tôi đã chỉnh sửa .bashrc của mình thêm vào đây:

export PATH=/home/jackson/bin/bin::$PATH
export LD_LIBRARY_PATH=/home/jackson/bin/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/jackson/bin/lib/pkgconfig:$PKG_CONFIG_PATH

Tôi sẽ không làm điều này cho tất cả mọi thứ, nhưng nó rất hay trong quá trình phát triển.

3
jacksonh

nếu bạn đang biên dịch một ứng dụng, bạn có thể thêm đường dẫn thực thi của nó trong biến env PATH của bạn. Điều này sẽ không ảnh hưởng đến người dùng khác.

2
Hemant

Luôn luôn có tùy chọn "đặt nó ở nơi nó thuộc về" nhưng trước tiên hãy viết một vòng/phút đơn giản.

2
Nils

Nếu bạn muốn ứng dụng của mình khả dụng cho tất cả người dùng trên hệ thống và bạn có các quyền cần thiết, hãy sử dụng/opt. Nếu bạn muốn ứng dụng chỉ khả dụng cho bạn (và root), hãy sử dụng/home/tên người dùng

1
Silviu Bogan

Viết một RPM, nó không khó, có hướng dẫn về nơi đặt mọi thứ và làm cho việc gỡ cài đặt nhanh chóng.

Nếu bạn làm điều này, cài đặt các tệp trong /usr và không dưới /usr/local, giống như tất cả các tệp khác đi qua hệ thống đóng gói.

0
user55149

Cách dễ nhất để làm điều này là lấy gói nguồn (.src.rpm cho RPMites), giải nén nó, hack nguồn/cấu hình mới/bất cứ thứ gì vào nó, thay đổi phiên bản một cách thích hợp và xây dựng. Cài đặt này làm cho trình quản lý gói của bạn biết gói mới, cho phép xem xét gói phụ thuộc và gỡ cài đặt/cập nhật.

Đây là một việc vặt lần đầu tiên, nhưng nếu một phiên bản mới (hoặc một số bản vá quan trọng) xuất hiện, thì việc cập nhật sẽ đơn giản hơn. Một lợi ích khác là bạn có thể tạo kho lưu trữ của riêng mình bằng phần mềm cục bộ, để được chia sẻ, ví dụ: bởi các máy móc trong phòng thí nghiệm.

0
vonbrand