Post

Oget: Ollama Modellerini İnternetsiz Kurmanın En Kolay Yolu

🇹🇷 Oget, Ollama modellerini CDN üzerinden doğrudan indirerek çevrimdışı ortamlara kolayca kurmanızı sağlayan bir komut satırı aracıdır.

Oget: Ollama Modellerini İnternetsiz Kurmanın En Kolay Yolu

Türkiye’de (ve dünyanın pek çok yerinde) ollama pull komutu, özellikle yavaş veya kararsız internet bağlantılarında çeşitli zorluklara yol açabilmektedir. İndirmelerin yarıda kesilmesi, taşma (timeout) hataları ve sürecin baştan başlaması gibi yaygın sorunları kalıcı olarak aşmak amacıyla Oget aracını geliştirdik. | 🇬🇧 English

Oget Nedir?

Oget 🦙, Ollama modelleri için doğrudan CDN indirme bağlantılarını sağlayan ve bu dosyaları çevrimdışı (offline) olarak Ollama’ya entegre eden hafif bir komut satırı aracıdır. Herhangi bir harici kütüphane bağımlılığı olmaksızın, tamamen standart Python kütüphaneleri kullanılarak tasarlanmıştır.

Standart ollama pull gemma2:2b komutu, modeli kendi servis altyapısı üzerinden indirir; bağlantı koptuğunda süreç genellikle başarısızlıkla sonuçlanır. Oysa Ollama kayıt defteri, standart bir OCI (Docker) yapısı kullanır. Bu da manifest ve blob URL’lerini doğrudan temin ederek, işlemi destekleyen herhangi bir gelişmiş indirme yöneticisi (IDM, aria2, wget, curl vb.) ile çok daha stabil ve hızlı bir şekilde tamamlayabileceğiniz anlamına gelir.

İşte Oget bu süreci otomatikleştirerek kontrolü tamamen size bırakır.

Kurulum

pip ile (tüm platformlar)

1
pip install oget

AUR ile (Arch Linux)

1
2
3
4
5
6
7
8
9
10
# yay kullanarak
yay -S oget

# paru kullanarak
paru -S oget

# Manuel
git clone https://aur.archlinux.org/oget.git
cd oget
makepkg -si

Nasıl Kullanılır?

Oget’in kullanımı 3 temel adımdan oluşmaktadır:

flowchart LR
    A(["🖥️ Kullanıcı"]) --> B["oget get gemma2:2b"]
    B --> C[("registry.ollama.ai
    Manifest + Blob URL'leri")]
    C --> D["curl / IDM / aria2
    Dosyaları indir"]
    D --> E["oget install"]
    E --> F(["✅ ollama run gemma2:2b"])

1. Adım — İndirme Bağlantılarını Alın

Aşağıdaki komutları kullanarak istediğiniz modelin indirme bağlantılarını alabilirsiniz:

1
2
3
oget get gemma2:2b
oget get deepseek-r1:7b
oget get huihui_ai/deepseek-r1-abliterated:8b

Bu komut başarıyla çalıştığında ekranda şu bilgiler listelenir:

  • 📄 Manifest dosyasının doğrudan URL adresi
  • 📦 Modele ait her bir indirme katmanının (blob) CDN URL’si ve dosya boyutu
  • Terminal üzerinden doğrudan çalıştırılması için hazır curl komutları

Örnek terminal çıktısı:

1
2
3
4
5
6
7
8
9
10
11
12
Manifest:
📄 https://registry.ollama.ai/v2/library/gemma2/manifests/2b

Curl command to download the manifest (run in your manifest folder):
curl -L "https://registry.ollama.ai/v2/library/gemma2/manifests/2b" -o "manifest"

Download links for layers:
1 - [1.6 GB] https://registry.ollama.ai/v2/library/gemma2/blobs/sha256:...
2 - [4.9 KB] https://registry.ollama.ai/v2/library/gemma2/blobs/sha256:...

Curl command to download all blobs (run in your blobs folder):
curl -L "..." -o "sha256-..."

2. Adım — Dosyaları İndirin

Terminal çıktısındaki hazır curl komutlarını veya listelenen CDN dosyalarını dilediğiniz bir indirme yöneticisi (IDM vb.) ile iki ayrı klasör halinde indirebilirsiniz:

  • İlk klasör manifest verilerini içermelidir.
  • İkinci klasör ise model ağırlıklarını barındıran blob dosyalarını indirmek içindir.

Bağlantılar doğrudan Ollama’nın CDN sunucularından alındığı için standart limitlere takılmazsınız.

3. Adım — Ollama Kurulumu

Dosyaları indirdikten sonra, çevrimdışı (offline) kurulum işlemini başlatabilirsiniz:

1
2
3
4
5
# Linux/macOS sistemlerde (yetki için sudo gereklidir)
sudo oget install --model gemma2:2b --blobsPath ./downloads

# Ollama modeller dizinini manuel tanımlamak isterseniz:
sudo oget install --model gemma2:2b --blobsPath ./downloads --modelsPath ~/.ollama/models

Kurulum işlemi tamamlandıktan sonra, Ollama modelinizi standart yöntemle başlatabilirsiniz:

1
ollama run gemma2:2b

Model çalıştırılmaya hazırdır. Tüm bu süreç internet bağlantısına ihtiyaç duymadan, yerel dosyalar üzerinden güvenle gerçekleşir.

Mimari ve Arka Plan

Oget mimarisinin temel mantığı cmd_get fonksiyonunda kurgulanmıştır. Ollama’nın uzaktan kayıt defteri olan registry.ollama.ai, yapısı itibarıyla standart Docker/OCI protokolü ile tam uyumludur.

Oget, sisteme GET /v2/<namespace>/<model>/manifests/<tag> şeklinde doğrudan bir istek göndererek JSON formatında sistem manifest’ini (model içeriğini) çeker. Bu manifest ağacı içerisinde yer alan ve modeli oluşturan tüm veri katmanların (layers), güvenlik doğrulama kodu (sha256 hash) ve disk boyutları ayrıntılı olarak raporlanır.

1
2
3
4
url = f"https://{DEFAULT_REGISTRY}/v2/{namespace}/{model}/manifests/{tag}"
req = urllib.request.Request(url, headers={
    "Accept": "application/vnd.docker.distribution.manifest.v2+json"
})

Manifestten toplanan veriler sayesinde her bir blob (model veri paketi) için doğrudan ve yüksek hızlı CDN indirme rotası oluşturulur:

1
layer_url = f"https://{DEFAULT_REGISTRY}/v2/{namespace}/{model}/blobs/{digest}"

Kurulum safhasında işlemi yürüten cmd_install fonksiyonu ise yerel olarak indirilen bu verileri, Ollama’nın standart ve algılayabileceği dizin yapısına göre klasörler:

graph TD
    ROOT["📁 models/"]
    ROOT --> MAN["📁 manifests/"]
    ROOT --> BLOBS["📁 blobs/"]
    MAN --> REG["📁 registry.ollama.ai/"]
    REG --> NS["📁 library/"]
    NS --> MOD["📁 gemma2/"]
    MOD --> TAG["📄 2b  ← manifest"]
    BLOBS --> B1["📦 sha256-abc...  ← model ağırlıkları"]
    BLOBS --> B2["📦 sha256-def...  ← tokenizer vb."]

İndirilen dosyaların isimleri SHA-256 hash formatında yeniden düzenlenir (Ollama’nın yerel kütüphane standardı bu şekildedir). İndirdiğiniz dosya ismi farklı olsa bile, Oget arka planda SHA-256 doğrulamasını yaparak dosyayı doğru isimle ve güvenli bir şekilde ilgili dizine kopyalar.

Desteklenen Model İsimlendirme Formatları

Oget, Ollama’ya ait tüm isimlendirme standartlarını (tags & namespaces) eksiksiz destekler:

Format TipiKullanım Örneği
<model>:<tag>gemma2:2b
<model>gemma2 (Otomatik olarak latest etiketini hedefler)
<namespace>/<model>:<tag>huihui_ai/deepseek-r1-abliterated:8b

Veri Dizinini Otomatik Tanıma

Oget, Ollama modellerinin yerel diskinizde nerede saklandığını akıllı bir öncelik sırasıyla tespit eder:

ÖncelikHedef
1.--modelsPath komut satırı argümanı (En yüksek öncelik)
2.OLLAMA_MODELS ortam değişkeni (Environment variable)
Hata DurumuEğer dizin bulunamazsa sistem güvenli şekilde durur ve yönlendirici bir hata mesajı üretir.

Sıfır Dış Bağımlılık Garantisi

Oget’in en güçlü yanlarından biri, dış kütüphanelere ihtiyaç duymamasıdır. Yalnızca Python standart kütüphanelerini (argparse, urllib, json, shutil, hashlib, platform) kullanır. Sisteminizde Python 3.8 veya üzeri bir sürümün kurulu olması yeterlidir; pip install requests gibi ek yüklemeler gerektirmez.

Desteklenen Platformlar

Oget, platform bağımsız çalışacak şekilde tasarlanmıştır:

  • ✅ Linux
  • ✅ macOS
  • ✅ Windows

Özellikle kotalı, yavaş veya kurumsal ağlar gibi kısıtlı internet bağlantılarında Büyük Dil Modellerini (LLM) indirip yönetmek zorundaysanız, Oget bu süreci çok daha esnek ve hata toleranslı hale getirir. Model verilerini yerel diskinize bir kez indirdikten sonra, USB bellek veya yerel ağ üzerinden istediğiniz makineye saniyeler içinde çevrimdışı (offline) kurulum yapabilirsiniz.

Kaynak Kod: fr0stb1rd/oget
PyPI Paketi: pypi.org/project/oget
Arch Linux AUR: aur.archlinux.org/packages/oget

This post is licensed under CC BY 4.0 by the author.