Vipengele
Kusasisha ccam
Ukurasa huu umetafsiriwa kwa mashine kutoka Kiingereza. Marekebisho yanakaribishwa. Hariri ukurasa huu kwenye GitHub
Katika ukurasa huu
ccam update hupakua toleo la ccam kutoka GitHub, hulikagua dhidi ya checksums.txt ya toleo hilo na hubadilisha binary inayoendeshwa kwa kubadilisha jina mara moja. Itumie ikiwa ulisakinisha ccam kwa script ya kusakinisha au kutoka kwenye archive. ccam kamwe haikagui masasisho yenyewe: amri hii pekee ndiyo huwasiliana na GitHub, kwa hiyo kila amri nyingine hufanya kazi vivyo hivyo bila mtandao.
Matumizi
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)Ikiwa hakuna toleo jipya zaidi, ccam huchapisha ccam 0.4.0 is up to date. na haibadilishi chochote. Kwa --version na toleo unaloendesha tayari, huchapisha ccam 0.4.0 is already installed.
Chaguo
| Chaguo | Inachofanya | Chaguo-msingi |
|---|---|---|
--check |
Huripoti tu kama toleo jipya zaidi lipo | imezimwa |
--version <tag> |
Husakinisha tagi hii ya toleo, kama v0.3.0, jipya au la zamani kuliko la sasa |
jipya zaidi |
--dry-run |
Inaheshimiwa: hutafuta tagi ya karibuni (isipokuwa --version imetaja moja), hufanya ukaguzi ule ule kwenye binary, na huchapisha njia za kupakua, checksum na kubadilisha bila kupakua |
imezimwa |
--check na --version haziwezi kutumiwa pamoja. Tagi lazima ionekane kama vMAJOR.MINOR.PATCH, ikiwa na kiambishi cha hiari cha pre-release au build; v ya mwanzo inaweza kuachwa. Kitu kingine chochote hushindwa, kwa mfano --version takes a release tag such as v0.3.0, not "1.2".
Kigezo cha mazingira CCAM_RELEASES_URL huchukua nafasi ya https://github.com/jhyunwoo/ccam/releases, kwa ajili ya kioo (mirror) au kwa majaribio. Lazima kipangwe kwa njia ile ile: <url>/latest huelekeza kwenda <url>/tag/<tag>, na faili za toleo ziko katika <url>/download/<tag>/<asset>.
Jinsi inavyofanya kazi
Msimbo uko katika internal/update, ambayo ni ccam update pekee inayoiingiza. Njia ya kuanzisha haiiiti kamwe.
cli.updateCmdhupata binary inayoendeshwa kwaos.Executablena hufuata symlinks kwafilepath.EvalSymlinks. Njia hiyo halisi ndiyo hubadilishwa.- Bila
--version,Updater.Latesthuomba<releases>/latestbila kufuata uelekezaji, na husoma tagi kutoka kichwa chaLocation(…/tag/v0.5.0). Hii hutumia ukurasa wa matoleo badala ya GitHub API, kwa hiyo kikomo cha API cha maombi 60 kwa saa hakihusiki. Utafutaji una sekunde 10. parseVersionhukagua tagi dhidi ya mchoro mkali. Tagi huishia kwenye URL za kupakua na kwenye amri ya shell inayochapishwa, kwa hiyo hakuna kitu chenye/,%, nafasi au herufi za shell kinachopita.compareVersionshuilinganisha na toleo linaloendeshwa; pre-release hupangwa kabla ya toleo lake.managed()nawritable()huamua kama ccam inaruhusiwa kubadilisha binary hata kidogo (tazama hapa chini).Updater.Fetchhupakuaccam_<os>_<arch>.tar.gznachecksums.txtkwa wakati mmoja, kwa dakika 2 kwa zote mbili. Kila upakuaji una kikomo cha MB 256.- SHA-256 ya archive lazima ilingane na mstari wake katika
checksums.txtkabla ya jambo lingine lolote kutokea. Mstari unaokosekana au checksum tofauti husimamisha sasisho kwanothing was changed. extract()husoma tar na huchukua faili ya kawaida ya kwanza yenye jinaccam. Folda, viungo na vitu vingine hupuuzwa, na binary nayo ina kikomo cha MB 256.Updater.Installhuandika binary mpya kwafsutil.AtomicWrite: faili ya muda.ccam.tmp*kando ya binary, yenye ruhusa za faili ya zamani, huandikwa kwenye diski na hubadilishwa jina juu ya ile ya zamani.
Mchakato wote, kuanzia kutafuta tagi hadi kubadilisha jina:
Archive na checksums.txt hupakuliwa sambamba, na hakuna kinachoandikwa hadi checksum ilingane. Kubadilisha jina ni atomiki, kwa hiyo hitilafu ya ghafla au diski iliyojaa huacha binary ya zamani au mpya, kamwe si nusu ya moja. Amri za njia fupi kama ~/.local/bin/ccwork ni symlinks kuelekea binary ya ccam, kwa hiyo huendesha toleo jipya bila badiliko lolote.
Usakinishaji unaosimamiwa na kifurushi
ccam iliyosakinishwa kutoka .deb ni mali ya apt, na kuibadilisha bila apt kujua kungeacha hifadhidata ya vifurushi ikiwa si sahihi. Kabla ya kupakua, ccam hukagua nani anamiliki binary:
- Binary iliyo katika
/usr/bin,/bin,/usr/sbinau/sbinhuhesabiwa kuwa inasimamiwa na kifurushi. - Mahali pengine, ikiwa
dpkgimesakinishwa nadpkg -S <path>inafaulu, nayo huhesabiwa kuwa inasimamiwa na kifurushi. - Vinginevyo ccam huunda na kuondoa faili ya muda
.ccam-update-*kando ya binary ili kuhakikisha inaweza kuandika hapo.
Kwa binary inayosimamiwa na kifurushi ccam husimama na huchapisha hatua za apt:
$ 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 | shKwenye mifumo isiyo Linux, mstari wa script ya kusakinisha pekee ndio huchapishwa. Folda isipoweza kuandikwa, ccam hupendekeza kuendesha tena script ya kusakinisha, ambayo husakinisha ccam katika ~/.local/bin.
Usalama na hali maalum
- Build ya maendeleo huripoti toleo lake kama
devna haina toleo la kulinganisha nalo, kwa hiyoccam updatenaccam update --checkhuikataa.ccam update --version vX.Y.Zhusakinisha toleo juu yake. - Upakuaji ulioshindwa, faili ya toleo inayokosekana kwa jukwaa lako, au checksum isiyolingana huacha binary iliyosakinishwa kama ilivyokuwa.
- Toleo lisilokuwepo hushindwa na
there is no release <tag>. GitHub inapokataa kwa HTTP 403 au 429, ccam husema huenda ni kikomo cha maombi na hukuomba ujaribu tena baadaye. --checkhusoma tu. Haikagui kama binary inasimamiwa na kifurushi au inaweza kuandikwa.--versionyenye tagi ya zamani ndiyo njia ya kurudi kwenye toleo la awali.