Câu trả lời:
"Các hệ thống dựa trên Unix" là một phạm trù quá chung chung để đưa ra bất kỳ loại quyết định áp dụng chung nào sẽ áp dụng cho tất cả các hệ thống dựa trên Unix. Vấn đề là cấu trúc hệ thống tập tin (và vị trí "thông thường" / "thông thường" để đặt mọi thứ) rất khác nhau giữa các hương vị khác nhau của "Unix" (nếu bạn thậm chí có thể gọi nó là) mà bạn phải xử lý nó trên cơ sở từng trường hợp.
Một vài ví dụ:
Câu trả lời là quy ước được tích hợp tốt, được xã hội chấp nhận, tích hợp tốt để lưu trữ mọi thứ trên bất kỳ hệ điều hành nào, cho dù đó là bản phân phối của Linux, BSD, Solaris, HP-UX, v.v. phụ thuộc vào hoàn cảnh chính xác . Đặc biệt:
apt-get
hoặc yum
để cài đặt trực tiếp mà không cần tải xuống trình cài đặt từ một trang web?Không có câu trả lời thẳng cho điều này mà không xem xét tất cả các yếu tố. Tuy nhiên, đối với Ubuntu 12.04 cụ thể , nếu bạn đang xây dựng gói của mình thành một .deb
tệp sẽ được phân phối trong PPA hoặc để gửi tới người đăng ký gói riêng của Ubuntu ( main
hoặc universe
), tôi khuyên bạn nên lưu trữ bộ đệm /var/cache
. Nhưng điều đó chỉ dành cho Ubuntu và bạn chắc chắn không nên áp dụng giả định rằng mọi hệ điều hành distro hoặc Unix sẽ xem xét điều này có thể chấp nhận được.
Hơn nữa, nếu không có lợi thế nào trong việc lưu dữ liệu bộ đệm trên các khởi động của hệ thống, tôi nghĩ nó cũng có thể thuộc về / tmp.
Lưu ý rằng bạn sẽ gặp phải các vấn đề quy ước đường dẫn này cho mọi loại tệp mà chương trình của bạn sử dụng: dữ liệu được chia sẻ, tệp thực thi, thư viện, tệp trợ giúp, hình ảnh, âm thanh, trang web và bật và tắt. Vì vậy, tôi phải tự hỏi, nếu bạn đang hỏi về các tệp bộ đệm, làm thế nào bạn có kế hoạch xử lý các loại tệp khác. Bạn chỉ đang đưa ra những giả định ngây thơ và hy vọng rằng không ai không đồng ý với bạn? Nếu bạn chưa đọc bất kỳ tài liệu hoặc tiêu chuẩn Ubuntu nào đề xuất nơi đặt chúng, thì bạn chỉ nên giả định điều này hay điều khác. Ví dụ, luôn luôn gắn các thư viện trong / usr / lib có thể là một sai lầm, vì tùy thuộc vào tình huống chúng có thể thuộc về nơi khác.
Ngoài ra, là một nhà phát triển phần mềm, tôi nghĩ rằng điều có trách nhiệm nhất phải làm là cho phép người dùng cuối quyết định nơi đặt các tệp của họ. Bạn có thể đặt mặc định, nhưng người dùng (và nhà phân phối) có thể và sẽ tùy chỉnh bản dựng để phù hợp với bản phân phối của họ.
Cách dễ nhất để làm điều này là xây dựng chương trình của bạn bằng GNU Autoconf . Autoconf là một hệ thống xây dựng nơi người dùng có thể chuyển các đối số dòng lệnh cho tập lệnh xây dựng để thay đổi đường dẫn của các "loại thư mục" khác nhau khỏi các mặc định. Hầu như mọi bản phân phối đều có tập lệnh xây dựng cho mọi gói Autoconf đặt các thư mục thông thường phù hợp với bản phân phối cho từng loại. Họ thậm chí đặc biệt có một loại thư mục cho bộ đệm: sharedstatedir .
gem
công cụ. Tuy nhiên, có thể không phù hợp để tạo các tệp trong thời gian chạy trong cùng thư mục nơi ứng dụng của bạn được đá quý tải xuống. Mặt khác, nếu bạn đang chạy ứng dụng với tư cách là người dùng, bạn cần một thư mục đọc-ghi cho người dùng và điều đó có nghĩa là thay đổi quyền (yêu cầu tích hợp hệ thống nhiều hơn trong thời gian cài đặt, chẳng hạn như tạo một nhóm v.v.) hoặc sử dụng thư mục đọc-ghi toàn cầu, vd / tmp.
/usr
, /lib
hoặc /bin
từ ứng dụng của bạn.
/tmp
thư mục. Câu trả lời cho câu hỏi của bạn sẽ là (tải xuống, không, không, không, không, không, không). Có lẽ dường như bình thường đối với hầu hết mọi người để kết luận là/tmp
vậy nhưng tôi chưa quen với các hệ thống unix và các quy ước dựa trên hệ điều hành Ubuntu không quen thuộc với tôi. Điều này mở ra ý tưởng thú vị cho gem để cho phép bộ nhớ đệm đĩa bất khả tri (thuyết bất khả tri của người dùng). Cảm ơn, +1 từ tôi.