2011-10-08 22 views
5

Tôi mới sử dụng Linux và tôi chỉ từng làm phiền với nó nhưng bây giờ tôi muốn cho phép chương trình Java của tôi chạy trên Linux ...Vị trí và Cách lưu trữ thông tin chương trình trong Linux

I ' đã có một cái nhìn nhanh chóng trên internet, và tôi đã tìm thấy một danh sách các thư mục và các ghi chú của họ. /usr/lib dường như là nơi tốt nhất cho tôi để lưu trữ thông tin chương trình, nhưng tôi đã chỉ cần nhìn vào đó trên VM VirtualBox của tôi và nó xuất hiện mà tôi không thể viết ở đó, ngay cả với quyền root. Vì vậy, nếu có ai có thể chỉ cho tôi đúng hướng sẽ rực rỡ. Tôi cũng đã nhận thấy rằng Linux có "Trung tâm Phần mềm" riêng của mình, và tôi sợ rằng tôi có thể đi sai hướng về tất cả điều này, vì vậy có thể là một dạng giới thiệu về lập trình trên Linux sẽ giúp ích nếu có ai đó sẽ đủ tử tế để cung cấp!

cảm ơn trước

PS Virtual Machine của tôi là một phân phối Ubuntu

+0

Linux là hạt nhân, bạn có đang nói về Ubuntu không? – Lekensteyn

+0

Thuật ngữ được đưa ra sau đó là 'Solaris'? Bạn biết đấy, như Ubuntu và Gnome - tất cả những hệ điều hành sử dụng Linux! Nhưng có, trong trường hợp cụ thể này tôi đang thử nghiệm với Ubuntu ... – Andy

+2

Solaris và Linux đều là UNIX. Solaris không phải là một loại Linux. –

Trả lời

4

Cấu trúc hệ thống tệp của không chỉ Linux, nhưng bất kỳ hệ thống tương thích POSIX nào (bao gồm BSD, Solaris, và đến một mức độ thấp hơn ngay cả Mac OS X) đều được tiêu chuẩn hóa trong FHS. Cụ thể cho Ubuntu, hãy xem Debian policy for Javapackaging guide của nhóm ubuntu-java.

Nếu chương trình của bạn chạy tương tác, nó sẽ lưu trữ thông tin (như cơ sở dữ liệu và cài đặt) trong $HOME/.your-program-name (hoặc $HOME/.config/your-program-name). Nếu chương trình của bạn là một dịch vụ hệ thống, nó sẽ lưu trữ thông tin của nó trong /var/lib. Bạn cũng có thể cài đặt cấu hình mặc định thành /etc/your-program-name.

Các tệp nhị phân là một giao dịch hoàn toàn khác và tiền tố cho vị trí của chúng có thể được định cấu hình. Để có được toàn bộ lợi thế của Trung tâm Phần mềm và các cơ chế phụ thuộc/cập nhật của nó, hãy package phần mềm của bạn. Những tệp nhị phân này (và các thư viện đi kèm với chúng) sẽ chuyển thành cây /usr/ nếu được đóng gói và /usr/local/ nếu được cài đặt theo cách thủ công. Bất kể tiền tố, mã nhị phân nào đi vào bin (ví dụ: /usr/bin), thư viện thành lib32/lib64 và các dữ liệu khác vào share.

Nếu bạn không muốn gói chương trình của mình và không muốn theo cấu trúc do FHS áp đặt (nhưng bạn thực sự nên làm điều đó), cách thay thế là đặt mã và các đối tượng khác vào /opt/your-program-name. Lưu ý rằng dữ liệu (có thể thay đổi) mà chương trình của bạn tạo ra và hoạt động vẫn nên đi vào $HOME/.your-program-name (tương tác) hoặc /var/lib/your-program-name (dịch vụ).

+0

+1 để đề cập đến các dịch vụ hệ thống và '/ var/lib /' – ZeissS

+0

Điều này phức tạp hơn nhiều so với lần đầu tiên tôi mong đợi, và 'home/.program-name' dường như không hoàn toàn phù hợp với tôi, đặc biệt là xem xét rằng tôi không thể nhìn thấy bất cứ điều gì khác trong đó vào phút ... Lý do tại sao tôi đề cập đến' usr/lib 'là vì tôi các chương trình khác dường như nằm trong đó, nhưng trên suy nghĩ thứ hai, tôi đã tải chúng xuống thông qua Trung tâm phần mềm. Vì vậy, nếu tôi không sử dụng trung tâm phần mềm, thư mục chính có phải là nơi tôi nên cài đặt chương trình của mình không? – Andy

+0

@Andy Trên thực tế, nó không phức tạp như nó trông. Nơi bạn cài đặt dữ liệu chương trình của bạn hoạt động trên ** không ** phụ thuộc vào việc bạn cài đặt chương trình của mình theo cách thủ công hay với trung tâm phần mềm. Chú ý đường dẫn là * không * '/ home/.program-name', nhưng'/home/user/.program-name'. Trong Java, sử dụng 'System.getProperty (" user.home ")' để lấy thư mục chính đó. – phihag

5

Lưu trữ nó dưới thư mục chính của người sử dụng, người đang chạy chương trình - trong một thư mục ẩn (bắt đầu bằng dấu chấm), cho ví dụ: .program-data. Đường dẫn ngắn đến nó sẽ là: ~/.program-data và đường dẫn đầy đủ đến nó phụ thuộc vào bản phân phối của hệ điều hành - thường là/home/[tên người dùng] /. Program-data

+2

Thuộc tính hệ thống cần tìm là "user.home" , sẽ cung cấp đường dẫn đến thư mục chính, như: System.getProperty ("user.home") – Kennet

0

Nơi đơn giản nhất để lưu trữ ứng dụng nằm trong thư mục chính. Bạn có thể muốn tạo một người dùng và thư mục chính riêng cho một dịch vụ.

Tuy nhiên, có vẻ như bạn đang viết một dòng lệnh hoặc công cụ GUI trong Java. Một nơi phổ biến để lưu trữ các ứng dụng nằm trong thư mục bin như /usr/local/bin hoặc /home/myuser/binlib thường dành cho các thư viện được tải bởi các ứng dụng.(Java không sử dụng chúng)

+0

Tôi đang làm một GUI trong Java thực sự, nhưng tôi dường như không thể ghi vào '/ usr/local/bin' ngay cả với quyền root và '/ home/user/bin' không tồn tại! Ngoài ra, không có bất kỳ chương trình nào khác được lưu trữ trong thư mục đầu tiên sao !? Vì vậy, tôi vẫn cần một nơi để lưu trữ chương trình thực thi! '/ Home/user/.program-name' có đủ không? – Andy

-1

Bạn nên luôn luôn lưu trữ/cài đặt ứng dụng & chương trình trong thư mục HOME HOME.

Điều này sẽ cho phép bạn dễ dàng tìm thấy các ứng dụng & chương trình.

Tạo các thư mục riêng cho Phần mềm & Chương trình dưới $ HOME để dễ nhận dạng.

Ngoài ra, hãy thêm biến môi trường JAVA_HOME vào tệp .bashrc.

+0

Thành thật mà nói, điều đó dường như không đúng - KHÔNG có tệp thực thi nào khác !? – Andy

+0

Tôi đã cài đặt nhiều Ứng dụng & Phần mềm trong thư mục $ HOME/Softwares. Nó hoạt động trơn tru cho tôi. Những gì bạn có nghĩa là bởi thực thi khác. Nếu bạn làm việc enviorment liên quan đến chơi với các tập tin hệ thống, vv. Sau đó, nó ok để tìm kiếm các giải pháp khác .. – Ankit

+0

Trường hợp chính xác bạn có nghĩa là gì bởi "$ Home/Softwares thư mục"? Ý tôi là "KHÔNG có các tệp thực thi khác" là thực tế chỉ có thư mục cho người dùng của tôi ở đó vào phút; không có phần mềm khác có vẻ được lưu trữ ở đó ... Tuy nhiên, tôi sẽ điều tra với các phần mềm khác mà không phải từ Trung tâm Phần mềm để xem tôi có thể véo bất kỳ ý tưởng nào khác không ... – Andy

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