Điểm:2

Cách Debian/Ubuntu chính thức để cài đặt các tệp cấu hình mới trong thư mục người dùng là gì?

lá cờ ph

Tôi đang tạo gói bao gồm một số cài đặt mặc định cho người dùng. Những thứ thường xuất hiện dưới ~/.<tên-ai> hoặc ~/.config/<app>/<some>.conf và các tập tin tương tự.

Trong hầu hết các trường hợp, các tệp này được cài đặt trong thư mục bộ xương (/etc/skel) nhưng chúng sẽ chỉ được cài đặt trong thư mục chính của người dùng mới. Tôi muốn những người dùng hiện tại cũng nhận được các tệp tại thời điểm gói được cài đặt.

Tiêu chuẩn Debian nói gì về điều đó?


Ví dụ cụ thể, tôi có một .lessfilter tập lệnh mà tôi muốn thêm vào gói cá nhân để nó được cài đặt trên tất cả các máy của tôi.

Vì vậy, trong tôi alex-tools.install tập tin tôi có:

tập lệnh/.lessfilter /etc/skel

Tôi biết tôi có thể tạo một alex-tools.postinst kịch bản như vậy (chưa được kiểm tra, sử dụng cẩn thận):

#!/bin/sh -e
#
# Kết thúc cài đặt

#DEBHhelper#

# Nguồn thư viện debconf.
. /usr/share/debconf/confmodule

nếu [ "$1" = "cấu hình" ]
sau đó
    # Cài đặt tệp trong thư mục người dùng
    #
    cho bạn trong /root /home/*
    làm
        nếu ! kiểm tra -f "${u}/.lessfilter"
        sau đó
            cp /etc/skel/.lessfilter "${u}/.lessfilter"
            chmod 700 "${u}/.lessfilter"
            chown "${u}" "${u}/.lessfilter"
        fi
    xong
fi

Nhưng tôi nghĩ rằng điều này có thể không được coi là "hợp pháp" trong Debian và có thể có một cách sạch hơn để thực hiện như vậy?

Có điều gì đó về điều này trong tài liệu tham khảo Debian không?

Điểm:1
lá cờ jp

Tôi không chắc chắn về các đề xuất chính thức để tạo cấu hình cho mỗi người dùng trong quá trình cài đặt gói, nhưng các liên kết mà tôi tìm thấy chắc chắn không khuyến khích điều đó. Tuy nhiên, nếu tôi đang cài đặt gói của bạn thì đây là gói của tôi ý kiến về cách tôi muốn nó được thiết kế.

Cài đặt tập tin cấu hình

Nhiều chương trình trước tiên sẽ kiểm tra vị trí cấu hình chung (ví dụ: /etc/my_program) trước khi kiểm tra cấu hình cho mỗi người dùng (ví dụ: ~/.my_chương trình). Khi có thể, cấu hình nên được đặt ở vị trí toàn cầu.

Ví dụ cụ thể của bạn về việc cài đặt tệp cấu hình cho mỗi người dùng cho ~/.lessfilter thú vị bởi vì điều đó không có tệp cấu hình chung Tùy chọn. Trong trường hợp này, nếu bạn đang cung cấp gói my_package sau đó nó có thể

  • tạo một cấu hình toàn cầu tại /usr/share/my_package/lessfilter
  • thêm một tập lệnh /etc/profile.d/my_package với nội dung như
[ -f "${HOME}/.lessfilter" ] || cp /usr/share/my_package/lessfilter "${HOME}/.lessfilter"

Điều này sẽ cho phép rất nhiều tính linh hoạt. Một nhược điểm rõ ràng là /etc/hồ sơ có thể chỉ ảnh hưởng đến các phiên Bash tương tác và bạn có thể cần hỗ trợ các tình huống khác.

liên kết

lá cờ ph
Ồ, vậy là mỗi khi ai đó đăng nhập, các tập lệnh bên dưới `/etc/profile.d` sẽ chạy. Tốt đấy. `cp` cũng có thể là `ln -s ...` trong trường hợp đó. Bằng cách đó, tôi có thể đưa ra một kịch bản "trung lập" mà không có tác dụng gì cả. Sau đó, người dùng có thể chuyển đổi giữa phiên bản đầy đủ hoặc tập lệnh không làm gì cả.
lá cờ ph
Ngoài ra, tôi đã tạo một dự án có tên [advgetopt](https://github.com/m2osw/advgetopt) có khả năng hỗ trợ quản trị viên (`/usr/share/...`) toàn cầu (`/ etc/...`) và các tệp cấu hình do người dùng xác định (`~/.config/...`) ở chế độ đọc & ghi và các định dạng hơi khác nhau. Vì vậy, tôi hiểu cách cài đặt thông thường. Thật không may, `less` vẫn chưa tiên tiến như bạn đã khám phá. Ngoài ra, gói cá nhân của tôi là một phần để tôi tránh phải thực hiện tất cả các thiết lập đó bằng tay mỗi khi tôi cài đặt máy chủ Ubuntu mới ...

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.