Saya ingin mengelola pembaruan sistem Linux saya dengan cara yang sama seperti Git melakukannya, dengan bisa bergerak bolak-balik dalam "revisi". Bagaimana saya bisa melakukan itu?
Saya ingin mengelola pembaruan sistem Linux saya dengan cara yang sama seperti Git melakukannya, dengan bisa bergerak bolak-balik dalam "revisi". Bagaimana saya bisa melakukan itu?
Jawaban:
Anda mungkin harus melihat NixOS , yang menggunakan manajer paket Nix .
NixOS adalah distribusi GNU / Linux yang bertujuan untuk meningkatkan keadaan dalam manajemen konfigurasi sistem. Dalam distribusi yang ada, tindakan seperti pemutakhiran berbahaya: memutakhirkan paket dapat menyebabkan paket lain rusak, memutakhirkan seluruh sistem jauh lebih tidak dapat diandalkan daripada menginstal ulang dari awal, Anda tidak dapat dengan aman menguji apa hasil dari perubahan konfigurasi nantinya, Anda tidak dapat dengan mudah membatalkan perubahan ke sistem, dan sebagainya.
Apa yang mungkin Anda cari disebut alat manajemen konfigurasi . Ada beberapa untuk dipilih tetapi dan sangat subjektif mana yang terbaik dalam situasi apa pun.
Saya pribadi menemukan Wayang sangat mudah untuk memulai, tetapi pilihan populer lainnya adalah Garam dan Ansible .
Ini mungkin berlebihan untuk pertanyaan Anda, tetapi cara termudah untuk dapat mengembalikan perubahan tingkat sistem / besar-besaran adalah snapshotting:
https://en.wikipedia.org/wiki/Snapshot_%28computer_storage%29
Anda belum menyebutkan spesifikasi rig Anda, tetapi mengingat Anda sudah terbiasa dengan git, tidak akan terlalu berlebihan untuk membayangkan Anda mungkin tertarik menggunakan sistem file yang lebih kompleks. Jika Anda menggunakan sistem file next-gen (abaikan nama click-bait-y), Anda akan dapat "memundurkan" seluruh sistem Anda sepenuhnya dengan perintah yang ditinju ke terminal Anda. Setiap dan semua perubahan yang dilakukan akan dikembalikan dengan sedikit keterlambatan / upaya. ZFS akan menjadi taruhan terbaik Anda dan Anda bisa merujuk ke artikel Ars yang luar biasa ini untuk melihat apakah itu mungkin sesuatu yang layak untuk Anda (ada banyak banyak fitur hebat lainnya juga):
Bergantung pada apa yang Anda maksud dengan "pembaruan", Anda mungkin tertarik pada alat manajemen konfigurasi seperti dllkeeper , yang memungkinkan Anda untuk merekam perubahan pada konfigurasi sistem secara otomatis, dan untuk kembali ke konfigurasi sebelumnya.
Jika Git adalah alat yang sudah dikenal, dan jika dengan "pembaruan" yang Anda maksud adalah "pembaruan untuk konfigurasi sistem" yang bertentangan dengan "pembaruan untuk paket sistem" atau "pembaruan untuk semua file yang disimpan di server" maka ini mungkin yang Anda cari untuk.
Perlu dipertimbangkan bahwa apakah Anda menggunakan alat seperti Wayang, Ansible, Etckeeper dll, itu tidak selalu mungkin untuk "memutar kembali" dengan bersih tanpa kehilangan data, kecuali Anda menggunakan seluruh babi (misalnya snapshotting, seperti disebutkan dalam jawaban lain). Pendekatan yang tepat akan tergantung pada situasi Anda (misalnya snapshotting tidak akan sesuai untuk sistem produksi di mana Anda mungkin kehilangan pesanan pelanggan ketika memutar kembali).
Saya telah menggunakan OpenVMS di masa lalu, ia datang secara default dengan sistem file versi .
Jika alat-alat seperti boneka tidak cukup jauh mungkin sistem file versi adalah apa yang Anda cari.
Jika Anda benar-benar ingin mengelola seluruh sistem Anda (termasuk versi kernel) seperti git, Anda sedang mencari NixOS .
Untuk versi yang kurang terlibat, Anda dapat menggunakan manajer paket NixOS, nix, dari hampir semua unix. Nix dapat diinstal sebagai pengguna yang sederhana, meskipun lebih mudah untuk menginstalnya sebagai root. Setelah nix diinstal, Anda dapat menggunakannya untuk menginstal paket sebagai pengguna yang tidak memiliki hak istimewa, dan itu berjalan baik di samping manajer paket Anda yang ada, tanpa konflik. Juga sangat mudah untuk menghapus nix dari sistem Anda, jadi tidak ada alasan untuk tidak mencobanya. ;-)
Untuk langsung menjawab pertanyaan Anda, Nix mendefinisikan sistem terinstal lengkap Anda sebagai lingkungan, yang, seperti komit git, pointer ke set pointer ke versi yang sangat spesifik dari semua paket yang diinstal.
Ketika Nix memutakhirkan sebuah paket, itu menciptakan lingkungan baru, yang menunjuk ke satu set pointer baru ke paket (kebanyakan ke yang sudah ada, untuk paket yang belum diperbarui; sekali lagi, ini sangat mirip dengan komit git baru, yang sebagian besar menunjuk ke file yang tidak diubah sebelumnya dan beberapa versi baru dari file yang dimodifikasi).
Tentu saja sepele untuk beralih ke versi lingkungan sebelumnya dan, saya percaya, fork (yaitu menciptakan lingkungan baru berdasarkan yang lebih tua dari yang terakhir). Lingkungan dapat dimuat untuk shell tertentu (itu, pada kenyataannya, set variabel lingkungan tersedia untuk shell, maka namanya), sehingga Anda juga dapat dengan mudah memiliki lingkungan yang berbeda untuk proyek yang berbeda pada mesin yang sama. Tidak ada lagi masalah ketergantungan karena proyek yang tidak terkait membutuhkan versi lain dari perpustakaan!
NixOS membawanya ke tingkat berikutnya dan mengelola seluruh komputer Anda, termasuk kernel, dengan cara yang serupa, memungkinkan peningkatan risiko yang sangat rendah dari seluruh mesin.
Saya belum selesai membaca semuanya, tetapi saya merekomendasikan pil Nix lethalman sebagai pengantar Nix.
Jika Anda adalah tipe eksperimental, Anda dapat mencoba memeriksa seluruh sistem file Anda di repositori git lokal. Ini akan ... menarik, kurasa.
git init
di direktori root /
git add -A .
git commit -m "Initial Snapshot"
git commit -Am "Snapshot X"
atau yang serupa secara berkalaBeberapa manfaatnya adalah:
gitk
dangit diff
Beberapa keanehan mungkin termasuk:
git
semoga bekerja seperti yang diharapkan ketika Anda berada di direktori kode sumber bersarang di git
wadah root .