您好,登錄后才能下訂單哦!
這篇文章主要介紹linux中怎么用Chezmoi取回你的點(diǎn)文件,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
在 Linux 中,點(diǎn)文件是隱藏的文本文件,從 Bash、Git 到 i3 或 VSCode 等更復(fù)雜的許多應(yīng)用程序,都用它存儲(chǔ)配置設(shè)置。
這些文件大多數(shù)都放在 ~/.config
目錄中或用戶主目錄中。編輯這些文件使你可以自定義也許沒有提供設(shè)置菜單的應(yīng)用程序,并且它們可以跨設(shè)備甚至是跨其它 Linux 發(fā)行版移植。但是,整個(gè) Linux 發(fā)燒友社區(qū)的討論焦點(diǎn)是如何管理這些點(diǎn)文件以及如何共享它們。
我們將展示一個(gè)名為 Chezmoi 的工具,該工具與其它工具略有不同。
如果你在 GitHub 上搜索“dotfiles”,那么你將看到有超過 10 萬個(gè)存儲(chǔ)庫(kù)在解決一個(gè)目標(biāo):將人們的點(diǎn)文件存儲(chǔ)在可共享且可重復(fù)的領(lǐng)地中。但是,除了都在使用 Git 之外,它們存儲(chǔ)文件的方式各有不同。
雖然 Git 解決了代碼管理問題,也將其轉(zhuǎn)換為配置文件管理,但它并沒有解決如何區(qū)分發(fā)行版、角色(例如家用計(jì)算機(jī)與工作計(jì)算機(jī))、機(jī)密信息管理以及按設(shè)備配置的問題。
因此,許多用戶決定制定自己的解決方案,多年來,社區(qū)已經(jīng)做出了許多成果。本文將簡(jiǎn)要介紹已有的一些解決方案。
你想在封閉的環(huán)境中快速嘗試以下解決方案嗎?運(yùn)行:
$ podman run --rm -it fedora
來創(chuàng)建一個(gè) Fedora 容器嘗試應(yīng)用程序。退出容器時(shí),該容器將自動(dòng)刪除自身。
如果將點(diǎn)文件存儲(chǔ)在 Git 存儲(chǔ)庫(kù)中,你肯定希望可以讓更改輕松地自動(dòng)應(yīng)用到主目錄之中,乍一看,最簡(jiǎn)單的方法是使用符號(hào)鏈接,例如 ln -s ~/.dotfies/bashrc ~/.bashrc
。這可以使你的更改在更新存儲(chǔ)庫(kù)時(shí)立即就緒。
符號(hào)鏈接的問題在于管理符號(hào)鏈接可能很麻煩。Stow 和 RCM(在 Fedora 雜志上介紹過)可以幫助你管理這些,但是這些并不是非常舒服的解決方案。下載后,需要對(duì)私有文件進(jìn)行適當(dāng)?shù)男薷暮驮O(shè)置訪問模式。如果你在一個(gè)系統(tǒng)上修改了點(diǎn)文件,然后將存儲(chǔ)庫(kù)下載到另一個(gè)系統(tǒng),則可能會(huì)發(fā)生沖突并需要進(jìn)行故障排除。
解決此問題的另一種方法是編寫自己的安裝腳本。這是最靈活的選項(xiàng),但要權(quán)衡花費(fèi)更多時(shí)間來構(gòu)建自定義解決方案是否值得。
Git 旨在跟蹤更改。如果你在 Git 存儲(chǔ)庫(kù)中存儲(chǔ)密碼或 API 密鑰之類的機(jī)密信息,則會(huì)比較麻煩,并且需要重寫 Git 歷史記錄以刪除該機(jī)密信息。如果你的存儲(chǔ)庫(kù)是公開的,那么如果其他人下載了你的存儲(chǔ)庫(kù),你的機(jī)密信息將不再保密。僅這個(gè)問題就會(huì)阻止許多人與公共世界共享其點(diǎn)文件。
問題不在于如何將配置拉到多個(gè)設(shè)備,而是當(dāng)你有多個(gè)需要不同配置的設(shè)備的問題。大多數(shù)人通過使用不同的文件夾或使用不同的復(fù)刻來處理此問題。這使得難以在不同設(shè)備和角色集之間共享配置。
Chezmoi 是一種考慮了以上問題的用于管理點(diǎn)文件的工具,它不會(huì)盲目地從存儲(chǔ)庫(kù)復(fù)制或符號(hào)鏈接文件。 Chezmoi 更像是模板引擎,可以根據(jù)系統(tǒng)變量、模板、機(jī)密信息管理器和 Chezmoi 自己的配置文件來生成你的點(diǎn)文件。
目前,Chezmoi 并不在 Fedora 的默認(rèn)軟件庫(kù)中。你可以使用以下命令下載 Chezmoi 的當(dāng)前版本。
$ sudo dnf install https://github.com/twpayne/chezmoi/releases/download/v1.7.17/chezmoi-1.7.17-x86_64.rpm
這會(huì)將預(yù)打包的 RPM 安裝到你的系統(tǒng)中。
讓我們繼續(xù)使用以下方法創(chuàng)建你的存儲(chǔ)庫(kù):
$ chezmoi init
它將在 ~/.local/share/chezmoi/
中創(chuàng)建你的新存儲(chǔ)庫(kù)。你可以使用以下命令輕松地切換到該目錄:
$ chezmoi cd
讓我們添加第一個(gè)文件:
chezmoi add ~/.bashrc
這將你的 .bashrc
文件添加到 chezmoi 存儲(chǔ)庫(kù)。
注意:如果你的 .bashrc
文件實(shí)際上是一個(gè)符號(hào)鏈接,則需要添加 -f
標(biāo)志以跟隨它來讀取實(shí)際文件的內(nèi)容。
現(xiàn)在,你可以使用以下命令編輯該文件:
$ chezmoi edit ~/.bashrc
現(xiàn)在讓我們添加一個(gè)私有文件,這是一個(gè)具有 600 或類似權(quán)限的文件。我在 .ssh/config
中有一個(gè)文件,我想通過使用如下命令添加它:
$ chezmoi add ~/.ssh/config
Chezmoi 使用特殊的前綴來跟蹤隱藏文件和私有文件,以解決 Git 的限制。運(yùn)行以下命令以查看它:
$ chezmoi cd
請(qǐng)注意,標(biāo)記為私有的文件實(shí)際上并不是私有的,它們?nèi)詴?huì)以純文本格式保存在你的 Git 存儲(chǔ)庫(kù)中。稍后會(huì)進(jìn)一步解釋。
你可以使用以下方法應(yīng)用任何更改:
$ chezmoi apply
并使用如下命令檢查有什么不同:
$ chezmoi diff
要導(dǎo)出 Chezmoi 可以收集的所有數(shù)據(jù),請(qǐng)運(yùn)行:
$ chezmoi data
其中大多數(shù)是有關(guān)用戶名、架構(gòu)、主機(jī)名、操作系統(tǒng)類型和操作系統(tǒng)名稱的信息。但是你也可以添加我們自己的變量。
繼續(xù),運(yùn)行:
$ chezmoi edit-config
然后輸入以下內(nèi)容:
[data] email = "fedorauser@example.com" name = "Fedora Mcdora"
保存文件,然后再次運(yùn)行 chezmoi data
。你將在底部看到你的電子郵件和姓名已經(jīng)添加成功?,F(xiàn)在,你可以將這些與 Chezmoi 的模板一起使用。運(yùn)行:
$ chezmoi add -T --autotemplate ~/.gitconfig
來將你的 .gitconfig
作為模板添加到 Chezmoi 中。如果 Chezmoi 成功地正確推斷了模板,你將獲得以下信息:
[user] email = "{{ .email }}" name = "{{ .name }}"
如果沒有,則可以將文件更改為這樣。
使用以下方法檢查文件:
$ chezmoi edit ~/.gitconfig
然后使用:
$ chezmoi cat ~/.gitconfig
來查看 Chezmoi 為此文件生成什么。我生成的示例如下:
[root@a6e273a8d010 ~]# chezmoi cat ~/.gitconfig[user] email = "fedorauser@example.com" name = "Fedora Mcdora"[root@a6e273a8d010 ~]#
它將在我們的 Chezmoi 配置中生成一個(gè)充滿變量的文件。你也可以使用變量執(zhí)行簡(jiǎn)單的邏輯語句。一個(gè)例子是:
{{- if eq .chezmoi.hostname "fsteel" }}# 如果主機(jī)名為 "fsteel" 才包括此部分{{- end }}
請(qǐng)注意,要使其正常工作,該文件必須是模板。你可以通過查看文件是否在 chezmoi cd
中的文件名后附加 .tmpl
或使用 -T
選項(xiàng)讀取文件來進(jìn)行檢查。
要對(duì)設(shè)置進(jìn)行故障排除,請(qǐng)使用以下命令。
$ chezmoi doctor
這里重要的是它還向你顯示了所支持的密碼管理器。
[root@a6e273a8d010 ~]# chezmoi doctor warning: version dev ok: runtime.GOOS linux, runtime.GOARCH amd64 ok: /root/.local/share/chezmoi (source directory, perm 700) ok: /root (destination directory, perm 550) ok: /root/.config/chezmoi/chezmoi.toml (configuration file) ok: /bin/bash (shell) ok: /usr/bin/vi (editor) warning: vimdiff (merge command, not found) ok: /usr/bin/git (source VCS command, version 2.25.1) ok: /usr/bin/gpg (GnuPG, version 2.2.18) warning: op (1Password CLI, not found) warning: bw (Bitwarden CLI, not found) warning: gopass (gopass CLI, not found) warning: keepassxc-cli (KeePassXC CLI, not found) warning: lpass (LastPass CLI, not found) warning: pass (pass CLI, not found) warning: vault (Vault CLI, not found) [root@a6e273a8d010 ~]#
你可以使用這些客戶端,也可以使用通用客戶端,也可以使用系統(tǒng)的密鑰環(huán)。
對(duì)于 GPG,你需要使用以下命令將以下內(nèi)容添加到配置中:
$ chezmoi edit-config
[gpg] recipient = "<Your GPG keys Recipient"
你可以使用:
$ chezmoi add --encrypt
來添加任何文件,這些文件將在你的源存儲(chǔ)庫(kù)中加密,并且不會(huì)以純文本格式公開。Chezmoi 會(huì)在應(yīng)用時(shí)自動(dòng)將其解密。
我們也可以在模板中使用它們。例如,存儲(chǔ)在 Pass(已在 Fedora 雜志上介紹)中的機(jī)密令牌。繼續(xù),生成你的機(jī)密信息。
在此示例中,它稱為 githubtoken
:
rwaltr@fsteel:~] $ pass ls Password Store └── githubtoken [rwaltr@fsteel:~] $
接下來,編輯你的模板,例如我們之前創(chuàng)建的 .gitconfig
并添加以下行。
token = {{ pass "githubtoken" }}
然后讓我們使用檢查:
$ chezmoi cat ~/.gitconfig
[rwaltr@fsteel:~] $ chezmoi cat ~/.gitconfig This is Git's per-user configuration file. [user] name = Ryan Walter email = rwalt@pm.me token = mysecrettoken [rwaltr@fsteel:~] $
現(xiàn)在,你的機(jī)密信息已在密碼管理器中妥善保護(hù),你的配置可以公開共享而沒有任何風(fēng)險(xiǎn)!
以上是“l(fā)inux中怎么用Chezmoi取回你的點(diǎn)文件”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。