gokayburuc.dev

Stow ve Symlink ile Konfigurasyon Yönetimi

Stow ve Symlink ile Konfigurasyon Yönetimi

Linux kullanıcılarının en çok zamanını alan faaliyetlerin başında yeni kurulum yaptıkları tool ve editorlerin Konfigurasyonlarını yapmak gelir. Bir device (aygıt) 'tan başka bir aygıta geçtiklerinde ayarlarını da otomatik olarak taşımak isteyenler için bu yazıyı kaleme almaya karar verdim.

Bu yazı :

için kaleme alınmıştır.

Linux veya diğer Unix tabanlı işletim sistemlerinde bir dizine başka bir isimle ulaşmaya olanak veren kısayol atamasına symbolic link ismi verilir. Ayrıca soft link olarak da adlandırıldığı noktalar vardır. (Bknz. Hard Link)

Sembolik Link Oluşturma

Sembolik link oluşturmak için aşağıdaki sözdizimi (syntax) kullanılır:

ln -s <target> <symbolic-link-path>

Örneğin aşağıdaki myfile.txt isimli dosyayı myfile-symlink.txt isimli bir yola atıyoruz:

ln -s /home/user/myfile.txt /home/myfile-symlink.txt

Aynı işlemi klasör yapıları için de kullanabiliriz:

ln -s /home/user/myfolder /home/user/myfolder-symlink

Yukarıda myfolder isimli klasörümüzü myfolder-symlink isimli klasöre atadık.

Sembolik Link Silme

Mevcut bir sembolik link normal dosya gibi silinebilir. Bu işlem orjinal dosyayı silmez ya da değiştirmez.

rm <sembolik-link>

Sembolik link ismi girilerek aşağıdaki şekilde silinir:

rm /home/user/link_dosya.txt

Linux tabanlı işletim sistemlerinde hard link kavramı, asıl dosyaya bağlı farklı bir yolda bulunan klon dosyaları belirtir.

Bir sistemde bir dosya ve buna bağlı hard link oluşturalım :

touch original.txt
ln original.txt copy.txt 

Bu işlem sonrasında artık aynı inode üzerinde tutulan iki adet dosyamız var. original.txt üzerinde yapılan değişikliğe copy.txt üzerinden ulaşabilirsiniz. Buradaki dosyalardan herhangi biri silindiğinde veri diğer dosya üzerinden erişilebilir haldedir.

original.txt ve copy.txt isimli iki dosyamız da hafızada aynı inode 'u kullandıkları için hafızadan tamamiyle silme işlemi 2 dosya da silinene kadar gerçekleşmez. Bu noktada symlink ile bir fark ortaya çıkar. symlink lerde orjinal dosya silindikten sonra symlink kopyası erişilemez olur. Çünkü inode bağlantısı olan dosya silinmiştir. Dolayısıyla sadece dosya yolu kalmıştır.

rm original.txt 
rm copy.txt 

Stow Nedir ?

Stow birden fazla symlink'in organize bir şekilde otomatik bağlanmasını ve çözülmesini yönetmek amacıyla kullanılan bir araçtır. Bu araç özellikle konfigürasyon dosyaları içeren dotfile yapıları ( nokta ile gizlenmiş konfigürasyon dosyaları) nı yönetmek için kullanılır.

Stow uygulamasını kullanabilmek için aşağıdaki komutu yazmanız gerekir:

sudo apt install stow 

Ayrıca daha fazla bilgi için aşağıdaki web adresini ziyaret edebilirsiniz:

Gnu.org - Stow

Stow Bağlantısı Atılması

Github üzerinden bir dotfiles yapısını indirdiniz diyelim. Aşağıdakine benzer bir dosya ağacı olduğunu düşünelim:

dotfiles/
├── bash/
│   └── .bashrc
├── nvim/
│   └── .config/nvim/init.vim

Burada aşağıdaki komut ile stow işlemi gerçekleştirebiliyoruz:

cd ~/dotfiles
stow bash

Bu komut ~/dotfiles/bash/.bashrc dosyasını ~/.bashrc olacak şekilde bir symlink oluşturur. Böylece dosya yolunu değiştirmeden başka bir konfigürasyonu sistemde deneyebilirsiniz. Artık sisteminizce .bashrc dosyasına ulaşılmak istendiğinde ~/dotfiles/bash/.bashrc dosyasına geçiş yapılır.

Bu işlem sırasında ~/dotfiles/bash/.bashrc isimli dosya sisteminizde yer alan ~/.bashrc yoluna bağlanır. Sistem tarafından .bashrc dosyasına erişilmek istendiğinde ~/dotfiles/bash/.bashrc üzerindeki dosyaya geçiş sağlanır.

Unstow Nedir?

stow yaptığınız bir dosyanın bağlantısını kesmek ve başka bir sembolik bağlantı bağlamak istiyorsunuz, bu noktada unstow işlemine ihtiyacınız olacaktır. unstow , stow kullanarak oluşturulan symlink yapılarını kaldırmak için kullanılır.

stow -D <paket-adı> 

Bizim örneğimiz için yine dotfiles üzerinden ilgili klasöre ulaşıldıktan sonra aşağıdaki komut ile gerçekleşir.

cd ~/dotfiles
stow -D bash

Yukarıda gördüğünüz -D parametresi delete anlamına gelir ve oluşturulan symlink bağlantısını kaldırır. symlink yani oluşturulan sembolik link yolu (symlink path) silinirken, orjinal dosyaya dokunulmaz. Böylece symlink bağlayıp (link) , bağlantı keserek (unlink) konfigurasyon dosyalarını yönetebiliriz.

HATIRLATMA: unstow orada symlink değil de normal bir klasör/dosya varsa dokunmaz ve uyarı verir.

Özellik ln -s (symlink) stow
Manuel işlem Evet Hayır (otomatik ve sistematik)
Çoklu dosya yönetimi Zor Kolay
Geri alma Zor (manuel silmen gerekir) Kolay (stow -D ile kaldırılabilir)
Kapsam Tek tek dosya Klasör bazlı yapı
Kullanım Alanı Genel amaçlı Özellikle dotfiles ve config yönetimi

Stow ile symlink arasındaki fark symlink işlemlerini otomatik hale getirmek ve hızlıca klasör bazında bağlantı sağlayıp bağlantıyı kopartmak için stow'un daha elverişli olmasıdır. Temelde her iki yapıyla da bu bağlantı gerçekleştirilebilse de, konfigurasyon yapıları arasında geçişlerde işlem kolaylığı ve hızlı olmasından dolayı stow tercih dilir.

Sonsöz ve Değerlendirme

Bu yazıda Linux işletim sistemi üzerinde symlink yapılarının nasıl oluşturulup nasıl yönetilebileceğini öğrendiniz. Ayrıca stow ve unstow ile dotfile yönetimine dair temel bilgi sayesinde nvim, bash,zsh,fish, vim, helix ve benzeri uygulamalar için konfigurasyon yönetimine bir adım attınız.

Yeni yazılarda buluşmak üzere. Allaha emanet olun!

#bash #linux #termux