kiểm soát phiên bản cho / etc trong * BSD


14

Giải pháp chìa khóa trao tay nào tồn tại để đặt /etcdưới sự kiểm soát phiên bản, dưới nhiều thông báo khác nhau? Chìa khóa trao tay không nhất thiết là một phần của cài đặt cơ sở, nhưng các tính năng sau sẽ rất hay:

  • móc vào các lệnh VCS để quản lý siêu dữ liệu (quyền sở hữu, quyền);
  • tích hợp với trình quản lý gói (chạy tự động trước và sau khi cài đặt, xử lý nâng cấp một cách thông minh);
  • coi các phiên bản tệp ngược dòng là một nhánh;
  • một danh sách bỏ qua điền sẵn;
  • hỗ trợ cho một số VCS cơ bản (đặc biệt là các phân phối).

Tôi sử dụng etckeeper trong Debian và các dẫn xuất. Nó có tất cả các tính năng trên trừ việc nó không theo dõi các phiên bản ngược dòng. Tôi muốn tìm hiểu về các lựa chọn thay thế, đặc biệt là trên * BSD.

Câu trả lời:


4

Trong Gentoo, công cụ quản lý các thay đổi do gói gây ra thành / etc (được gọi là Clark-conf) hỗ trợ rcs để theo dõi các thay đổi nhưng điều đó không thực sự mạnh mẽ.

Tôi có xu hướng phiên bản / etc của mình thông qua git, đặc biệt là bằng cách sử dụng các nhánh khác nhau, tôi có thể giữ / etc của mình giống nhau nhất có thể trên các bản phân phối khác nhau càng tốt trong khi giữ càng nhiều thứ ở một nơi càng tốt (đối với một số khu vực rõ ràng là không thành công, cấu hình apache ví dụ là thực sự khác nhau trên các bản phân phối khác nhau). Nó hoạt động như thế này:

Tôi có masterrepo với các tập tin cấu hình mặc định của tôi. Bây giờ tôi liên lạc với một bản phân phối mới vì vậy tôi tạo một chi nhánh mới dựa trên masterchi nhánh của mình dựa trên tên của bản phân phối (trong ví dụ này là debian). Debian giữ một số tập tin cấu hình ở một vị trí khác với tôi mastervì vậy tôi làm một git mv file new_loc. Và mọi thứ đều ổn. Tôi chuyển trở lại mastervà thay đổi tệp đó vì tôi đã thêm một số chỉ thị cấu hình cụ thể, khi tôi hợp nhất mastervào debiannhánh của mình , tệp đã di chuyển bị thay đổi, vì vậy về cơ bản tôi có thể thay đổi hầu hết mọi thứ trong masternhánh của mình và chỉ cần hợp nhất các thay đổi trong "phân phối" của tôi các nhánh (thường là chúng có xu hướng kết hợp nhiều nhánh phân phối và mục đích hơn, một máy chủ debian có một số khác biệt so với máy trạm debian rõ ràng nhưng các tính năng vẫn hoạt động).

Vì vậy, về cơ bản tôi có một "cấu hình chung" trong mastervà (để nói nó theo thuật ngữ lập trình hướng đối tượng) kế thừa chúng vào các nhánh của tôi (những người cũng có thể thừa hưởng lẫn nhau).

Ngoài ra, gitcác cơ chế để "chọn cherry" (trong trường hợp này thay đổi thành / etc /) khá hữu ích với tôi vào những lúc tôi chỉ cần các phần của một cấu hình nhất định.

Bây giờ đến một số ý tưởng của bạn:

  • Nếu tôi cần tích hợp trình quản lý gói nhiều hơn, có lẽ tôi sẽ sử dụng các tập lệnh bao bọc cho việc này (tại thời điểm tôi không có).
  • coi các phiên bản ngược dòng là một nhánh sẽ hoạt động tốt git, đó chỉ là một nhánh khác mà đôi khi bạn hợp nhất (một phần) thànhmaster
  • Danh sách bỏ qua trong git là tệp .gitignore trong repo của bạn để nó được bảo hiểm.

Tôi thích cfg-update trên gentoo hơn so với Clark-conf, tiếc là cái trước không được duy trì. Kể từ khoảng một năm trước khi tôi rời đi, và đó là một mớ hỗn độn của spaghetti perl, imo.
xenoterracide

3

Tôi đã sử dụng fossilcho điều này với một số thành công. Xem bài viết của tôi về Fossil để biết thêm. Tôi cũng đã sử dụng một công cụ được gọi là công cụ etcupdateđể di chuyển giữa các lần nâng cấp hơn là theo dõi các thay đổi. Tôi tin rằng nó đã được dự định là một công cụ đồng hành freebsd-updatetại một thời điểm. Tôi không chắc chắn về tình trạng của nó hiện tại nhưng nó hoạt động trên RELEASE-8.*hệ thống của tôi .

http://lists.freebsd.org/pipermail/freebsd-civerse/2010-June/017927.html http://people.freebsd.org/~jhb/etcupdate/


-1

Có một công cụ gọi là etckeeper Tôi không biết nó tốt như thế nào.

etckeeper là một tập hợp các công cụ để cho phép / etc được lưu trữ trong kho git, mercurial, darcs hoặc bzr. Nó móc vào apt (và các trình quản lý gói khác bao gồm yum và pacman-g2) để tự động cam kết thay đổi được thực hiện cho / etc trong quá trình nâng cấp gói. Nó theo dõi siêu dữ liệu tệp mà các hệ thống kiểm soát revison thường không hỗ trợ, nhưng điều đó rất quan trọng đối với / etc, chẳng hạn như các quyền của / etc / bóng. Nó khá mô-đun và cấu hình, trong khi cũng đơn giản để sử dụng nếu bạn hiểu những điều cơ bản khi làm việc với kiểm soát sửa đổi.

Tôi cũng không biết liệu nó có thể được tạo ra để hoạt động trên * BSD Tôi nghi ngờ nó có thể, nhưng nó sẽ không được hỗ trợ với các cổng ngoài hộp.


1
Gilles đã sử dụng etckeeper.
tante

@tante oh tôi đã bỏ lỡ điều đó
xenoterracide
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.