{"id":38454,"date":"2026-01-31T14:41:23","date_gmt":"2026-01-31T11:41:23","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=38454"},"modified":"2026-01-31T14:41:23","modified_gmt":"2026-01-31T11:41:23","slug":"asdf-nedir-ve-neden-kullanmaliyiz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/","title":{"rendered":"asdf Nedir ve Neden Kullanmal\u0131y\u0131z?"},"content":{"rendered":"<p><body><\/p>\n<h2>asdf Nedir ve Neden Kullanmal\u0131y\u0131z?<\/h2>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, farkl\u0131 projeler genellikle farkl\u0131 programlama dilleri ve bu dillerin farkl\u0131 versiyonlar\u0131n\u0131 gerektirir. \u00d6rne\u011fin, bir projeniz Node.js 16 kullan\u0131rken, ba\u015fka bir projeniz Node.js 18&#8217;e ihtiya\u00e7 duyabilir. Ayn\u0131 durum Python, Ruby, Java, Go gibi bir\u00e7ok dil i\u00e7in de ge\u00e7erlidir. Bu durum, geli\u015ftiriciler i\u00e7in versiyon \u00e7ak\u0131\u015fmalar\u0131 ve karma\u015f\u0131k ortam kurulumlar\u0131 gibi zorluklar yaratabilir. \u0130\u015fte bu noktada <a href=\"https:\/\/asdf-vm.com\/\">asdf<\/a> devreye girer.<\/p>\n<p>asdf, bu t\u00fcr \u00e7oklu dil ortamlar\u0131n\u0131 y\u00f6netmek i\u00e7in geli\u015ftirilmi\u015f g\u00fc\u00e7l\u00fc, geni\u015fletilebilir bir versiyon y\u00f6neticisidir. Node.js i\u00e7in NVM, Python i\u00e7in pyenv, Ruby i\u00e7in RVM\/rbenv gibi spesifik dil y\u00f6neticilerinin aksine, asdf t\u00fcm bu dilleri ve daha fazlas\u0131n\u0131 tek bir tutarl\u0131 aray\u00fcz alt\u0131nda y\u00f6netmenizi sa\u011flar. Bu, geli\u015ftirme ortam\u0131n\u0131z\u0131 sadele\u015ftirir, ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131n\u0131 azalt\u0131r ve yeni bir projeye ba\u015flarken veya mevcut projeler aras\u0131nda ge\u00e7i\u015f yaparken harcanan zaman\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde d\u00fc\u015f\u00fcr\u00fcr.<\/p>\n<h3>asdf&#8217;nin Avantajlar\u0131:<\/h3>\n<ul>\n<li><b>Tek Aray\u00fcz:<\/b> T\u00fcm diller ve \u00e7al\u0131\u015fma zamanlar\u0131 i\u00e7in ayn\u0131 komut setini kullan\u0131rs\u0131n\u0131z (<code>asdf install<\/code>, <code>asdf global<\/code>, <code>asdf local<\/code> vb.).<\/li>\n<li><b>Geni\u015fletilebilirlik:<\/b> Plugin sistemi sayesinde istedi\u011finiz programlama dilini veya arac\u0131 kolayca ekleyebilirsiniz. Topluluk taraf\u0131ndan desteklenen y\u00fczlerce plugin mevcuttur.<\/li>\n<li><b>Proje Ba\u015f\u0131na Versiyon Y\u00f6netimi:<\/b> Bir projenin k\u00f6k dizininde olu\u015fturulan <code>.tool-versions<\/code> dosyas\u0131 sayesinde, o projeye \u00f6zel dil versiyonlar\u0131n\u0131 otomatik olarak etkinle\u015ftirir.<\/li>\n<li><b>Global ve Yerel Kontrol:<\/b> T\u00fcm sisteminiz i\u00e7in global bir versiyon belirleyebilir veya belirli bir proje dizini i\u00e7in yerel bir versiyon atayabilirsiniz.<\/li>\n<li><b>Hafif ve H\u0131zl\u0131:<\/b> Bash betikleriyle yaz\u0131lm\u0131\u015f olmas\u0131 sayesinde hafif bir yap\u0131ya sahiptir ve h\u0131zl\u0131 \u00e7al\u0131\u015f\u0131r.<\/li>\n<\/ul>\n<p>Bu rehberde, Ubuntu 22.04 i\u015fletim sistemi \u00fczerinde asdf&#8217;yi nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve Node.js ve Python gibi pop\u00fcler dillerin farkl\u0131 versiyonlar\u0131n\u0131 nas\u0131l y\u00f6netece\u011finizi ad\u0131m ad\u0131m anlataca\u011f\u0131z.<\/p>\n<h2>asdf Kurulum \u00d6ncesi Haz\u0131rl\u0131klar<\/h2>\n<p>asdf&#8217;yi kurmadan ve kullanmadan \u00f6nce, sisteminizin g\u00fcncel oldu\u011fundan ve gerekli ba\u011f\u0131ml\u0131l\u0131klara sahip oldu\u011fundan emin olmal\u0131y\u0131z. Bu ad\u0131mlar, asdf&#8217;nin kendisinin ve asdf arac\u0131l\u0131\u011f\u0131yla kuraca\u011f\u0131n\u0131z dil \u00e7al\u0131\u015fma zamanlar\u0131n\u0131n sorunsuz bir \u015fekilde derlenip \u00e7al\u0131\u015fabilmesi i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h3>Sistem G\u00fcncellemesi ve Temel Ba\u011f\u0131ml\u0131l\u0131klar<\/h3>\n<p>Terminali a\u00e7\u0131n (<code>Ctrl+Alt+T<\/code>) ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131rarak sisteminizi g\u00fcncelleyin ve temel geli\u015ftirme ara\u00e7lar\u0131n\u0131 y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y\nsudo apt install curl git build-essential -y\n<\/code><\/pre>\n<ul>\n<li><code>curl<\/code>: \u0130nternet \u00fczerinden dosya indirmek i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><code>git<\/code>: asdf&#8217;nin kendisini ve asdf eklentilerini klonlamak i\u00e7in gereklidir.<\/li>\n<li><code>build-essential<\/code>: Derleme ara\u00e7lar\u0131n\u0131 (GCC, G++ ve make gibi) i\u00e7erir. Bu, asdf arac\u0131l\u0131\u011f\u0131yla kuraca\u011f\u0131n\u0131z bir\u00e7ok dilin kaynak koddan derlenmesi i\u00e7in zorunludur.<\/li>\n<\/ul>\n<h3>Dil \u00c7al\u0131\u015fma Zamanlar\u0131 \u0130\u00e7in Ek Ba\u011f\u0131ml\u0131l\u0131klar<\/h3>\n<p>asdf arac\u0131l\u0131\u011f\u0131yla kuraca\u011f\u0131n\u0131z her dilin kendine \u00f6zg\u00fc derleme ba\u011f\u0131ml\u0131l\u0131klar\u0131 olabilir. \u00d6zellikle Python ve Ruby gibi dilleri kaynak koddan derlerken bu ba\u011f\u0131ml\u0131l\u0131klar hayati \u00f6nem ta\u015f\u0131r. A\u015fa\u011f\u0131daki komut, yayg\u0131n olarak kullan\u0131lan dillerin (Python, Ruby, Node.js vb.) \u00e7o\u011fu i\u00e7in gerekli olan ek paketleri y\u00fckler:<\/p>\n<pre><code class=\"language-bash\">sudo apt install libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget llvm libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev -y\n<\/code><\/pre>\n<p>Bu paketler, SSL\/TLS deste\u011fi, s\u0131k\u0131\u015ft\u0131rma k\u00fct\u00fcphaneleri, veritaban\u0131 ba\u011flay\u0131c\u0131lar\u0131 ve di\u011fer \u00e7e\u015fitli derleme gereksinimlerini kar\u015f\u0131lar. Bu ad\u0131m\u0131 atlamak, baz\u0131 dil versiyonlar\u0131n\u0131 kurarken derleme hatalar\u0131yla kar\u015f\u0131la\u015fman\u0131za neden olabilir.<\/p>\n<h2>asdf Temel Kurulumu<\/h2>\n<p>Gerekli haz\u0131rl\u0131klar\u0131 tamamlad\u0131ktan sonra asdf&#8217;nin kendisini sistemimize kurmaya ba\u015flayabiliriz. Bu i\u015flem, asdf&#8217;nin Git deposunu klonlamay\u0131 ve kabuk yap\u0131land\u0131rman\u0131za eklemeyi i\u00e7erir.<\/p>\n<h3>asdf Deposu Klonlama<\/h3>\n<p>asdf&#8217;yi kurman\u0131n \u00f6nerilen yolu, Git deposunu do\u011frudan kullan\u0131c\u0131 dizininize klonlamakt\u0131r. Bu, asdf&#8217;yi g\u00fcncellemeyi ve y\u00f6netmeyi kolayla\u015ft\u0131r\u0131r. Klonlama i\u015flemi i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n. Belirli bir kararl\u0131 s\u00fcr\u00fcm\u00fc (<code>v0.14.0<\/code> gibi) klonlamak, gelecekteki olas\u0131 uyumluluk sorunlar\u0131n\u0131 \u00f6nlemek i\u00e7in iyi bir pratiktir:<\/p>\n<pre><code class=\"language-bash\">git clone https:\/\/github.com\/asdf-vm\/asdf.git ~\/.asdf --branch v0.14.0\n<\/code><\/pre>\n<p>Bu komut, asdf&#8217;yi <code>~\/.asdf<\/code> dizinine klonlayacakt\u0131r. \u0130stedi\u011finiz zaman en son kararl\u0131 s\u00fcr\u00fcm\u00fc <a href=\"https:\/\/github.com\/asdf-vm\/asdf\/releases\">asdf GitHub Releases<\/a> sayfas\u0131ndan kontrol edebilirsiniz.<\/p>\n<h3>Kabuk Yap\u0131land\u0131rmas\u0131na Ekleme (Bash\/Zsh)<\/h3>\n<p>asdf&#8217;nin komutlar\u0131n\u0131 terminalde kullanabilmek i\u00e7in, kabuk ortam\u0131n\u0131za asdf&#8217;nin betiklerini kaynak olarak eklemeniz gerekir. Kulland\u0131\u011f\u0131n\u0131z kabu\u011fa g\u00f6re (Bash veya Zsh) a\u015fa\u011f\u0131daki ad\u0131mlardan birini uygulay\u0131n.<\/p>\n<h4>Bash Kullan\u0131c\u0131lar\u0131 \u0130\u00e7in (.bashrc)<\/h4>\n<p>E\u011fer Bash kullan\u0131yorsan\u0131z, <code>~\/.bashrc<\/code> dosyan\u0131z\u0131n sonuna a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin:<\/p>\n<pre><code class=\"language-bash\">echo -e \"\\n. \\\"$HOME\/.asdf\/asdf.sh\\\"\" >> ~\/.bashrc\necho -e \"\\n. \\\"$HOME\/.asdf\/completions\/asdf.bash\\\"\" >> ~\/.bashrc\n<\/code><\/pre>\n<p>\u0130lk sat\u0131r asdf&#8217;nin ana beti\u011fini y\u00fcklerken, ikinci sat\u0131r komut tamamlama (tab-completion) \u00f6zelli\u011fini etkinle\u015ftirir, bu da asdf komutlar\u0131n\u0131 yazarken size b\u00fcy\u00fck kolayl\u0131k sa\u011flar.<\/p>\n<h4>Zsh Kullan\u0131c\u0131lar\u0131 \u0130\u00e7in (.zshrc)<\/h4>\n<p>E\u011fer Zsh kullan\u0131yorsan\u0131z, <code>~\/.zshrc<\/code> dosyan\u0131z\u0131n sonuna a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin:<\/p>\n<pre><code class=\"language-bash\">echo -e \"\\n. \\\"$HOME\/.asdf\/asdf.sh\\\"\" >> ~\/.zshrc\necho -e \"\\n. \\\"$HOME\/.asdf\/completions\/asdf.zsh\\\"\" >> ~\/.zshrc\n<\/code><\/pre>\n<p>Zsh kullan\u0131c\u0131lar\u0131 i\u00e7in de ayn\u0131 mant\u0131k ge\u00e7erlidir.<\/p>\n<h3>Kabuk Ortam\u0131n\u0131 Yeniden Y\u00fckleme<\/h3>\n<p>Yap\u0131land\u0131rma dosyalar\u0131n\u0131 de\u011fi\u015ftirdikten sonra, de\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in kabuk ortam\u0131n\u0131z\u0131 yeniden y\u00fcklemeniz gerekir. Bunu ya terminali kapat\u0131p yeniden a\u00e7arak ya da a\u015fa\u011f\u0131daki komutlardan birini \u00e7al\u0131\u015ft\u0131rarak yapabilirsiniz:<\/p>\n<pre><code class=\"language-bash\"># Bash i\u00e7in:\nsource ~\/.bashrc\n\n<h2>Zsh i\u00e7in:<\/h2>\nsource ~\/.zshrc\n<\/code><\/pre>\n<h3>Kurulumu Do\u011frulama<\/h3>\n<p>asdf&#8217;nin ba\u015far\u0131yla kuruldu\u011funu do\u011frulamak i\u00e7in terminalde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">asdf --version\n<\/code><\/pre>\n<p>Ekranda asdf&#8217;nin y\u00fckl\u00fc versiyon numaras\u0131n\u0131 g\u00f6rmeniz gerekir (\u00f6rne\u011fin, <code>v0.14.0<\/code>). E\u011fer bir hata al\u0131rsan\u0131z, yukar\u0131daki ad\u0131mlar\u0131 dikkatlice kontrol edin.<\/p>\n<h2>asdf ile Dil \u00c7al\u0131\u015fma Zaman\u0131 Eklentileri ve Versiyon Y\u00f6netimi<\/h2>\n<p>asdf&#8217;nin kendisi kurulduktan sonra, s\u0131ra istedi\u011fimiz programlama dillerini ve ara\u00e7lar\u0131n\u0131 eklemeye ve y\u00f6netmeye gelir. Bu b\u00f6l\u00fcm, asdf&#8217;nin en temel ve en s\u0131k kullan\u0131lan \u00f6zelliklerini kapsar.<\/p>\n<h3>Eklenti (Plugin) Ekleme<\/h3>\n<p>asdf, her dil veya ara\u00e7 i\u00e7in ayr\u0131 bir &#8220;plugin&#8221; (eklenti) kullan\u0131r. Bu eklentiler, asdf&#8217;ye belirli bir dilin nas\u0131l indirilece\u011fini, derlenece\u011fini ve kurulaca\u011f\u0131n\u0131 \u00f6\u011fretir. Mevcut t\u00fcm eklentileri listelemek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">asdf plugin list all\n<\/code><\/pre>\n<p>Belirli bir eklentiyi aramak i\u00e7in <code>grep<\/code> ile filtreleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">asdf plugin list all | grep nodejs\nasdf plugin list all | grep python\n<\/code><\/pre>\n<p>Bir eklentiyi sisteminize eklemek i\u00e7in <code>asdf plugin add <plugin_ad\u0131><\/code> komutunu kullan\u0131n. \u00d6rne\u011fin, Node.js ve Python i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">asdf plugin add nodejs\nasdf plugin add python\n<\/code><\/pre>\n<p>Ekledi\u011finiz eklentileri listelemek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">asdf plugin list\n<\/code><\/pre>\n<h3>Dil Versiyonlar\u0131n\u0131 Y\u00fckleme<\/h3>\n<p>Eklentiyi ekledikten sonra, o dilin istedi\u011finiz versiyonlar\u0131n\u0131 y\u00fckleyebilirsiniz. Bir dilin mevcut t\u00fcm versiyonlar\u0131n\u0131 g\u00f6rmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">asdf list-all nodejs\nasdf list-all python\n<\/code><\/pre>\n<p>Belirli bir versiyonu y\u00fcklemek i\u00e7in <code>asdf install <plugin_ad\u0131> <versiyon_numaras\u0131><\/code> komutunu kullan\u0131n. Ayr\u0131ca <code>latest<\/code> anahtar kelimesini kullanarak en son kararl\u0131 s\u00fcr\u00fcm\u00fc de y\u00fckleyebilirsiniz.<\/p>\n<pre><code class=\"language-bash\"># Node.js'nin belirli bir versiyonunu y\u00fckleme\nasdf install nodejs 18.17.1\n\n<h2>Node.js'nin en son kararl\u0131 versiyonunu y\u00fckleme<\/h2>\nasdf install nodejs latest\n\n<h2>Python'\u0131n belirli versiyonlar\u0131n\u0131 y\u00fckleme<\/h2>\nasdf install python 3.10.12\nasdf install python 3.11.5\n<\/code><\/pre>\n<p>Y\u00fckleme i\u015flemi, dilin boyutuna ve sisteminizin h\u0131z\u0131na ba\u011fl\u0131 olarak biraz zaman alabilir.<\/p>\n<h3>Global ve Yerel Versiyon Ayarlama<\/h3>\n<p>asdf, dil versiyonlar\u0131n\u0131 iki seviyede y\u00f6netmenize olanak tan\u0131r:<\/p>\n<h4>Global Versiyon Ayarlama<\/h4>\n<p>T\u00fcm sisteminizde varsay\u0131lan olarak kullan\u0131lacak bir dil versiyonunu ayarlamak i\u00e7in <code>asdf global <plugin_ad\u0131> <versiyon_numaras\u0131><\/code> komutunu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">asdf global nodejs 18.17.1\nasdf global python 3.10.12\n<\/code><\/pre>\n<p>Bu, <code>~\/.tool-versions<\/code> adl\u0131 bir dosya olu\u015fturur veya g\u00fcnceller.<\/p>\n<h4>Yerel (Proje Ba\u015f\u0131na) Versiyon Ayarlama<\/h4>\n<p>Belirli bir proje dizini i\u00e7in farkl\u0131 bir versiyon kullanmak isterseniz, o dizine gidip <code>asdf local <plugin_ad\u0131> <versiyon_numaras\u0131><\/code> komutunu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">cd ~\/my_node_project\nasdf local nodejs 16.20.2\n\ncd ~\/my_python_project\nasdf local python 3.11.5\n<\/code><\/pre>\n<p>Bu komut, i\u00e7inde bulundu\u011funuz dizine <code>.tool-versions<\/code> adl\u0131 bir dosya olu\u015fturur. Bu dosya, projenin kaynak kontrol sistemine (Git gibi) dahil edilebilir, b\u00f6ylece t\u00fcm ekip \u00fcyeleri ayn\u0131 dil versiyonlar\u0131n\u0131 otomatik olarak kullanabilir.<\/p>\n<h3>Y\u00fckl\u00fc Versiyonlar\u0131 Listeleme ve Do\u011frulama<\/h3>\n<p>Y\u00fckl\u00fc dil versiyonlar\u0131n\u0131 listelemek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">asdf list nodejs\nasdf list python\n<\/code><\/pre>\n<p>Hangi versiyonun \u015fu anda aktif oldu\u011funu do\u011frulamak i\u00e7in ilgili dilin versiyon komutunu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">node -v\nnpm -v\npython --version\npip --version\n<\/code><\/pre>\n<p>E\u011fer bir projedeyseniz, <code>.tool-versions<\/code> dosyas\u0131nda belirtilen versiyonun aktif oldu\u011funu g\u00f6receksiniz. Proje d\u0131\u015f\u0131ndaysan\u0131z veya <code>.tool-versions<\/code> dosyas\u0131 yoksa, global olarak ayarlad\u0131\u011f\u0131n\u0131z versiyon aktif olacakt\u0131r.<\/p>\n<h3>Versiyon Kald\u0131rma<\/h3>\n<p>Art\u0131k ihtiyac\u0131n\u0131z olmayan bir dil versiyonunu kald\u0131rmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">asdf uninstall nodejs 16.20.2\nasdf uninstall python 3.10.12\n<\/code><\/pre>\n<h3>Path Yenileme (Reshim)<\/h3>\n<p>Bazen yeni bir dil veya ara\u00e7 y\u00fckledikten sonra komutlar\u0131n bulunamad\u0131\u011f\u0131 durumlarla kar\u015f\u0131la\u015fabilirsiniz. Bu, asdf&#8217;nin &#8220;shims&#8221; (y\u00f6nlendirici betikler) mekanizmas\u0131n\u0131n g\u00fcncellenmesi gerekti\u011fi anlam\u0131na gelir. Genellikle bu otomatik olarak yap\u0131l\u0131r, ancak manuel olarak \u00e7al\u0131\u015ft\u0131rman\u0131z gerekirse:<\/p>\n<pre><code class=\"language-bash\">asdf reshim\n<\/code><\/pre>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<p>Bu rehberde, Ubuntu 22.04 \u00fczerinde asdf&#8217;yi nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve farkl\u0131 programlama dillerinin versiyonlar\u0131n\u0131 nas\u0131l y\u00f6netece\u011finizi \u00f6\u011frendiniz. asdf, geli\u015ftirme ortam\u0131n\u0131z\u0131 d\u00fczenlemenize, versiyon \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nlemenize ve farkl\u0131 projeler aras\u0131nda sorunsuz ge\u00e7i\u015f yapman\u0131za olanak tan\u0131yan paha bi\u00e7ilmez bir ara\u00e7t\u0131r. \u00d6zellikle \u00e7ok dilli projelerde \u00e7al\u0131\u015fan veya birden fazla dil \u00f6\u011frenen geli\u015ftiriciler i\u00e7in asdf, verimlili\u011fi art\u0131ran vazge\u00e7ilmez bir yard\u0131mc\u0131d\u0131r.<\/p>\n<p>asdf&#8217;nin sundu\u011fu esneklik ve geni\u015fletilebilirlik sayesinde, geli\u015ftirme s\u00fcrecinizi \u00e7ok daha ak\u0131c\u0131 hale getirebilirsiniz. Art\u0131k farkl\u0131 dillerin farkl\u0131 versiyonlar\u0131n\u0131 kurmak ve y\u00f6netmek karma\u015f\u0131k bir g\u00f6rev olmaktan \u00e7\u0131k\u0131p, birka\u00e7 basit komutla halledilebilen standart bir i\u015flem haline gelecektir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<h4>1. asdf neden NVM, pyenv, rbenv gibi tek dil y\u00f6neticilerinden daha iyi?<\/h4>\n<p>asdf&#8217;nin temel avantaj\u0131, t\u00fcm dilleri ve \u00e7al\u0131\u015fma zamanlar\u0131n\u0131 tek bir tutarl\u0131 aray\u00fcz alt\u0131nda y\u00f6netmesidir. Her dil i\u00e7in farkl\u0131 bir ara\u00e7 \u00f6\u011frenmek ve yap\u0131land\u0131rmak yerine, asdf ile tek bir komut seti \u00f6\u011frenirsiniz. Bu, \u00f6zellikle \u00e7ok dilli geli\u015ftirme ortamlar\u0131nda karma\u015f\u0131kl\u0131\u011f\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde azalt\u0131r ve genel verimlili\u011fi art\u0131r\u0131r.<\/p>\n<h4>2. Bir dilin belirli bir s\u00fcr\u00fcm\u00fcn\u00fc y\u00fckleyemiyorum, ne yapmal\u0131y\u0131m?<\/h4>\n<p>Genellikle bu t\u00fcr sorunlar, dilin derlenmesi i\u00e7in gerekli olan sistem ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n eksikli\u011finden kaynaklan\u0131r. Rehberin &#8220;Kurulum \u00d6ncesi Haz\u0131rl\u0131klar&#8221; b\u00f6l\u00fcm\u00fcndeki t\u00fcm <code>sudo apt install<\/code> komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun. \u00d6zellikle <code>build-essential<\/code> ve dilin kendi \u00f6zel k\u00fct\u00fcphaneleri (\u00f6rne\u011fin Python i\u00e7in <code>libssl-dev<\/code>, <code>zlib1g-dev<\/code>) eksik olabilir. Hata mesaj\u0131n\u0131 dikkatlice okuyarak eksik paketi tespit etmeye \u00e7al\u0131\u015f\u0131n.<\/p>\n<h4>3. asdf y\u00fckl\u00fc versiyonlar\u0131 nerede saklar?<\/h4>\n<p>asdf, t\u00fcm eklentilerini ve y\u00fckl\u00fc dil versiyonlar\u0131n\u0131 <code>~\/.asdf<\/code> dizini alt\u0131nda saklar. \u00d6rne\u011fin, Node.js versiyonlar\u0131 <code>~\/.asdf\/installs\/nodejs\/<\/code> alt\u0131nda, Python versiyonlar\u0131 ise <code>~\/.asdf\/installs\/python\/<\/code> alt\u0131nda bulunur.<\/p>\n<h4>4. asdf&#8217;yi nas\u0131l g\u00fcncellerim?<\/h4>\n<p>asdf&#8217;yi g\u00fcncellemek i\u00e7in, asdf deposunu klonlad\u0131\u011f\u0131n\u0131z dizine gidip Git komutlar\u0131n\u0131 kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">cd ~\/.asdf\ngit pull\ngit checkout $(git describe --abbrev=0 --tags) # En son kararl\u0131 s\u00fcr\u00fcme ge\u00e7i\u015f yapar\n<\/code><\/pre>\n<p>Daha sonra kabu\u011funuzu yeniden kaynaklaman\u0131z gerekebilir (<code>source ~\/.bashrc<\/code> veya <code>source ~\/.zshrc<\/code>).<\/p>\n<h4>5. <code>.tool-versions<\/code> dosyas\u0131 ne i\u015fe yarar?<\/h4>\n<p><code>.tool-versions<\/code> dosyas\u0131, asdf&#8217;ye belirli bir dizinde hangi dil versiyonlar\u0131n\u0131n kullan\u0131laca\u011f\u0131n\u0131 s\u00f6yler. \u00d6rne\u011fin, bir projenin k\u00f6k dizininde <code>.tool-versions<\/code> dosyas\u0131 olu\u015fturup i\u00e7ine <code>nodejs 16.20.2<\/code> yazarsan\u0131z, o dizinde ve alt dizinlerinde Node.js komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda otomatik olarak 16.20.2 versiyonu kullan\u0131lacakt\u0131r. Bu dosya, projeler aras\u0131nda versiyon tutarl\u0131l\u0131\u011f\u0131n\u0131 sa\u011flamak i\u00e7in s\u00fcr\u00fcm kontrol sistemine (Git) dahil edilebilir.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"asdf Nedir ve Neden Kullanmal\u0131y\u0131z?\nModern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, farkl\u0131 projeler genellikle farkl\u0131 programlama dilleri ve bu diller","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-38454","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>asdf Nedir ve Neden Kullanmal\u0131y\u0131z? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"asdf Nedir ve Neden Kullanmal\u0131y\u0131z?\" \/>\n<meta property=\"og:description\" content=\"asdf Nedir ve Neden Kullanmal\u0131y\u0131z? Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, farkl\u0131 projeler genellikle farkl\u0131 programlama dilleri ve bu diller\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-31T11:41:23+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"asdf Nedir ve Neden Kullanmal\u0131y\u0131z?\",\"datePublished\":\"2026-01-31T11:41:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/\"},\"wordCount\":1811,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/\",\"name\":\"asdf Nedir ve Neden Kullanmal\u0131y\u0131z? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-31T11:41:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"asdf Nedir ve Neden Kullanmal\u0131y\u0131z?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"asdf Nedir ve Neden Kullanmal\u0131y\u0131z? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/","og_locale":"tr_TR","og_type":"article","og_title":"asdf Nedir ve Neden Kullanmal\u0131y\u0131z?","og_description":"asdf Nedir ve Neden Kullanmal\u0131y\u0131z? Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, farkl\u0131 projeler genellikle farkl\u0131 programlama dilleri ve bu diller","og_url":"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-31T11:41:23+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"10 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"asdf Nedir ve Neden Kullanmal\u0131y\u0131z?","datePublished":"2026-01-31T11:41:23+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/"},"wordCount":1811,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/","url":"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/","name":"asdf Nedir ve Neden Kullanmal\u0131y\u0131z? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-31T11:41:23+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/asdf-nedir-ve-neden-kullanmaliyiz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"asdf Nedir ve Neden Kullanmal\u0131y\u0131z?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38454","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=38454"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38454\/revisions"}],"predecessor-version":[{"id":38455,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38454\/revisions\/38455"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38454"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38454"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38454"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}