Tôi muốn quản lý các bản cập nhật của hệ thống Linux của mình theo cách tương tự như Git , bằng cách có thể di chuyển qua lại trong "bản sửa đổi". Làm thế nào tôi có thể làm điều đó?
Tôi muốn quản lý các bản cập nhật của hệ thống Linux của mình theo cách tương tự như Git , bằng cách có thể di chuyển qua lại trong "bản sửa đổi". Làm thế nào tôi có thể làm điều đó?
Câu trả lời:
Có lẽ bạn nên xem NixOS , sử dụng trình quản lý gói Nix .
NixOS là một bản phân phối GNU / Linux nhằm cải thiện tình trạng hiện đại trong quản lý cấu hình hệ thống. Trong các bản phân phối hiện có, các hành động như nâng cấp rất nguy hiểm: nâng cấp gói có thể khiến các gói khác bị hỏng, nâng cấp toàn bộ hệ thống kém tin cậy hơn nhiều so với cài đặt lại từ đầu, bạn không thể kiểm tra một cách an toàn kết quả của thay đổi cấu hình sẽ là gì, bạn không thể dễ dàng hoàn tác các thay đổi đối với hệ thống, v.v.
Những gì bạn có thể đang tìm kiếm được gọi là công cụ quản lý cấu hình . Có một số lựa chọn nhưng nó rất chủ quan cái nào là tốt nhất trong mọi tình huống.
Cá nhân tôi thấy Puppet khá dễ để bắt đầu, nhưng các lựa chọn phổ biến khác là Salt và Ansible .
Điều này có thể quá mức cần thiết cho câu hỏi của bạn, nhưng cách dễ nhất để có thể hoàn nguyên các thay đổi lớn ở cấp hệ thống là chụp nhanh:
https://en.wikipedia.org/wiki/Snapshot_%28computer_st Storage% 29
Bạn đã không đề cập đến các chi tiết cụ thể của giàn khoan của bạn, nhưng khi bạn quen thuộc với git, sẽ không quá sức để tưởng tượng bạn có thể quan tâm đến việc sử dụng một hệ thống tệp phức tạp hơn. Nếu bạn sử dụng hệ thống tệp thế hệ tiếp theo (bỏ qua tên click-mồi-y), bạn sẽ có thể "tua lại" toàn bộ hệ thống của mình bằng một lệnh đơn thuần được bấm vào thiết bị đầu cuối của bạn. Bất kỳ và tất cả các thay đổi được thực hiện sẽ được hoàn nguyên với rất ít sự chậm trễ / nỗ lực. ZFS sẽ là lựa chọn tốt nhất của bạn và bạn có thể tham khảo bài viết Ars tuyệt vời này để xem liệu nó có phải là thứ đáng giá cho bạn không (có nhiều tính năng tuyệt vời khác nữa):
Tùy thuộc vào ý nghĩa của "cập nhật", bạn có thể quan tâm đến các công cụ quản lý cấu hình như etckeeper , cho phép bạn tự động ghi lại các thay đổi vào cấu hình hệ thống và trở lại cấu hình trước đó.
Nếu Git là một công cụ quen thuộc và nếu "cập nhật", bạn có nghĩa là "cập nhật cấu hình hệ thống" thay vì "cập nhật gói hệ thống" hoặc "cập nhật cho tất cả các tệp được lưu trữ trên máy chủ" thì đây có thể là thứ bạn đang tìm kiếm cho
Bạn nên cân nhắc rằng liệu bạn có đang sử dụng các công cụ như Puppet, Ansible, Etckeeper, v.v. Cách tiếp cận phù hợp sẽ phụ thuộc vào tình huống của bạn (ví dụ: chụp nhanh sẽ không phù hợp với hệ thống sản xuất nơi bạn có thể mất đơn đặt hàng của khách hàng khi quay lại).
Tôi đã sử dụng OpenVMS trong quá khứ, nó được mặc định đi kèm với một hệ thống tệp phiên bản .
Nếu các công cụ như con rối không đi đủ xa, có thể một hệ thống tệp phiên bản là thứ bạn đang tìm kiếm.
Nếu bạn thực sự muốn quản lý toàn bộ hệ thống của mình (bao gồm cả phiên bản kernel) như git, bạn đang tìm kiếm NixOS .
Đối với phiên bản ít liên quan hơn, bạn có thể sử dụng trình quản lý gói của NixOS, nix, từ hầu hết mọi unix. Nix có thể được cài đặt như một người dùng đơn giản, mặc dù việc cài đặt nó là root dễ dàng hơn. Khi nix được cài đặt, bạn có thể sử dụng nó để cài đặt các gói như một người dùng không có đặc quyền và nó chạy tốt cùng với trình quản lý gói hiện tại của bạn, không có xung đột. Nó cũng rất dễ dàng để loại bỏ hoàn toàn nix khỏi hệ thống của bạn, vì vậy thực sự không có lý do gì để không thử nó. ;-)
Để trực tiếp giải quyết câu hỏi của bạn, Nix định nghĩa hệ thống được cài đặt hoàn chỉnh của bạn là một môi trường, giống như một cam kết git, một con trỏ tới một bộ con trỏ tới các phiên bản rất cụ thể của tất cả các gói đã cài đặt.
Khi Nix nâng cấp gói, nó tạo ra một môi trường mới, trỏ đến một bộ con trỏ mới cho các gói (chủ yếu là các gói hiện có, đối với các gói chưa được cập nhật; một lần nữa, điều này rất giống với cam kết git mới, chủ yếu là trỏ đến các tệp không thay đổi trước đó và một vài phiên bản mới của các tệp đã sửa đổi).
Tất nhiên, việc chuyển sang phiên bản trước của môi trường là không quan trọng và, tôi tin rằng, fork (nghĩa là tạo ra một môi trường mới dựa trên môi trường cũ hơn so với trước đây). Một môi trường có thể được tải cho một shell cụ thể (trên thực tế, đó là tập hợp các biến môi trường có sẵn cho shell, do đó có tên), do đó bạn cũng có thể dễ dàng có các môi trường khác nhau cho các dự án khác nhau trên cùng một máy. Không còn vấn đề phụ thuộc vì một dự án không liên quan cần một phiên bản khác của thư viện!
NixOS đưa nó lên cấp độ tiếp theo và quản lý toàn bộ máy tính của bạn, bao gồm cả kernel, theo cách tương tự, cho phép nâng cấp rủi ro rất thấp của toàn bộ máy.
Tôi chưa đọc xong tất cả, nhưng tôi khuyên dùng thuốc Nix của lethalman như một lời giới thiệu về Nix.
Nếu bạn là loại thử nghiệm, bạn có thể thử chỉ kiểm tra toàn bộ hệ thống tệp của mình vào kho lưu trữ git cục bộ. Điều này sẽ ... thú vị, tôi nghĩ vậy.
git init
trong thư mục gốc /
git add -A .
git commit -m "Initial Snapshot"
git commit -Am "Snapshot X"
hoặc tương tựMột số lợi ích sẽ là:
gitk
vàgit diff
Một số điều kỳ lạ có thể bao gồm:
git
hy vọng hoạt động như mong đợi khi bạn ở trong thư mục mã nguồn được lồng trong bộ git
chứa gốc .