09/Documentation
Yönetim ve güncelleme
Telefondan veya terminalden güncelleme, geri alma, bir crew'u güncelleme, ana sürüme geçiş, durdurma, kaldırma ve bir 0.x kurulumunu 1.0 sürümüne yükseltme
| Kurulum yönteminiz: | Durumunuz: | Eylemlerin yazılışı: |
|---|---|---|
herdr plugin install veya herdr plugin link | Herdr tarafından yönetilen (herdr plugin list, herdr.collie gösterir) | herdr plugin action invoke <verb> --plugin herdr.collie |
| Kurulum betiği veya kaynak koddan derleme | Standalone | Kurulum dizininden bin/collie <verb> |
Herdr kurulumlarının PATH üzerinde collie ikili dosyası bulunmaz; Herdr eylem kimliklerini kullanın (Herdr eylemleri). Standalone kurulumlar ikili dosyayı ~/.local/share/collie/current/bin/collie veya <checkout>/bin/collie içine yerleştirir:
# the install script's layout
cd ~/.local/share/collie/current && bin/collie version
# a source build or a linked clone
cd ~/my/collie-checkout && bin/collie versionİkili dosyayı ~/.local/bin dizinine sembolik bağ ile bağlamak için bin/collie link komutunu çalıştırın (collie dizinini PATH ortam değişkeninize ekleyin).
Yapılandırma ve durum checkout dışında bulunur ve güncellemeler boyunca korunur (bridge/solo-baseline.test.ts). .env ve tailscale serve kaydı yapılandırma dizinindedir; bu dizin ikili dosya kurulumunda ~/.config/collie, Herdr kurulumunda ise Herdr'ın eklenti yapılandırma dizinidir; eşleştirilen cihazlar ve stt.json ise COLLIE_STATE_DIR taşımadığı sürece ~/.local/state/collie olan durum dizinindedir.
Paketlenmiş bir kurulum
Paket yöneticiniz Collie'yi nereye kurduysa Collie'yi o günceller ve bu bölümün altındaki hiçbir şey geçerli değildir:
sudo pacman -Syu collie-bin # or `nix profile upgrade collie`, or `brew upgrade collie`Collie bu kurulumu diskteki biçimlerden tanır: .git yok, versions/ düzeni yok, sürüm yükünün taşıdığı manifest mevcut ve kök dizin salt okunur, ev dizininizin dışında ya da root mülkiyetinde. Son üç durumdan herhangi biri yeterlidir. Ardından yerinde güncellemeyi reddeder ve dizinin hangi yöneticiye ait olduğunu belirleyebildiği durumlarda komutun adını verir:
error: /opt/collie is a packaged install — updates come from your package manager.
`collie update` will not replace its files.
Take the new version with: sudo pacman -Syu collie-binÖn ekin Collie'nin tanıdığı hiçbir yöneticiyi belirtmediği durumlarda, çalıştıramayacağınız bir komutu tahmin etmek yerine ilk iki satırı yazdırır ve durur.
collie doctor aynı kurulumu sağlıklı olarak bildirir ve telefonun güncelleme kartı, güncelleme düğmesinin yerinde paket komutuyla birlikte daha yeni bir sürümün mevcut olduğunu göstermeye devam eder.
Not. Bu, etrafından dolaşılacak bir kısıtlama değildir. Dizin paket yöneticinize aittir ve dosyalarını onun arkasından değiştirmek, veritabanının neyin yüklü olduğu konusunda yanlış bilgi vermesine yol açar. sudo collie update de aynı şekilde reddeder.Yeni bir sürüme geçmek için paket yöneticinizi çalıştırın ve ardından servisi yeniden başlatın:
paru -Syu collie-bin # Arch, or your AUR helper of choice
nix profile upgrade collie # Nix
mise upgrade --bump github:AltanS/collie # mise
collie restartmise kurulumu istisnadır: Dizin ağacı ev dizininizde .git ve versions/ düzeni olmadan yer aldığından Collie bunu paketlenmiş olarak okumaz; bu nedenle collie update işlemi cannot tell how this Collie was installed ile reddedilir ve herhangi bir yönetici adı belirtilmez. Sahiplik yine mise üzerindedir. Bkz. Yükleme.
Yeniden başlatma işlemi Collie'nin sizin yerinize yapamayacağı kısımdır ve isteğe bağlı değildir. Paket yöneticiniz çalışan bridge altındaki dosyaları değiştirir; bu yüzden süreç yeni sürümü bildirirken eski kodu yürütmeye devam eder. Collie bu uyuşmazlığı algılar ve bunu belirtir: collie doctor, restart-pending uyarısı verir ve telefonda "Bridge restart needed" başlığı altında "Collie was replaced on disk. Restart it." metni görüntülenir. collie restart çalıştırıldığı anda her iki uyarı da kaybolur.
Bir crew içinde, paketlenmiş bir üye telefondan asla güncelleme almaz. Ekip bunu "waits for the package manager" olarak listeler ve o olmadan çalışmayı tamamlanmış sayar; bu yüzden onu aynı seviyeye getiren şey yukarıdaki iki komuttur.
Paketlenmiş bir lead yalnızca kendi geçişini reddeder. Telefon yine de her üyeyi liderin çalıştırdığı sürüme eşitler ve tek bir onay hepsini kapsar. Yukarıdaki iki komut lideri taşıdıktan sonra hiçbir şey kendiliğinden aynı seviyeye gelmez: Updates sayfasına bir kez daha dokunun, üyeler liderin yeni sürümüne uyum sağlar.
Güncelleme, telefondan veya terminalden
İki güncelleme yolu mevcuttur ve her ikisi de her ana makinede aynı adımları yürütür: yeni sürümü aktif olanın yanında hazırlamak, sembolik bağı değiştirmek, yeniden başlatmak ve servisin yanıt verdiğini denetlemek. Bir ekip liderinde her iki yol da tüm ekibi kapsar. Telefon kısa yoldur. Terminal ise telefonun aynı seviyeye getiremediği bir makine için yedek yoldur.
Telefondan
Ayarlar uygulamasını açın ve Updates seçeneğini belirleyin. Kart çalışan sürümü, en yeni sürümü ve güncellemeye dahil edilen ara sürümleri görüntüler. Ana makine en yeni sürümdeyse kart bunu belirtir ve hiçbir şey teklif etmez.


Bunun altında her denetim için bir satır içeren ön denetim bulunur: doctor, disk, bun, tree, upstream ve service. Bir liderde her ekip üyesi de denetlenir.
- Yeşil sorunsuz.
- Sarı bilinmesi yararlı olan ve asla engellemeyen durumlardır: ekip genelinde sürüm uyumsuzluğu, alışılmadık bir kurulum türü, çıkmış ancak alınmayan bir ana sürüm. Bir çalışma kopyasındaki izlenmeyen geçici dosyalar yeşil kalır.
- Kırmızı güncellemeyi engeller. Satır; kırmızı bir
collie doctor, hazırlanan derleme için 1 GB'den az boş alan, ana makinedebunbulunmaması veya erişilemeyen bir yukarı akış gibi nedeni belirtir. Tek bir komutun sorunu çözdüğü durumlarda kart bu komutuFix: <command>olarak yazar.
<version> sürümüne güncelle öğesine dokunulduğunda bir kez onay istenir ve onay metni harfiyen geçerlidir: terminal oturumunuz etkin kalır ve telefon görünümü 30 saniyeye kadar kesilir. Yeniden başlatma işlemi çoğullayıcınızı değil bridge bileşenini durdurur; bu nedenle ajanlar çalışmaya devam eder ve telefon yeni sürümle tekrar gelir. Bir ana sürüm geçişi asla rutin bir güncellemeyle gerçekleşmez: ana sürüm sınırını aşmak ayrı bir onay ister, sürümü yeni bir ana sürüm olarak adlandırır ve önce sürüm notlarını okumanızı bildirir.
Çalışırken kart bulunduğu durumu gösterir:
| Durum | Anlamı |
|---|---|
preflight | Bu makine denetleniyor. Hiçbir şey taşınmadı. |
staging | Yeni sürüm eskisinin yanında derleniyor veya indiriliyor. |
restarting | Bridge bilerek kapatıldı. Bu bir kesinti değildir. |
verifying | Yeni sürümün yanıt vermesi bekleniyor. |
done | Yeni sürüm yanıt verdi. |
rolled-back | Yeni sürüm yanıt vermedi, bu yüzden güncelleyici eskisini geri yükledi. |
stuck | İki sürüm de yanıt vermedi. Hiçbir şey kendi kendine yeniden başlamayacak. |
interrupted | Çalıştırma işlemi bitmeden durdu. Hiçbir şey yarı kurulu kalmadı. |
İlk dördü ilerleme adımıdır; kart bunu belirtir ve ekranı açık tutmanızı ister. rolled-back hâlâ bulunduğunuz sürümü adlandırır, servis günlüğünün sonunu gösterir ve Yeniden dene seçeneğini sunar. stuck, terminalde çalıştırılacak tek komutu yazdırır. interrupted ayrıca Yeniden dene seçeneğini de sunar.
Sonraki özette hatırlat, kartın uyarısını kapatır. Bu bir susturma değildir: bir sonraki bildirim hem daha yeni bir sürümü hem de yeni bir zaman aralığını bekler.
Hangi sıklıkla bilgilendirileceğiniz. Güncelleme bildirimleri bir özettir; günde en fazla bir kez ve sunucunun yerel saatiyle asla 09:00'dan önce gönderilmez. Yalnızca yama sürümlerinden oluşan bir fark bunun yerine haftalık bir pencereyi bekler, böylece bir yama serisi dört ayrı bildirim yerine tek bir bildirim olarak gelir; bir alt sürüm veya ana sürüm günlük tempoyu korur ve bekleyen yamaları da beraberinde getirir. Bekletilen sürümler birleştirilir, asla atlanmaz. Kart, pencereden bağımsız olarak her zaman geçerli durumu gösterir. Ayarlar → bildirimler (Web Push) altındaki updates bildirim tercihi, tek kapatma anahtarıdır.
Bir crew liderinde düğme Crew ekibini <version> sürümüne güncelle metnini gösterir ve tek bir onay tüm makineler için geçerli olur. Lider, kendi sağlık denetimi altında önce güncellenir. Ardından her eş, kendi ön denetimini, kendi sağlık denetimini ve kendi geri almasını kullanarak sırayla aynı sürüme eşitlenir. Eş başına ayrı bir düğme ve ikinci bir onay istemi yoktur. Ayrıntılar, iki kurtarma yolu ve telefonun düzeltemeyeceği tek durum için bkz. Crew ekibinin geri kalanı güncelleniyor.

Her ekranın üst kısmındaki bir şerit çalıştırma sürecini aktarır: sunulan sürüm, ardından Starting update…, Updating to <version>, Updated to <version>. Tap to reload. ve eşler takip ettikçe son olarak Updating <n> peers: <names>. Geri alınan bir eş de sayfaya geri dönüş yolu olarak Güncellemeler'e bakın. ile birlikte orada adlandırılır. Şerit bu sırayla görünür:




Terminalden
collie update --check # read-only preflight, --json for a script
collie update --check --local # the same, this instance only, no crew members
collie update # stage, flip, restart, verify
collie update --status # what the updater did, or is doing, --json for a script
collie update --rollback # put the previous version back
collie update --major # cross one major, see belowHerdr tarafından yönetilen bir kurulumda aynı eylemler Herdr eylemleridir:
herdr plugin action invoke update --plugin herdr.collie # Herdr-managed
bin/collie update # Standalonecollie update --check hiçbir şeyi değiştirmez. collie doctor komutunu çalıştırır, boş alanı, bun sürümünü, çalışma ağacını, yukarı akış sürüm listesini ve servis birimini okur; bir liderde ise kendi SSH bağlantınız üzerinden her crew üyesine aynı soruyu sorar. Kırmızı bir durum olmadığı sürece 0 koduyla çıkar ve --json sürümlü bir rapor yazdırır. Yalnızca bu örneği denetlemek ve crew üyelerini atlamak için --local ekleyin. Telefon, bu yerel denetimi kendi sunucusunda çalıştırır ve crew bağlantısı üzerinden her eşin satırını okur, bu nedenle ön denetimi SSH gerektirmez.
collie update, geçerli ana sürümünüzün en yeni sürümünü getirir ve hazırlar. Komut daha sonra geçişi ayrı bir güncelleyiciye devreder ve çıkar; çünkü yeniden başlatma, güncellemeyi talep eden köprüyü sonlandırır. Bu güncelleyici, current bağlantısını yeni sürüme yönlendirir, yeni ikili dosya üzerinden yeniden başlatır ve henüz kurduğu sürümü içeren bir yanıt için GET /api/health adresini 30 saniyeye kadar sorgular. Yanıt gelmezse veya eski sürümden gelirse, current bağlantısını geri çevirir, bir kez daha yeniden başlatır ve servis günlüğünün sonuyla birlikte rolled-back kaydeder. Bu da açılmazsa, elle çalıştırılacak komutla birlikte stuck kaydeder ve hiçbir şey tekrar yeniden başlamaz. Bir kez geri alır, asla iki kez almaz.
Makinelerinizde 30 saniye yeterli değilse COLLIE_UPDATE_HEALTH_TIMEOUT_MS ayarlayın. Bütçeyi aşan yavaş bir soğuk başlatma, başarısız bir güncelleme olarak algılanır ve geri alınır.
collie update --status, güncelleyicinin tuttuğu kaydı yazdırır ve telefon da aynı kaydı okur. Bir deputy'nin bekleme kapısı, ana bağlantı noktası kapalıyken bunu /standby/update üzerinden sunar.
Yeni bir beacon kanca olayı mevcutsa update, hooks install claude komutunu yeniden çalıştırmanız için bir bildirim yazdırır.
Sürümlerin bulunduğu yer
İkili kurulum ve bağlı bir klon, kurulum kökü altında tek bir düzeni paylaşır (ikili kurulum için ~/.local/share/collie veya $COLLIE_DIR, bir kopyalama için klonun kendisi):
current -> versions/v1.3.0
versions/v1.3.0/
versions/v1.2.0/Bir kopyalamada her versions/vX.Y.Z, tek .git deposunu paylaşan yayın etiketinin bir git çalışma ağacıdır; bu sayede bir sürüm ikinci bir nesne deposuna değil, yalnızca bir ağaca mal olur. Derleme yeni dizin içinde çalışır ve en son bir tamamlanma işareti yazar; geçiş bu işaret olmadan işlemi reddeder, böylece sonlandırılan bir derleme canlı sürüme dokunulmadan kalır. Canlıya geçiş, current sembolik bağlantısının tek bir yeniden adlandırılmasıdır. Saklama politikası, current ile birlikte en yeni iki önceki sürümü tutar ve yalnızca başarılı bir çalıştırma temizlik yapar; böylece geri alma hedefine ihtiyaç duyabilecek bir çalıştırma onu asla kaldırmaz.
Bir Herdr tarafından yönetilen kopyalaması istisnadır ve yerinde ilerlemeye devam eder (ADR 0006, 2026-09-03 tarihinde değiştirildi). Bağımsız ve sığdır; Herdr'ın sahip olduğu bir dizinde yer alır, bu nedenle yanında bir versions/ düzeni, devredilecek bir şey ve geri dönülecek bir durum yoktur. --rollback orada reddedilir; kurtarma yolu, adlandırılmış bir etiketin yeniden kurulmasıdır (herdr plugin install AltanS/collie --ref vX.Y.Z --yes).
1.8.0 sürümünden 1.7.0 sürümüne geri dönmek, state dizininde iki manuel düzenleme gerektirir. 1.8.0, ilk başlatılışında üç durum dosyasını yeniden adlandırır; bu nedenle ~/.local/state/collie/ artık crew-trust.json, crew-ops.json ve crew-runtime.json dosyalarını barındırır ve 1.7.0 derlemesi yalnızca eski adları okur. 1.7.0 derlemesini başlatmadan önce her üçünü de eski haline getirin:
cd ~/.local/state/collie
mv crew-trust.json pack-trust.json
mv crew-ops.json pack-ops.json
mv crew-runtime.json pack-runtime.jsonArdından pack-trust.json içindeki iki anahtar adını düzenleyin. 1.8.0 sürümü crew bloğunu her iki yazımla da okur ve 1.7.0 sürümünün "pack" ve "packId" yazdığı yere, içinde "crewId" olacak şekilde "crew" olarak geri yazar. 1.7.0 derlemesi yalnızca kendi yazımını okur; bu nedenle 1.8.0 depoyu yazdığında (ki bunu herhangi bir katılma, rotasyon, warrant yenileme veya kaldırma işleminde yapar), bu bloğun adını tekrar "pack" ve id alanını "packId" olarak değiştirin. Üç dosyadaki başka hiçbir şey değişmedi; crew-ops.json ve crew-runtime.json dosyalarında hiçbir düzenleme gerekmez. Dosyaya dokunmak istemiyorsanız güncellemeden önce alınmış bir pack-trust.json kopyasını geri yükleyin veya 1.8.0 sürümünde kalın: güven deposunu okuyamayan bir 1.7.0 derlemesi tek başına başlar ve hiçbir kadroyu zorunlu kılmaz.
Doğrulayın
bin/collie update --status
herdr plugin action invoke version --plugin herdr.collie
bin/collie versionEn yeni etiketi bekleyin.
Telefonun kendi paketi ayrı bir konudur. PWA yeni bir derlemeyi kendi kendine denetler, yaklaşık bir dakika içinde yeniden yüklenir ve bu yeniden yüklemeyi bir güncelleme çalıştırması boyunca bekletir. Bir görevin ortasındaysanız "güncellemek için dokunun" başlığını gösterir ve dokunmanızı bekler.
Sürüm değişmediyse
collie update her çalıştırmada doğrudan GitHub'a sorar; bir checkout için git ls-remote adresine, ikili dosya kurulumu için GitHub etiketler API'sine danışır. Yayın listesini önbelleğe almaz. Birkaç saniye önce yayınlanan bir sürümün görünmesi, GitHub'ın yetişmesi için kısa bir süreye ihtiyaç duyması nedeniyle yine de bir dakika sürebilir. Ardından collie doctor komutunu çalıştırın. Bu durumu açıklamıyorsa collie çalışmadığında bölümüne bakın.
Ana sürüm atlayın
update hiçbir zaman otomatik olarak bir ana sürümü atlamaz.
herdr plugin action invoke update-major --plugin herdr.collie # Herdr-managed
bin/collie update --major # StandaloneBu, bir ana sürüm ilerleterek onun en yeni kararlı sürümüne geçer. Ön sürümleri hedeflemez (ADR 0020). Ayrıca bkz: 0.x sürümünden 1.0 sürümüne yükseltme.
Bu işlem "Şu anda bir dalda değilsiniz" ile başarısız olursa
0.23.1 öncesi GitHub kurulumlarında dal izleme başvurusu (#63) bulunmaz. Güncelleme işlevini geri yüklemek için yeniden kurun:
# replaces the checkout, rebuilds the UI
herdr plugin install AltanS/collie --yes
# reinstall doesn't restart the service
herdr plugin action invoke restart --plugin herdr.collie
# expect 0.23.1 or newer
herdr plugin action invoke version --plugin herdr.collieHerdr'ın eklenti yapılandırma dizinindeki (teamülen ~/.config/herdr/plugins/config/herdr.collie) yapılandırmanız korunur.
Crew ekibinin geri kalanı güncelleniyor
collie crew update <member>… # on the lead
collie crew update --allBu, telefonun eşitleyemediği bir eş düğüm için terminal yoludur. Telefondan, tek bir dokunuş ve tek bir onay ile tüm crew'u güncelleyin: lead üzerinde Settings → Updates sayfasını açın ve Crew ekibini <version> sürümüne güncelle seçeneğini belirleyin. Düğmenin üzerindeki ön denetim yalnızca lead'i değil, her üyeyi kapsar. Bir denetim herhangi bir yerde kırmızıysa düğme devre dışı bırakılır, hata veren makineyi ve nedenini belirtir.
Lead, kendi sağlık denetimi altında ilk olarak güncellenir. Ancak lead oturduktan sonra ilk peer başlar. 1.7.0 sürümünden itibaren bu sıra kelimeler için de önemlidir: 1.7.0'dan eski bir lead, bir üyenin durumunu yazdırdığı ilk satırdan okur ve 1.7.0 üyesi 1.6.0 üyesinin pack … yazdırdığı yerde crew … yazdırır; bu nedenle güncellenmemiş bir lead bunu okuyamaz. 1.7.0 sürümündeki bir lead her ikisini de okur. Her peer ardından kendisini eşitler: lead'inin çalıştırdığı sürümü okur, bu etiketi tam olarak GitHub'dan çeker ve kendi ön denetimini, kendi sağlık denetimini ve kendi geri almasını çalıştırır. Peer'lar teker teker ilerler. Updates sayfası her üye için bir satır tutar: waiting, checking, staging, restarting, verifying, updated, rolled back veya unreachable.
1.7.0'dan 1.8.0'a. İkinci bir nedenle yine önce Lead güncellenir: 1.8.0 aktarım yollarını, iki ortam anahtarını, üç state dosyasını ve günlük önekini crew olarak yeniden adlandırır. 1.8.0 sürümündeki bir lead, eski /pack/v1/* yollarına bir sürüm boyunca yanıt verir; bu sayede hâlâ 1.7.0 sürümündeki bir üye, halihazırda sahip olduğu bağlantı üzerinden geçişi izler. Her iki eski yazım da 1.9.0 sürümünde kaldırılır. Adlar ve makinenizde her birinin ne yaptığı 1.7.0 sürümünden güncelleme içindedir. Sürümün yayınladığı collie-release.json varlığı yalnızca banttaki, Updates kartındaki ve günlük bildirimdeki bu uyarının metnini besler; asla bir güncellemeyi engellemez ve yapılan işlemi değiştirmez.
Bir peer'ın izleyip izleyemeyeceğini iki gereksinim belirler:
- Bir peer
github.comadresine giden HTTPS erişimine ihtiyaç duyar. Kodu buradan gelir. Bu erişim olmadan, eş düğümün geride kaldığı bildirilir ve bunun yerine yukarıdaki komut kullanılarak terminalden eşitlenir. - Bir
-dev+derlemesi asla izlemez. Geliştirme derlemesindeki bir makine, lead'i ne çalıştırırsa çalıştırsın bu derlemede kalır.
Geri alma işlemi yapan bir peer, bunu Updates sayfasında belirtir ve kendi kendine yeniden denemez. İki yol ona başka bir deneme şansı verir:

- Telefondan. Lider güncel olduğunda ve bir eş geride kaldığında düğmenin üzerinde Ekip güncellemesini yeniden dene yazar. Yalnızca eşleri kapsayan yeni bir çalıştırma başlatır ve her birine bir deneme hakkı daha tanıyan şey bu yeni çalıştırmadır.
- Terminalden, lider üzerinde. Bunu, telefonun hiçbir şekilde eşitleyemediği bir eş için kullanın. Komut değişmez:
collie crew update <member>… # on the lead
collie crew update --allBunu lead üzerinde çalıştırmak, kendi SSH bağlantınız üzerinden tek bir dizidir. Önce her makinede ön denetim yapar ve SSH üzerinden aldığı yanıtın yanında her eş düğümün kendi raporunu yazdırır; böylece bir uyumsuzluk ortalamaya dahil edilmek yerine açıkça gösterilir. Tek bir onay ister. Ardından, dağıttığı derlemeyi henüz çalıştırmıyorsa lead'in kendisini günceller. Sonrasında her eş düğümü sırayla ele alır: lead'in commit'i eş düğüme bir git paketi olarak gönderilir, yeniden derlenir, yeniden başlatılır ve aynı 30 saniyelik bütçe içinde yeni derlemeye yanıt verene kadar yoklanır.
İlk hata çalıştırmayı durdurur. Ondan sonraki her üyeye dokunulmaz ve "denenmedi" olarak bildirilir; özet ise hatayı temizleyen tek komutu belirtir. Kendi güncellemesini alamayan bir lider hiçbir eşe dokunmaz. Orada durmak güvenlidir çünkü ekip sürüm uyumsuzluğuna (CREW_PROTOCOL.md §7.1) tolerans gösterir; bu nedenle yarı güncellenmiş bir ekip desteklenen bir durumdur, devam etmek ise değildir.
Telefonun çözemeyeceği bir durum. Eşler eşitlendikten sonra lideri elle geri alırsanız, eşler liderlerinin önünde kalır. Hiçbir şey bir eşi alt sürüme geçirmez: Bir eşi geriye götürebilen bir lider, onu herhangi bir yere de götürebilir. Sürüm uyumsuzluğu zararsızdır ve çözümü lider üzerinde collie crew update <member> çalıştırmaktır.
Kod, bir eşe sizin SSH bağlantınız üzerinden ulaşır; hiçbir zaman ekip bağlantısı üzerinden gelmez (ADR 0016, zeyilname 2026-09-04). Bir eş kendini eşitlediğinde, kodu GitHub üzerinden anonim HTTPS ile gelir ve eş kararı kendisi verir. Lider yalnızca çalıştırdığı sürümü ve hangi eşin devam edebileceğini belirtir.
Güncelleyicinin kendisi çökerse
Güncelleyici yok olduğunda yukarıdakilerin hiçbiri işe yaramaz. Bu yol, yalnızca bir terminalin var olduğunu varsayar.
Güncelleyici tek bir kayıt yazar: <state dir>/update.json (varsayılan olarak ~/.local/state/collie/update.json veya $COLLIE_STATE_DIR altında). Önce onu okuyun: durumu, çalıştırmanın geldiği sürümü, hedeflediği sürümü, güncelleyicinin pid değerini ve bir hata durumunda servis günlüğünün son kısmını ve kurtarma komutunu belirtir.
Telefonun başlattığı bir güncelleme terminalinize hiçbir şey yazdırmaz. collie-api-update-<stamp> adlı kendine ait geçici bir systemd birimi altında çalışır ve --collect çıktığı anda bu birimi kaldırır, bu nedenle dökümü yalnızca journal içindedir:
journalctl --user -u 'collie-api-update-*' --since '30 min ago'Telefon başarı bildirdiğinde ve sonraki adımlardan biri gerçekleşmediğinde bakılacak yer orasıdır; örneğin çalıştırma kaydının yazılamadığına dair bir uyarı, liderin kendini güncellediğini ancak ekibini eşitlemeyeceğini gösterir. Köprünün kendi günlüğü diğer yarıyı taşır: lider kaydı aldığında çalıştırma başına bir [crew] update <run id>: levelling peers to <version> satırı. 1.8.0 sürümünden önce bu önek [pack] idi. Böyle bir satır yoksa sıralar hiçbir zaman başlamamıştır.
bunx aşamasında takılan 1.5.4 öncesi bir güncelleme
1.5.4 sürümünden önce, bir telefondan başlatılan güncellemeler PATH bilginizden yoksun geçici bir systemd kullanıcı biriminde çalışır. Bun, doğrudan repodan yapılan bir kurulumda yalnızca ~/.bun/bin altında bulunduğunda, yerel repo ilerler ancak yeniden derleme bunx: command not found ile başarısız olur. Bunu, Bun dizininin PATH içinde olduğu bir terminalden bir kez collie update çalıştırarak çözün veya dolgusu Bun dizinini kendisi bulan Herdr eylemini çalıştırın. Her iki yöntem de ilerletilmiş repoyu yeniden derler. 1.5.4 sürümünden itibaren güncelleyici Bun dizinini kendi başına bulur.
Yanında bir pid ve bir zaman damgası tutan <state dir>/update.lock bulunur. Her seferinde tek bir çalıştırma. Hâlâ preflight, staging, restarting veya verifying yazan, 10 dakikadır değişmeyen ve pid değeri artık işlem tablosunda yer almayan bir kayıt sona ermiştir: interrupted olarak okunur ve yeni bir çalıştırma kilidi alabilir.
Önceki sürümü elle geri getirmek için current hedefini ona yönlendirin ve yeniden başlatın:
cd ~/.local/share/collie # or $COLLIE_DIR, or the checkout root
ls versions/
ln -sfn versions/<previous> current
collie restartVeya önceki sürümün aynı işlemi sizin için yapmasına izin verin; bu, bir stuck kaydının taşıdığı komuttur:
~/.local/share/collie/versions/<previous>/bin/collie update --rollbackTam yolu kullanın, collie değil: PATH üzerindeki ad current üzerinden çözülür ve sorunlu olabilecek şey current dosyasıdır.
Sağlık kapısının yakalayamadığı durumlar
Kapı tek bir şeyi kanıtlar: servis geri döndü ve /api/health çağrısına yüklenen sürümle yanıt verdi. Bu sınırlı bir taahhüttür, "asla bozulmaz" demek değildir. Kapı başarı bildirirken dört şey bozuk olabilir:
- Telefonda eski web paketi. Ana makine yeni sürümde ve telefon servis çalışanından hâlâ eski JavaScript kodunu çalıştırıyor. PWA kendi paketini kendi takvimine göre değiştirir; sağlık kapısının bunu görme imkanı yoktur.
- Yapılandırma veya şema geçişleri. Collie bu sıklıkta hiçbirini yayınlamaz ve güncelleyici hiçbirini çalıştırmaz. Kapı, verilerin doğru biçimlendirildiğini değil, servisin yanıt verip vermediğini denetler.
- Yalnızca etkileşim anında bozulan bir mux sürücüsü. Bağdaştırıcı ilk gerçek bağlama veya gönderme işleminde başarısız olurken köprü başlar ve sistem durumuna yanıt verir. Sağlık denetimi bir canlılık yoklamasıdır, uygunluk testi değildir.
- Eski sürümün kodunu çalıştıran güncelleyici. Bağımsız güncelleyici, değiştirilmekte olan sürümden başlatılır. Küçük ve kararlı tutulur, kaydı ise sürümlendirilir; böylece eski bir güncelleyici ile yeni bir köprü birbirini anlamaya devam eder, ancak bu bir garantiden ziyade hafifletici bir önlemdir.
En yeni sürümü bir betikten çözümleme
Git etiketlerini sorgulayın ve semver'e göre sıralayın. Ön sürümleri hariç tutan GET /repos/AltanS/collie/releases/latest seçeneğini kullanmayın.
# newest stable release
git ls-remote --tags --refs https://github.com/AltanS/collie | \
sed 's#.*refs/tags/##' | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | sort -V | tail -1Ön sürümler
Kararlı kurulumlar ön sürümleri almaz. Bir ön sürüme geçmeyi tercih etmek, nihai sürüm gelene kadar o ana sürümün ön sürümlerini takip eder (ADR 0020):
# Standalone — the install script's opt-in flag takes the newest prerelease
curl -fsSL https://colliepwa.dev/install.sh | sh -s -- --beta
# Herdr-managed — install the tag; that is the whole opt-in
herdr plugin install AltanS/collie --ref <tag> --yes
# a reinstall does not restart the service
herdr plugin action invoke restart --plugin herdr.collieEn yeni sürümü bir betikten çözümleme kullanarak <tag> sürümünü çözümleyin.
Kararlı sürümlere geri dönmek için:
herdr plugin install AltanS/collie --yes
herdr plugin action invoke restart --plugin herdr.collie0.x sürümünden 1.0 sürümüne yükseltme
BUN_INSTALL yalnızca .env içinde tanımlanmışsa, bunun yerine kabuk profilinizde veya servis ortamınızda dışa aktarın. Ardından şunu çalıştırın:
# Herdr-managed
herdr plugin action invoke update-major --plugin herdr.collie
# Linked clone
bin/collie update --majorbin/collie version veya herdr plugin action invoke version --plugin herdr.collie ile doğrulayın.
Crew kurulumları için: Önce lideri güncelleyin, ardından collie crew update <member>… çalıştırın (Crew ekibinin geri kalanı güncelleniyor). Not:
join, düzhttp://liderleri için--insecuregerektirir.- 1.0 öncesi davet belirteçleri
crew inviteile yeniden oluşturulmalıdır. - Daha eski üye kayıtları
reconnectgerektirir.
1.0 sizin için neleri değiştirir
Herdr eylem kimlikleri ve scripts/collie-ctl.sh rotaları değiştirilmedi (ADR 0006).
CLI fiilleri <checkout>/bin/collie içine derlenir (Komutlar). collie dizinini PATH'e eklemek için bin/collie link kullanın (collie dizinini PATH ortam değişkeninize ekleyin, ADR 0021).
Yeni özellikler:
doctor: Yapılandırma tanılamaları.
Sürü gerçekse, yan yana
İkincil örnek yapılandırması Tek bir konakta birden fazla Collie örneği içinde belgelenmiştir.
Eski sürüme dönme
Son 0.x etiketine geçin ve yeniden derleyin:
last0x=$(git ls-remote --tags --refs origin | sed 's#.*refs/tags/##' | \
grep -E '^v0\.[0-9]+\.[0-9]+$' | sort -V | tail -1)
git fetch --depth 1 origin tag "$last0x"
git checkout --detach --force "$last0x"
rm -f bin/collie # 1.0's binary otherwise survives the rollbackbash scripts/collie-ctl.sh build ile yeniden derleyin ve Herdr'ın restart eylemini çağırın. Durum dosyaları (crew-trust.json, crew-runtime.json, paired-devices.json, pairing-pending.json) kalabilir. Eski sürüme dönme işlemi cihaz eşleme zorunluluğunu kaldırır; yazma koruması gerekiyorsa COLLIE_DEVICE_HEADER yapılandırın.
Çalıştığını doğrulayın
version çıktısının 1.0.0 veya üzerini bildirdiğini kontrol edin. Yükseltilen bir kurulum hiçbir cihazı otomatik olarak eşlemez: bir telefona yazma yetki belgesi vermek için pair çalıştırın; telefon kaybolursa devices revoke çalıştırın (Bir cihazı eşleyin).
Durdurun veya kaldırın
Hizmeti duraklatın:
herdr plugin action invoke stop --plugin herdr.collie # Herdr-managed
bin/collie stop # standaloneHizmet tanımını ve bağlantı noktası eşlemelerini kaldırın (.env ve çalışma kopyaları korunur):
herdr plugin action invoke uninstall --plugin herdr.collie # Herdr-managed
bin/collie uninstall # standaloneKalan dosyaları silmek için: herdr plugin uninstall herdr.collie çalıştırın (Herdr tarafından yönetilen) ya da bin/collie unlink çalıştırıp ~/.local/share/collie / $COLLIE_DIR silin (bağımsız).
collie çalışmadığında
İkili dosya kurulumları için (~/.local/share/collie veya $COLLIE_DIR), doğrudan daha eski bir ikili dosyayı yürütün:
ls ~/.local/share/collie/versions/
~/.local/share/collie/versions/<previous>/bin/collie update --rollbackDoğrudan belirli bir sürümü yüklemek için:
curl -fsSL https://colliepwa.dev/install.sh | COLLIE_TAG=v1.0.0 shÇalışma kopyaları veya Herdr kurulumları için git checkout <tag> veya herdr plugin install AltanS/collie --ref vX.Y.Z --yes çalıştırın.
Bir çatal çalıştırıyorsunuz
collie update, origin değerini COLLIE_UPDATE_REPO (varsayılan AltanS/collie) ile karşılaştırır ve farklılarsa işlemi iptal eder. Çatalınız kendi etiketlerini yayınlıyorsa COLLIE_UPDATE_REPO=you/collie ayarlayın.
Yukarı akış güncellemelerini çatalınıza el ile birleştirmek için:
git remote add upstream https://github.com/AltanS/collie.git
git fetch upstream --tags
git merge v1.0.0 # the tag you decided to take
# resolve the conflicts, commit the merge, then rebuild and restart:
bash scripts/collie-ctl.sh build
# Herdr-managed: invoke the `restart` action instead
bin/collie restartBir çatal üzerinde update --major kullanmayın; v1.* etiketini el ile birleştirin. Etkin COLLIE_UPDATE_REPO değerini kontrol etmek için collie doctor çalıştırın.
Yeniden başlatmalardan sonra çalışmayı sürdürme
Linux üzerinde, gözetimsiz kullanıcı hizmetleri için lingering özelliğini etkinleştirin:
loginctl enable-linger $USERDurumu systemctl --user status collie ile doğrulayın.
macOS üzerinde start, ~/Library/LaunchAgents/herdr.collie.plist yapılandırmasını otomatik olarak yönetir. Kullanıcı oturum açtığında çalışır. Durumu launchctl print gui/$(id -u)/herdr.collie ile kontrol edin.
Bu sayfayı GitHub üzerinde düzenleyin