Bagaimana saya bisa mencapai manajemen pembaruan mirip-Git untuk Linux?

14

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?

Patrick Villela
sumber
Sebagai administrator sistem Linux / Unix yang berurusan dengan aspek-aspek yang lebih dalam tentang bagaimana sistem Linux / Unix bekerja, saya tidak dapat membayangkan perubahan apa yang perlu dilakukan seseorang pada sistem mereka untuk membutuhkan sistem revisi mirip Git. Hal utama yang mendapat perubahan pada sistem ini adalah pemasangan perangkat lunak dan file konfigurasi. File konfigurasi mudah dicadangkan dan dicatat secara manual. Dan itu jatuh ke dalam pola pikir "atur dan lupakan".
JakeGould

Jawaban:

12

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.

pengguna408342
sumber
12

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 .

Nifle
sumber
Saya sudah menggunakan boneka di gelandangan, tapi saya tidak ingat pernah bisa membatalkan sesuatu yang berantakan yang saya lakukan di OS saya ...
Patrick Villela
4
Alat manajemen konfigurasi umumnya tidak menyediakan fungsionalitas "kembalikan". "Kembalikan" meniup sistem dan menggunakan alat manajemen konfigurasi untuk mengkonfigurasi ulang sistem. Misalnya, Anda dapat menggunakan alat penyediaan logam kosong seperti Razor untuk memformat dan menginstal ulang OS. Kemudian, alat tersebut diserahkan ke alat seperti Chef untuk menerapkan konfigurasi.
ctc
2
Apakah penyihir itu dimaksudkan? :)
Ruslan
Apakah cfengine mati? Saya ingat mencoba untuk mendapatkan sesuatu yang saya senang gunakan di kluster kecil saya kembali ketika saya adalah sysadmin. Tapi akhirnya saya tidak pernah menggunakannya.
Peter Cordes
Dengan salah satu alat ini, Anda mendapatkan kontrol versi dengan menjaga file konfigurasi master Anda di git. Apa yang Anda dapatkan dari mereka adalah memusatkan dan mengurangi konfigurasi seluruh sistem menjadi satu dari beberapa file teks.
Peter Cordes
10

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):

http://arstechnica.com/information-technology/2014/02/ars-walkthrough-using-the-zfs-next-gen-filesystem-on-linux/

ebrious
sumber
2
Pilihan lain adalah btrfs, yang BTW memiliki dukungan perusahaan resmi dari Ubuntu, SUSE> = 11, Oracle. Meskipun masih dikembangkan dan blahblahblah, ia dapat diandalkan untuk penggunaan desktop sehari-hari dan berkinerja sangat baik.
ignis
1
@ignis: Saya baru saja menemukan Btrfs yang tidak konsisten dan tidak dapat dipulihkan meskipun RAID 5 di bawahnya, dan mendengar tentang dua instance lagi yang sedang bekerja. Jadi saya tidak akan dengan mudah mengabaikan peringatan itu tentang hal itu tidak siap untuk penggunaan produksi. Saya tidak ingin mempercayainya sendiri sebelum saya menemukannya. Mungkin karena RAM yang buruk, mungkin, yang merupakan salah satu alasan mengapa orang ZFS sangat menyarankan penggunaan memori ECC. Saya kira hal yang sama berlaku untuk Btrfs.
MvG
6

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).

Chris Burgess
sumber
2

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.

Niels van Reijmersdal
sumber
1

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.

Gary Verhaegen
sumber
0

Jika Anda adalah tipe eksperimental, Anda dapat mencoba memeriksa seluruh sistem file Anda di repositori git lokal. Ini akan ... menarik, kurasa.

  1. git init di direktori root /
  2. Bangun sebuah .gitignore untuk root yang mengabaikan direktori yang isinya sering berubah atau tidak boleh diperiksa:
    • / dev
    • /Lari
    • / tmp
    • / proc
    • / hilang + ditemukan
    • ...
  3. Tambahkan ke .gitignore jenis file spesifik yang mungkin ingin Anda kecualikan:
    • * .tmp
    • *.catatan
    • ...
  4. Tambahkan konten awal Anda dengan git add -A .
  5. Komit snapshot dengan git commit -m "Initial Snapshot"
  6. Gunakan komputer Anda
  7. Tambahkan foto git commit -Am "Snapshot X"atau yang serupa secara berkala

Beberapa manfaatnya adalah:

  • Alat yang familier untuk riwayat revisi, seperti gitkdangit diff
  • Setiap livecd atau sistem operasi lain dengan git dapat mengembalikan cadangan Anda
  • Anda dapat mendorong seluruh sistem Anda ke github dan mengembalikannya ke komputer lain atau membaginya dengan orang-orang ...?
  • Percabangan akan cepat dan intuitif
  • /, direktori git di root Anda akan menginspirasi kepercayaan untuk menyalahgunakan sistem Anda dan menjadi lebih berani, mirip dengan kode sumber
  • Setiap snapshot berikutnya akan relatif kecil dibandingkan dengan beberapa solusi cadangan lainnya
  • Akan luar biasa untuk meninjau dan melacak perubahan konfigurasi di / etc
  • Anda bisa merintis ini dan menyebutnya linit - linux di git.
  • Keburukan

Beberapa keanehan mungkin termasuk:

  • Tidak mungkin Anda dapat memulihkan / checkout cabang atau revisi dengan perubahan signifikan, atau perubahan pada file yang sedang digunakan saat menjalankan sistem - mungkin memiliki boot USB minimal dengan git untuk tujuan ini
  • Komitmen awal yang agak besar
  • Memeriksa di direktori .git berikutnya -?
  • gitsemoga bekerja seperti yang diharapkan ketika Anda berada di direktori kode sumber bersarang di gitwadah root .
  • / etc / passwd dan / etc / shadow perlu dimasukkan dalam repositori untuk memelihara dan melacak pengguna dan mengembalikannya ke komputer lain, tetapi sekarang siapa pun yang memiliki akses view (mungkin di github) dapat melihat informasi sensitif seperti konten, izin, dan kata sandi hash dari pengguna Anda.
Ehryk
sumber
3
Pendekatan ini kemungkinan besar akan gagal total, karena git tidak akan menangani izin dengan benar. Dengan asumsi Anda melakukan semua itu sebagai root, pada dasarnya Anda akan meng-chown seluruh sistem file untuk melakukan root, dan pada gilirannya, akan mengganggu operasi penulisan. Sebagai contoh, Anda mengambil snapshot, mengembalikannya, pemilik direktori log apache menjadi root (bukan http), apache tidak dapat menulis ke direktori, gagal memulai. Saya tahu itu, karena saya mencoba hal serupa, tetapi dalam skala yang jauh lebih kecil, dan bahkan pada itu, ada masalah.
Tuncay Göncüoğlu
Lihatlah Nix, seperti yang disarankan dalam jawaban lain;)
Michael Pankov
Senang mendengarnya! Saya pikir itu menangani izin, setidaknya oktet, ketika skrip saya mempertahankan bendera x pada klon, tetapi saya tidak berpikir tentang kepemilikan file dan grup
Ehryk
Tampaknya ada alat tambahan yang akan mempertahankan izin penuh dan kepemilikan, jika Anda memang perlu melakukannya. Salah satu alat tersebut adalah git-cache-meta , dan Inilah daftar
Ehryk