Themenersteller
#1
find ile sürüm ve bağımlılık kontrolü
Giriş ve nedenleri
İşletim sistemi üzerinde bir proje veya yazılım paketinin sürüm ve bağımlılıklerini hızlı bir şekilde taramak, güncel kalmayı ve güvenilir dağıtımları sağlamak için kritik olabilir. Özellikle çok sayıda modül veya bileşenin bulunduğu projelerde, hangi sürümlerin kullanıldığını ve hangi paketlerin birbirine bağımlı olduğunu net biçimde görmek gerekir. Bu amaçla find komutu, dosya yapısı içinde belirli saat, boyut veya adlandırmayla dosyaları filtrelemek için kullanışlıdır; sürüm numaralarını içeren dosyaları, yapılandırma dosyalarını veya bağımlılık listelerini toplu halde bulmak için etkili bir araçtır.
1) Kaynaklar ve sürüm dosyalarının konumlandırılması
Bir projede sürüm bilgileri genelde şu yerlerde bulunabilir:
2) Find ile hedeflenen dosyaları toplama
Örneğin proje kökünde tüm bağımlılık dosyalarını bulmak için:
3) Sürümlerden hızlı özet çıkarma
Birden çok dosyada sürüm bilgisi varsa, her dosyadan sürümü çekmek için basit bir arama kullanabilirsiniz:
Veya özel dosya adları için:
4) Bağımlılık bağımlılıklarını izlemek
Bir proje içerisinde hangi modülün hangi diğer modüle bağımlı olduğunu görmek için:
5) Otomasyon için küçük akışlar
[code]diff
Giriş ve nedenleri
İşletim sistemi üzerinde bir proje veya yazılım paketinin sürüm ve bağımlılıklerini hızlı bir şekilde taramak, güncel kalmayı ve güvenilir dağıtımları sağlamak için kritik olabilir. Özellikle çok sayıda modül veya bileşenin bulunduğu projelerde, hangi sürümlerin kullanıldığını ve hangi paketlerin birbirine bağımlı olduğunu net biçimde görmek gerekir. Bu amaçla find komutu, dosya yapısı içinde belirli saat, boyut veya adlandırmayla dosyaları filtrelemek için kullanışlıdır; sürüm numaralarını içeren dosyaları, yapılandırma dosyalarını veya bağımlılık listelerini toplu halde bulmak için etkili bir araçtır.
1) Kaynaklar ve sürüm dosyalarının konumlandırılması
Bir projede sürüm bilgileri genelde şu yerlerde bulunabilir:
- package.json, package-lock.json veya yarn.lock gibi paket yöneticisi dosyaları
- requirements.txt, Pipfile veya poetry.lock gibi Python bağımlılık dosyaları
- pom.xml, build.gradle gibi Java ekosisteminde sürüm bilgileri
- Dockerfile veya docker-compose.yml gibi konteynerli ortamlarda sürüm etiketleri
- README veya sürüm etiketlerini içeren sürüm dosyaları (VERSION, CHANGELOG)
2) Find ile hedeflenen dosyaları toplama
Örneğin proje kökünde tüm bağımlılık dosyalarını bulmak için:
CODE
1find . -type f \( -name "package.json" -o -name "requirements.txt" -o -name "Pipfile" -o -name "poetry.lock" -o -name "pom.xml" -o -name "build.gradle" \) -print3) Sürümlerden hızlı özet çıkarma
Birden çok dosyada sürüm bilgisi varsa, her dosyadan sürümü çekmek için basit bir arama kullanabilirsiniz:
CODE
1find . -type f -name "[i].json" -or -name "[/i].toml" -print0 | xargs -0 grep -H "version"Veya özel dosya adları için:
CODE
1grep -R --include="package.json" "version" .4) Bağımlılık bağımlılıklarını izlemek
Bir proje içerisinde hangi modülün hangi diğer modüle bağımlı olduğunu görmek için:
- Node/npm sistemlerinde:
CODE
1cat package.json | jq '.dependencies, .devDependencies'- Python için:
CODE
1pipdeptree -w silence- Java için:
CODE
1grep -E "|" pom.xml -n5) Otomasyon için küçük akışlar
- Find ile belirli sürüm kalıplarını yakalamak:
CODE
1find . -type f -name "[i].json" -print0 | xargs -0 grep -E "\"version\"\\s[/i]:\\s*\"([^\"]+)\"" -H- Farklı sürüm dosyalarını karşılaştırmalı özetlemek:
[code]diff
