Я хочу керувати оновленнями моєї системи Linux аналогічно, як це робить Git , маючи можливість переміщатися вперед і назад в межах "ревізій". Як я міг це зробити?
Я хочу керувати оновленнями моєї системи Linux аналогічно, як це робить Git , маючи можливість переміщатися вперед і назад в межах "ревізій". Як я міг це зробити?
Відповіді:
Вам, мабуть, варто поглянути на NixOS , який використовує менеджер пакетів Nix .
NixOS - це дистрибутив GNU / Linux, який має на меті покращити стан сучасних систем управління конфігурацією. У існуючих дистрибутивах такі дії, як оновлення, небезпечні: оновлення пакета може призвести до зламу інших пакетів, оновлення всієї системи набагато менш надійне, ніж перевстановлення з нуля, ви не можете безпечно перевірити, якими будуть результати зміни конфігурації, ви не можете легко скасувати зміни в системі тощо.
Те, що ви, напевно, шукаєте, називаються інструментами керування конфігурацією . Можна вибрати кілька, але дуже суб'єктивно, який найкращий у будь-якій ситуації.
Я особисто знайшов Ляльковий бути досить легко почати с, але і іншими популярними варіантами сіль і анзібль .
Це, ймовірно, надмірне значення для вашого питання, але найпростіший спосіб відновити системний / масові зміни - це знімки:
https://en.wikipedia.org/wiki/Snapshot_%28computer_storage%29
Ви не згадали про особливості своєї установки, але, бачачи, як ви знайомі з git, було б не надто розтягнути уявлення, що вам може бути цікаво використовувати складнішу файлову систему. Якби ви використовували файлову систему наступного покоління (ігноруйте ім'я click-bait-y), ви зможете повністю "перемотати" всю вашу систему за допомогою простої команди, забитої у ваш термінал. Будь-які всі внесені зміни будуть повернені з дуже невеликою затримкою / зусиллям. ZFS був би найкращим для вас, і ви можете звернутися до цієї дивовижної статті Ars, щоб побачити, чи може вона чогось вартий для вас (також існує багато багатьох багатьох чудових функцій):
Залежно від того, що ви розумієте під "оновленнями", вас можуть зацікавити такі засоби управління конфігурацією, як etckeeper , які дозволяють автоматично записувати зміни в конфігурацію системи та повертатися до попередніх конфігурацій.
Якщо Git - це знайомий інструмент, а якщо під "оновленнями" ви маєте на увазі "оновлення до системної конфігурації" на відміну від "оновлень системних пакетів" або "оновлень усіх файлів, що зберігаються на сервері", це може бути те, що ви шукаєте для.
Варто врахувати, що якщо ви використовуєте такі інструменти, як Puppet, Ansible, Etckeeper тощо, не завжди можна «чисто відкотити» без втрати даних, якщо тільки ви не пройдете цілу свиню (наприклад, знімок, як згадується в іншій відповіді). Правильний підхід буде залежати від вашої ситуації (наприклад, знімок не підходить для виробничої системи, де ви можете втратити замовлення клієнтів під час відкочування).
Раніше я використовував OpenVMS , він за замовчуванням поставляється з файловою системою версій .
Якщо такі інструменти, як ляльковий, не заходять досить далеко, можливо, файлові системи версій - це те, що ви шукаєте.
Якщо ви дійсно хочете керувати всією своєю системою (включаючи версію ядра), як git, ви шукаєте NixOS .
Для менш задіяної версії ви можете використовувати менеджер пакунків NixOS, нікс, майже з будь-якого Unix. Nix можна встановити як простий користувач, хоча його легше встановити як root. Після встановлення nix ви можете використовувати його для встановлення пакунків як непривілейованого користувача, і він працює нормально разом із наявним менеджером пакунків, без конфліктів. Також повністю легко видалити nix зі своєї системи, тому насправді немає приводу не випробувати його. ;-)
Для прямого вирішення вашого питання Nix визначає вашу повну встановлену систему як середовище, яке, як і git-комітка, вказівник на набір покажчиків на дуже конкретні версії всіх встановлених пакетів.
Коли Nix оновлює пакет, він створює нове середовище, яке вказує на новий набір покажчиків на пакунки (в основному на існуючі, на пакунки, які не були оновлені; знову ж таки, це дуже схоже на нову команду git, яка здебільшого вказує на попередні незмінні файли та кілька нових версій змінених файлів).
Звичайно, тривіально переходити до попередньої версії середовища та, я вважаю, форк (тобто створити нове середовище на основі більш старої, ніж останньої). Навколишнє середовище може бути завантажено для конкретної оболонки (це, власне, набір змінних оточуючих середовищ, доступних оболонці, звідси і назва), тому ви також можете досить легко мати різні середовища для різних проектів на одній машині. Більше проблем із залежністю не виникає, оскільки незв'язаний проект потребує іншої версії бібліотеки!
NixOS піднімає це на наступний рівень і аналогічно керує всім вашим комп’ютером, включаючи ядро, що забезпечує дуже низький рівень оновлення всієї машини.
Я ще не читав їх усіх, але рекомендую смертельно небезпечні таблетки Нікс як вступ до Nix.
Якщо ви експериментальний тип, ви можете спробувати просто перевірити всю вашу файлову систему в локальне сховище git. Це було б ... цікаво, я думаю.
git init
в кореневому каталозі /
git add -A .
git commit -m "Initial Snapshot"
git commit -Am "Snapshot X"
або подібніДеякі переваги:
gitk
іgit diff
Деякі дивацтва можуть включати:
git
сподіваємось, працюємо так, як очікувалося, коли ви знаходитесь в каталозі вихідного коду, вкладеному в кореневий git
контейнер.