Özellikler
ccam'i güncelleme
Bu sayfa İngilizceden makine çevirisiyle çevrilmiştir. Düzeltmelere açığız. Bu sayfayı GitHub üzerinde düzenleyin
ccam update, GitHub'dan bir ccam sürümü indirir, onu sürümün checksums.txt dosyasıyla doğrular ve çalışan ikili dosyayı tek bir yeniden adlandırmayla değiştirir. ccam'i kurulum betiğiyle veya bir arşivden kurduysanız kullanın. ccam güncellemeleri hiçbir zaman kendiliğinden kontrol etmez: GitHub ile yalnızca bu komut bağlantı kurar; bu yüzden diğer tüm komutlar çevrimdışı da aynı şekilde çalışır.
Kullanım
ccam update # install the latest release
ccam update --check # only say whether a newer release exists
ccam update --version v0.3.0 # install that release, also an older one
ccam --dry-run update # show what would be downloaded and replaced$ ccam update --check
ccam 0.5.0 is available (you have 0.4.0). Run `ccam update`.
$ ccam --dry-run update
Would update ccam 0.4.0 → 0.5.0:
download https://github.com/jhyunwoo/ccam/releases/download/v0.5.0/ccam_linux_amd64.tar.gz
verify with https://github.com/jhyunwoo/ccam/releases/download/v0.5.0/checksums.txt
replace /home/you/.local/bin/ccam
$ ccam update
→ downloading https://github.com/jhyunwoo/ccam/releases/download/v0.5.0/ccam_linux_amd64.tar.gz
✓ Updated ccam 0.4.0 → 0.5.0 (/home/you/.local/bin/ccam)Daha yeni bir sürüm yoksa ccam ccam 0.4.0 is up to date. yazdırır ve hiçbir şeyi değiştirmez. --version ile zaten çalıştırdığınız sürümü verirseniz ccam 0.4.0 is already installed. yazdırır.
Seçenekler
| Seçenek | Ne yapar | Varsayılan |
|---|---|---|
--check |
Yalnızca daha yeni bir sürüm olup olmadığını bildirir | kapalı |
--version <tag> |
v0.3.0 gibi, mevcut sürümden yeni veya eski bu sürüm etiketini kurar |
en son |
--dry-run |
Dikkate alınır: en son etiketi arar (--version bir etiket vermedikçe), ikili dosya üzerinde aynı kontrolleri çalıştırır ve indirmeden indirme, sağlama toplamı ve değiştirme yollarını yazdırır |
kapalı |
--check ve --version birlikte kullanılamaz. Etiket, isteğe bağlı bir ön sürüm veya derleme sonekiyle vMAJOR.MINOR.PATCH biçiminde olmalıdır; baştaki v yazılmayabilir. Başka her şey başarısız olur, örneğin --version takes a release tag such as v0.3.0, not "1.2".
CCAM_RELEASES_URL ortam değişkeni, bir yansı veya testler için https://github.com/jhyunwoo/ccam/releases adresinin yerini alır. Aynı şekilde düzenlenmiş olmalıdır: <url>/latest, <url>/tag/<tag> adresine yönlendirir ve dosyalar <url>/download/<tag>/<asset> konumundadır.
Nasıl çalışır
Kod, yalnızca ccam update komutunun içe aktardığı internal/update içindedir. Başlatma yolu onu hiçbir zaman çağırmaz.
cli.updateCmd, çalışan ikili dosyayıos.Executableile bulur ve sembolik bağlantılarıfilepath.EvalSymlinksile çözümler. Değiştirilen, bu gerçek yoldur.--versionolmadanUpdater.Latest, yönlendirmeyi izlemeden<releases>/latestadresini ister ve etiketiLocationbaşlığından okur (…/tag/v0.5.0). Bu, GitHub API'si yerine sürümler sayfasını kullanır; böylece API'nin saatte 60 istek sınırı uygulanmaz. Aramanın 10 saniyesi vardır.parseVersion, etiketi katı bir kalıba göre kontrol eder. Etiket, indirme URL'lerinde ve yazdırılan bir kabuk komutunda yer alır; bu yüzden/,%, boşluk veya kabuk karakterleri içeren hiçbir şey geçemez.compareVersionsonu çalışan sürümle karşılaştırır; bir ön sürüm, kendi sürümünden önce sıralanır.managed()vewritable(), ccam'in ikili dosyayı değiştirip değiştiremeyeceğine karar verir (aşağıya bakın).Updater.Fetch,ccam_<os>_<arch>.tar.gzvechecksums.txtdosyalarını aynı anda, ikisi için toplam 2 dakikayla indirir. Her indirme 256 MB ile sınırlıdır.- Başka herhangi bir şey olmadan önce arşivin SHA-256 değeri
checksums.txtiçindeki satırıyla eşleşmelidir. Eksik bir satır veya farklı bir sağlama toplamı güncellemeyinothing was changedile durdurur. extract()tar dosyasını okur veccamadlı ilk normal dosyayı alır. Klasörler, bağlantılar ve diğer girdiler yok sayılır; ikili dosya da 256 MB ile sınırlıdır.Updater.Install, yeni ikili dosyayıfsutil.AtomicWriteile yazar: ikili dosyanın yanında, eski dosyanın izin bitlerine sahip geçici bir.ccam.tmp*dosyası diske yazılır ve eskisinin üzerine yeniden adlandırılır.
Etiket aramasından yeniden adlandırmaya kadar tüm akış:
Arşiv ve checksums.txt yan yana indirilir ve sağlama toplamı eşleşene kadar hiçbir şey yazılmaz. Yeniden adlandırma atomiktir; bu yüzden bir çökme veya dolu bir disk ya eski ikili dosyayı ya da yenisini bırakır, hiçbir zaman yarım bir dosya bırakmaz. ~/.local/bin/ccwork gibi kısayol komutları ccam ikili dosyasına giden sembolik bağlantılardır; bu yüzden hiçbir değişiklik olmadan yeni sürümü çalıştırırlar.
Paket yöneticisiyle yapılan kurulumlar
.deb paketinden kurulan bir ccam apt'ye aittir ve onu apt'nin haberi olmadan değiştirmek paket veritabanını yanlış bırakır. İndirmeden önce ccam ikili dosyanın kime ait olduğunu kontrol eder:
/usr/bin,/bin,/usr/sbinveya/sbiniçindeki bir ikili dosya paket yöneticisine ait sayılır.- Başka bir yerdeyse,
dpkgkuruluysa vedpkg -S <path>başarılı olursa yine paket yöneticisine ait sayılır. - Aksi halde ccam, oraya yazabildiğinden emin olmak için ikili dosyanın yanında geçici bir
.ccam-update-*dosyası oluşturur ve kaldırır.
Paket yöneticisine ait bir ikili dosyada ccam durur ve apt adımlarını yazdırır:
$ ccam update
ccam: /usr/bin/ccam was installed by a package, so `ccam update` leaves it alone.
To update the .deb, download ccam_0.5.0_linux_amd64.deb from https://github.com/jhyunwoo/ccam/releases/tag/v0.5.0 and run:
sudo apt install ./ccam_0.5.0_linux_amd64.deb
Or install a copy in ~/.local/bin with the install script:
curl -fsSL https://raw.githubusercontent.com/jhyunwoo/ccam/main/install.sh | shLinux dışındaki sistemlerde yalnızca kurulum betiği satırı yazdırılır. Klasör yazılabilir değilse ccam, ccam'i ~/.local/bin içine kuran kurulum betiğini yeniden çalıştırmayı önerir.
Güvenlik ve uç durumlar
- Bir geliştirme derlemesi sürümünü
devolarak bildirir ve karşılaştırılacak bir sürümü yoktur; bu yüzdenccam updateveccam update --checkonu reddeder.ccam update --version vX.Y.Zonun üzerine bir sürüm kurar. - Başarısız bir indirme, platformunuz için eksik bir dosya veya sağlama toplamı uyuşmazlığı kurulu ikili dosyayı olduğu gibi bırakır.
- Var olmayan bir sürüm
there is no release <tag>ile başarısız olur. GitHub HTTP 403 veya 429 ile reddettiğinde ccam bunun muhtemelen bir istek sınırı olduğunu söyler ve daha sonra yeniden denemenizi ister. --checkyalnızca okur. İkili dosyanın paket yöneticisine ait veya yazılabilir olup olmadığını kontrol etmez.- Daha eski bir etiketle
--version, geri dönmenin yoludur.