Latar belakang
Ketika lebih dari satu perangkat yang berfungsi muncul di tangan Anda, maka% nama pengguna% mendatangi Anda untuk memiliki konfigurasi yang sama di sini, di sana, di tempat kerja, dan di rumah. Ketika saya baru mulai mencoba menyinkronkan file, Dropbox dan Yandex.disk sudah cukup bagi saya. Mereka sangat baik dalam menyinkronkan dokumen dan sejarah jabber, tetapi segera setelah saya mencoba untuk menyesuaikannya dengan .bashrc, .vimrc dan sejenisnya, berbagai efek samping keluar segera. Sebagai contoh, dengan symlink di kedua sistem, ini adalah bencana total, ± ada semacam sejarah hanya di dropbox, well, saya harus menulis skrip untuk mengelola kebun binatang sendiri. Tentunya sesuatu telah ditulis, benar kan
Ceritanya
Pada halaman https://dotfiles.imtqy.com/ Anda dapat melihat sedikit kurang dari seratus utilitas, plug-in, dan pendekatan yang berbeda untuk mengelola konfigurasi - dari yang dirancang khusus untuk setiap program hingga yang universal. Saya sangat menyarankan Anda untuk berkenalan, sangat mungkin bahwa Anda berhenti membaca lebih lanjut dan memilih sendiri sesuatu yang lebih dapat diterima.
Arti umum dari filosofi datang ke fakta bahwa konfigurasi berada di repositori% your_favorit_vcs% dalam bentuk tertentu dan dari sana merangkak ke $HOME
. Karena% default_vcs% adalah git sekarang, saya akan menggunakannya lebih lanjut.
Saya mulai berkenalan dengan dotfiles-in-git dengan sebuah utilitas bernama dotgit . Itu dimulai sebagai "sederhana dan langsung di bash murni." Tetapi pada saat penulis menambahkan enkripsi di sana dengan kemampuan untuk membuat symlink langsung ke direktori, dan saya mencoba untuk mencari tahu semuanya (sekitar awal 2017), mentimun otak saya terjadi di folder rumah saya dengan tautan rusak dan pemulihan file secara manual dari gita. Secara umum, satu hari dialokasikan untuk mencari alternatif dengan kemungkinan perilaku tuning dan konfigurasi yang sederhana.
rcm
Jadi, seperti yang telah disebutkan, sebenarnya ada banyak opsi untuk utilitas. rcm dipilih karena alasan berikut:
- Sh murni, bahkan tidak bash. Tidak menarik python atau ruby, tidak ada yang lain
- Memungkinkan Anda mengonfigurasi perilaku pengiriman konfigurasi
- Kehadiran halaman manual
- Kustomisasi penyebaran menggunakan
tag-*
folder- tag-*
dan host-*
- Dukungan panjang, proyek pengembangan yang hidup
- Pada saat digunakan, hingga hari ini tidak relevan, tetapi
{pre,post}-{up,down}
kait untuk memperbarui dan menghapus file konfigurasi didukung
Poin yang paling penting adalah, tentu saja, dokumentasi, karena tanpanya saya tidak akan pergi sejauh menyesuaikan perilaku penyebaran untuk saya sendiri.
Setelah menginstal manajer, 4 perintah akan tersedia:
- lsrc - Mendaftar seperti apa konfigurasi setelah
rcup
- mkrc - menambahkan file ke
~/.dotfiles
(secara default, Anda dapat mengubahnya ke ~/.rcrc
) lalu instal kembali. Jika Anda membutuhkan perilaku non-standar, lebih baik perbaiki ~/.rcrc
, jika tidak, mungkin ada efek khusus yang tidak terduga. - rcdn - menghapus semua file konfigurasi yang dikelola oleh rcm.
- rcup - menginstal semua file. Jika Anda menggunakan opsi
-g
, skrip shell-terpisah akan dihasilkan, yang juga dapat dimasukkan ke dalam repositori untuk digunakan pada host di mana manajer tidak diinstal.
Dengan demikian, file ~/.rcrc
hanyalah bagian dari skrip shell yang disertakan dengan perintah source
setiap kali utilitas rcm dipanggil. Berdasarkan ini, dapat dibuat modular, dengan logika bawaan. Menurut dokumentasi, kontennya memungkinkan Anda untuk mengontrol pengaturan dotfiles menggunakan rcup
, misalnya:
- perilaku default: untuk setiap file di dalam
~/.dotfiles
, symlink dibuat di folder home tanpa titik awal (misalnya, '/home/felixoid/.dotfiles/bashrc' -> '/home/felixoid/.bashrc'
, '/home/felixoid/.dotfiles/README.md' -> '/home/felixoid/.README.md'
) - daddy
~/.vim
: adalah symlink ke folder /home/felixoid/.dotfiles/vim
(opsi SYMLINK_DIRS) - daddy
~/.some_secret_files
: disalin dari /home/felixoid/.dotfiles/tag-dmz/some_secret_files
(opsi COPY_ALWAYS) - file
~/.README.md
sebenarnya diabaikan (opsi ~/.README.md
) - file
'/home/felixoid/.zshenv'
adalah symlink ke '/home/felixoid/.dotfiles/tag-zsh/zshenv'
(parameter TAGS) ~/bin
juga dikelola dengan rcm, isinya berasal dari /home/felixoid/.dotfiles/bin/
(parameter UNDOTTED)
Terkadang mungkin perlu menyebutkan file yang sama dalam beberapa opsi. Sebagai contoh, potongan .rcrc akan terlihat seperti ini jika semua isi ~/bin
harus dalam ~/.dotfiles/tag-bins/bin
dan disalin seperti:
COPY_ALWAYS="bin/*" TAGS="bins" UNDOTTED="bin"
Sebenarnya, contoh cara mengatur isi folder ~/.dotfiles
ada di repositori dengan dotfiles. Informasi lengkap terdapat dalam dokumentasi, silakan membaca halaman manual berikut: lsrc (1), mkrc (1), rcrc (5) rcdn (1), rcm (7), rcup (1).
Untold dan Untold
Ketika saya mengetik teks ini, ide-ide bagus datang kepada saya tentang bagaimana mengatur penyimpanan data sensitif di dalam repositori publik. Sebagai contoh, saya selalu khawatir tentang pertanyaan: apakah masuk akal dan apakah mungkin untuk membuat cadangan kunci gpg dan ssh? Hanya untuk ini, kait bisa berguna: kemas dalam tar, lalu enkripsi dengan gpg simetris yang sama, diikuti dengan membongkar. Mungkin saya akan mencurahkan catatan berikut untuk ini setelah implementasi. Atau mungkin ini sepeda lain? Dan semuanya sudah ditemukan? Tambahkan komentar jika ini benar-benar terjadi.
Saya sangat berharap bahwa bahan ini akan membangkitkan minat dan keinginan untuk mencoba mengatur manajemen konfigurasi dalam mode semi-otomatis!
Dan survei kecil: