Amaphakheji e-Adobe Experience Manager (AEM) angamaqhawe angaqashiwe okuphatha okuqukethwe - iziqukathi ezinamandla ezihlanganisa yonke into kusukela kukhodi nokulungiselelwa kuya kokuqukethwe okubalulekile. Kodwa masibhekane nakho: ukwenza mathupha, ukumisa, nokulanda lawa maphakheji kungase kuzwakale njengomdanso oyisicefe wokuchofoza. Kuthiwani uma ubungenza le nqubo ngokuzenzakalelayo ngokuchofoza izinkinobho ezimbalwa, uqinisekise ukuvumelana, isivinini, ukwethembeka, kanye nokuphakamisa okusindayo okuncane? Ngizokubonisa iskripthi se-Bash esiphenyisisa iskripthi (i-pun ihlosiwe!) sokuthi onjiniyela be-AEM nabaphathi basebenza kanjani ne-Package Manager API. Cabanga ngokwenza amaphakheji ngamasekhondi, ukuthunga izihlungi endizeni, kanye nokugoqa izipele ngokunemba kokuhlinzwa - konke ngaphambi kokuba ikhofi lakho liphole lifinyelele kulelo zinga lokushisa . ☕ elihle kakhulu : 🕳️ Ngaphambi kokuthi sicwilise, inothi elisheshayo Lesi sihloko siwukucwila okujulile, okunemininingwane ecokeme futhi okunobuchwepheshe obungenanjongo. Sizohlukanisa ukucabanga kombhalo, sihlole izinto eziyinkimbinkimbi ze-AEM API, futhi sixazulule amacala onqenqema. Konjiniyela abamagange ukugxumela ngqo kukhodi, ungagxumela phansi kwesihloko. Kodwa uma ulapha ukuze uqonde ukuthi kanjani futhi kungani ngemuva kwe-automation, bopha phakathi - sehla njalo ngembobo kanogwaja. 1. Uhlolojikelele Lweskripthi Iskripthi sisebenza ngokuzenzakalelayo ukusebenzisana ne-AEM's Package Manager API, sinikeza indlela ehlelekile yokudala iphakheji, ukumisa, nokusabalalisa. Idizayinelwe abathuthukisi nabaphathi, ingena esikhundleni sokugeleza komsebenzi okwenziwa ngesandla ngenqubo eqhutshwa ngomugqa womyalo egcizelela ukungaguquguquki nokuthembeka. create-remote-aem-pkg.sh 1.1 Imisebenzi ewumgogodla : Ihlola amaphakheji akhona ukuze igweme ukuphinda isetshenziswe ngaphambi kokuqala ukudala. Ukuqinisekisa Iphakheji : Ichaza ngokohlelo izindlela zokuqukethwe (isb, , ) ukuze zifakwe kuphakheji. Umjovo Wesihlungi Esinamandla /content/dam /apps : Icupha ukuhlanganiswa kwephakheji futhi ilande okukhiphayo kumkhombandlela othile, ifake isitembu sesikhathi kumagama wefayela ukuze ulawule inguqulo. Yakha Okuzenzakalelayo : Iqinisekisa izimpendulo ze-HTTP, izindlela zefolda, kanye nokuqinisekisa ukuze kuhlinzekwe impendulo engenzeka ngesikhathi sokuhluleka. Ukuphatha Iphutha : Isekela ukuqinisekiswa okuyisisekelo¹ okusekelwe kumininingwane nge . Ukuqinisekisa curl 1.2 Izinzuzo Ezibalulekile : Yehlisa izinyathelo ezenziwa ngesandla ezidingekayo ekudalweni kwephakheji, ukulungisa, nokulanda. Ukusebenza kahle : Iqinisekisa izakhiwo zephakheji ezifanayo kanye nezimiso zokuqamba amagama kuzo zonke izindawo. Ukungaguquguquki : Ukugawulwa okunemininingwane esigabeni ngasinye (ukudala, ukuhlunga, ukwakha, ukulanda) kusiza ekucwaningeni nasekuxazululeni izinkinga. Ukulandeleka 1.3 Izicelo Ezisebenzayo : Hlanganisa nemisebenzi ye-cron ukuze ubeke kungobo yomlando izindlela zokuqukethwe ezibalulekile. Izipele Ezihleliwe : Phinda ukulungiselelwa noma okuqukethwe phakathi kwezimo ze-AEM phakathi nokuthunyelwa. Ukuvumelanisa Imvelo : Thwebula izimo ezizinzile ze- noma ngaphambi kokufaka izibuyekezo zesistimu. Buyekeza kusengaphambili Izifinyezo /etc /apps 1.4 Okudingekayo Ukufinyelela kusibonelo se-AEM (imininingwane, iseva, imbobo). Ukujwayelana okuyisisekelo ne-Bash scripting kanye nomphathi wephakheji we-AEM. Imvume yokudala nokulanda amaphakheji nge-AEM API. 1.5 Ukusetshenziswa kwesibonelo ./create-remote-aem-pkg.sh admin securepass123 localhost 4502 backup-group "Content Backup" /backups /content/dam /etc/clientlibs Lo myalo udala iphasela eliqanjwe ngokuthi “Isipele Sokuqukethwe” ngaphansi kweqembu le , okuhlanganisa kanye , futhi igcina okukhiphayo kuhla lwemibhalo . backup-group /content/dam /etc/clientlibs /backups 2. Ukuhlukaniswa Kweskripthi Masihlukanise iskripthi (ungasithola ngaphansi kwesihloko) ukuze uqonde ukuthi sihlela kanjani ukuphathwa kwephakheji ye-AEM. Sizogxila esakhiweni sayo, imisebenzi ebalulekile, kanye nokucabanga kokugeleza komsebenzi—okulungele onjiniyela abafuna ukwenza ngendlela oyifisayo noma ukulungisa iphutha lethuluzi. create-remote-aem-pkg.sh 2.1 Imisebenzi Esemqoka : Umsebenzi osetshenziswayo ofaka iziqalo zemilayezo ngezitembu zesikhathi zomzila wokuhlola ocacile. _log() _log () { echo "[$(date +%Y.%m.%d-%H:%M:%S)] $1" } : Iqinisekisa ukuthi zonke izenzo (isb., “Iphakheji elakhiwe”) lifakwe phakathi komongo, okwenza kube lula ukuxazulula inkinga. Kungani kubalulekile : Iqinisekisa impumelelo yemiyalo yangaphambili ngokuhlola amakhodi okuphuma nezimpendulo ze-API. check_last_exec() check_last_exec () { # Checks $? (exit status) and $CURL_OUTPUT for errors if [ "$status" -ne 0 ] || [[ $output =~ .*success\":false* ]]; then _log "Error detected!"; exit 1; fi } : Igwema ukwehluleka buthule ngokumisa ukwenza kumaphutha abucayi njengezinkinga zokuqinisekisa noma izindlela ezingavumelekile. Kungani kubalulekile 2.2 Amapharamitha Wokufaka Umbhalo wamukela ama-agumenti ezindawo eziyisikhombisa alandelwa izihlungi eziguqukayo: USR="$1" # AEM username PWD="$2" # AEM password SVR="$3" # Server host (eg, localhost) PORT="$4" # Port (eg, 4502) PKG_GROUP="$5" # Package group (eg, "backups") PKG_NAME="$6" # Package name (eg, "dam-backup") BK_FOLDER="$7" # Backup directory (eg, "/backups") shift 7 # Remaining arguments become filters (eg, "/content/dam") Izimpikiswano zokuma ziqinisekisa ubulula, kuyilapho iphatha izindlela zokuhlunga eziguquguqukayo kalula. shift 2.3 Ukuqinisekiswa Kwephakheji Nokudala : Ifaka esikhundleni sezikhala ku ngama-underscore ukuze kugwenywe izinkinga ze-URL. Hlanza Amagama PKG_NAME PKG_NAME=${PKG_NAME// /_} : Isebenzisa ukuze ifake uhlu lwamaphakheji nge-API ye-AEM, igwema ukudalwa okungafuneki. Hlola Amaphakheji Akhona curl if [ $(curl ... | grep "$PKG_NAME.zip" | wc -l) -eq 1 ]; then _log "Package exists—skipping creation." else curl -X POST ... # Creates the package fi 2.4 Ukucushwa Kwesihlungi Esinamandla Yakha izihlungi ze-JSON eziphuma ezindleleni zokufaka: FILTERS_PARAM="" for i in "${!FILTERS[@]}"; do FILTERS_PARAM+="{\"root\": \"${FILTERS[$i]}\", \"rules\": []}" # Adds commas between entries, but not after the last done : Isibonelo esiphumayo [{"root": "/content/dam"}, {"root": "/apps"}] Le JSON ifakwa encazelweni yephakheji nge-AEM's endpoint. /crx/packmgr/update.jsp 2.5 Yakha futhi Udawunilode ukuhamba komsebenzi : Icupha ukuhlanganiswa kusetshenziswa umyalo we-AEM: Yakha Iphakheji build curl -X POST … -F "cmd=build" : Umbhalo ulinda ukuthi ukwakhiwa kuqedwe ngaphambi kokuqhubeka. Qaphela : Isebenzisa ukuze ilande futhi iyilondoloze ngegama lefayela elinesitembu sesikhathi: Ukulanda curl .zip BK_FILE="$PKG_NAME-$(date +%Y%m%d-%H%M%S).zip" curl -o "$BK_FOLDER/$BK_FILE" ... 3. Ukuphatha Iphutha, Amanothi Okuvikela, Nokungena Ukuphatha amaphutha aqinile nokuloga kubalulekile kumaskripthi angagadiwe afana , ukuqinisekisa ukuthi ukwehluleka kubanjwa kusenesikhathi futhi kufakwe ngokusobala. Nansi indlela iskripthi sivikela ngayo ezinkingeni ezingalindelekile futhi sinikeza imininingwane engenzeka. create-remote-aem-pkg.sh 3.1 Indlela Yokugawula : Umsebenzi ufaka isiqalo somlayezo wonke ngesitembu sesikhathi esingu- , udala umzila wokuhlola wokususa iphutha: Amalogi anesitembu sesikhathi _log [YYYY.MM.DD-HH:MM:SS] _log "Starting backup process..." # Output: [2023.10.25-14:30:45] Starting backup process... : Izitembu zesikhathi zisiza ukuhlobanisa umsebenzi weskripthi namalogu eseva ye-AEM noma imicimbi yangaphandle (isb, amashejuli emisebenzi ye-cron). Kungani kubalulekile : Izinyathelo ezibalulekile, njengokwenza iphakheji, ukubuyekezwa kwesihlungi, nokulandiwe, kufakwe ngokusobala ukuze kulandelelwe ukuqhubeka. I-Verbose Output 3.2 Ukuqinisekisa Ukuhamba Kokusebenza Kwephutha : Ukuhlola Ngaphambi Kokundiza Iqinisekisa ubukhona befolda eyisipele ( ) ngaphambi kokuqhubeka: BK_FOLDER if [ ! -d "$BK_FOLDER" ]; then _log "Backup folder '$BK_FOLDER' does not exist!" && exit 1 fi Ihlanza ukuze igweme izinkinga ze-URL (isb, izikhala ezithathelwa indawo ama-underscore). PKG_NAME : Ukuqinisekiswa Kwempendulo ye-API Umsebenzi uhlola womabili amakhodi okuphuma egobolondweni ( ) kanye nezimpendulo ze-AEM API: check_last_exec $? check_last_exec "Error message" "$CURL_OUTPUT" $CURL_STATUS : Amanani angewona aziro (isb, ukwehluleka kwenethiwekhi ye- ) aqala ukuphuma ngokushesha. Phuma Kumakhodi curl : Ithola noma iyunithi yezinhlamvu ethi "HTTP ERROR" ekuphumeni kwe-AEM. Amaphutha e-API success\":false : Lapho ulanda iphakheji, umbhalo uhlola ikhodi yesimo : 3.3 Ukuqinisekiswa Kwesimo Se-HTTP 200 if [ "$(curl -w "%{http_code}" ...)" -eq "200" ]; then # Proceed if download succeeds else _log "Error downloading the package!" && exit 1 fi 3.4 Izimo Zokwehluleka Okujwayelekile Ukuqinisekisa okungavumelekile: ibamba izimpendulo futhi iphuma ngomlayezo wephutha ocacile. check_last_exec 401 Unauthorized Indlela yokuhlunga engavumelekile: I-AEM API ibuyisela , amalogi ombhalo "Iphutha lokwengeza izihlungi" futhi iyanqamula. success:false Idiski igcwele: Yehlulekile ukubhala , ihlola usayizi wefayela nge ifulegi kanye nezixwayiso ngaphambi kokuphuma. BK_FILE -s Isibonelo se-AEM asifinyeleleki: iphuma ngekhodi okungelona uziro, umbhalo ubhalwe ukuthi "Iphutha ekwakheni iphakheji". curl 3.5 Imibandela Yokuphepha : Iskripthi sisebenzisa ukuze kube lula, okweqa ukuqinisekiswa kwe-SSL. : Faka esikhundleni ngokuthi ukuze ucacise inqwaba ye-CA. I-SSL Certificate Bypass curl -k Isincomo Sokukhiqiza --cacert : Ukuqinisekisa kuphasiswa njengezimpikiswano, ezingase zivele kulogi lwenqubo. : Sebenzisa okuguquguqukayo kwemvelo noma i-vault eyimfihlo (isb, ). Amagama Ayimfihlo Ombhalo Ongenalutho Ukunciphisa $AEM_PASSWORD 3.6 Amathiphu Okususa iphutha : Engeza okwesikhashana ekuqaleni kweskripthi ukuze uphrinte imiyalo ekhishiwe. Nika amandla i-Verbose Output set -x : Hlukanisa izinkinga ngokusebenzisa imiyalo ebalulekile ngaphandle kweskripthi Hlola Izingcingo ze-API Mathupha curl : Qondisa kabusha okukhishwayo kweskripthi efayeleni ukuze kuhlaziywe kamuva: Hlola Amalogi ./create-remote-aem-pkg.sh ... >> /var/log/aem_backup.log 2>&1 4. Ukwenza Ithuluzi lihambisane nokuhamba kwakho komsebenzi Iskripthi siklanyelwe ukuba isiqalo—isisekelo ongakwazi ukusishintsha ukuze sihambisane nezidingo zeqembu lakho. Ngezansi kukhona ukwenza ngokwezifiso okuvamile, kanye neziqondiso zokusetshenziswa, ukuze kunwetshwe ukusebenza kwayo noma kuzivumelanise nezimo ezithile zokusetshenziswa. create-remote-aem-pkg.sh 4.1 Ukulungisa Ifomethi Yegama Lefayela Eyisipele Igama lefayela elizenzakalelayo lisebenzisa isitembu sesikhathi ( ). Lungisa lokhu ukuze ufake amagama emvelo, ama-ID wephrojekthi, noma inguqulo ye-semantic: $PKG_NAME-$(date +%Y%m%d-%H%M%S).zip # Example: Include environment (eg, "dev", "prod") BK_FILE="${PKG_NAME}-${ENV}-$(date +%Y%m%d).zip" # Example: Add Git commit SHA for traceability COMMIT_SHA=$(git rev-parse --short HEAD) BK_FILE="${PKG_NAME}-${COMMIT_SHA}.zip" : Qinisekisa ukuthi amafomethi osuku/isikhathi agwema izinhlamvu ezenqatshelwe emagameni wefayela (isb., amakholoni ku-Windows). Ithiphu : 4.2 Ukwandisa noma Ukuguqula Izihlungi Iskripthi samukela izindlela eziguquguqukayo njengezihlungi kodwa ungakwazi futhi ukufaka ikhodi eqinile izindlela ezisetshenziswa njalo noma wengeze okungafakwanga: # Hardcode essential paths (eg, "/var/audit") DEFAULT_FILTERS=("/content/dam" "/apps" "/var/audit") FILTERS=("${DEFAULT_FILTERS[@]}" "${@}") # Merge with command-line inputs # Add exclusion rules (requires AEM API support) FILTERS_PARAM+="{\"root\": \"${FILTERS[$i]}\", \"rules\": [{\"modifier\": \"exclude\", \"pattern\": \".*/test/*\"}]}" 4.3 Ukuthuthukisa Ezokuphepha : Gwema Amagama Ayimfihlo Ayimfihlo Sebenzisa okuguquguqukayo kwendawo noma umphathi wezimfihlo ukuze ujove izifakazelo: # Fetch password from environment variable PWD="$AEM_PASSWORD" # Use AWS Secrets Manager (example) PWD=$(aws secretsmanager get-secret-value --secret-id aem/prod/password --query SecretString --output text) : Faka esikhundleni (engavikelekile) ngesitifiketi se-CA esithenjwayo: Qinisekisa ukuqinisekiswa kwe-SSL curl -k curl --cacert /path/to/ca-bundle.crt -u "$USR":"$PWD" ... 4.4 Ukwengeza Izenzo Ngemva Kokwakha Nweba umbhalo ukuze uqalise izinqubo eziya phansi ngemva kokulanda ngempumelelo: # Example: Upload to cloud storage aws s3 cp "$BK_FOLDER/$BK_FILE" s3://my-backup-bucket/ # Example: Validate package integrity CHECKSUM=$(sha256sum "$BK_FOLDER/$BK_FILE" | cut -d ' ' -f 1) _log "SHA-256 checksum: $CHECKSUM" # Example: Clean up old backups (retain last 7 days) find "$BK_FOLDER" -name "*.zip" -mtime +7 -exec rm {} \; 4.5 Ukwengeza Izaziso Yazisa amaqembu ngempumelelo/ukwehluleka nge-Slack, i-imeyili, noma amathuluzi okuqapha: # Post to Slack on failure curl -X POST -H 'Content-type: application/json' \ --data "{\"text\":\"🚨 AEM backup failed: $(hostname)\"}" \ https://hooks.slack.com/services/YOUR/WEBHOOK/URL # Send email via sendmail if [ $? -ne 0 ]; then echo "Subject: Backup Failed" | sendmail admin@mycompany.com fi 5. Isiphetho Ukuphatha amaphakheji e-AEM akudingeki kube umsebenzi owenziwa ngesandla, onephutha. Ngeskripthi , ungakwazi ukuguqula ukudalwa kwephakheji, ukuhlunga, nokusabalalisa kube inqubo elula, ephindaphindwayo. Leli thuluzi alikona nje ukonga isikhathi, limayelana nokunika amandla ukungaguquguquki, ukwethembeka, kanye nokulinganisa emisebenzini yakho ye-AEM. create-remote-aem-pkg.sh Okuthathwayo Okubalulekile : Ngokususa ukusebenzisana okuphindaphindayo kwe-GUI, umbhalo wehlisa amaphutha abantu futhi ukhulula amaqembu ukuthi agxile emisebenzini yenani eliphezulu. Okuzenzakalelayo Kuyawina : Noma ngabe yenza ikhophi yasenqolobaneni yokuqukethwe okubalulekile, izindawo zokuvumelanisa, noma ukulungiselela izibuyekezo, umbhalo uzivumelanisa nezimo ezihlukahlukene zokusetshenziswa ezinokulungiswa okuncane. Izindaba Ezivumelana Nezimo : Ukungena okwakhelwe ngaphakathi, ukuhlolwa kwamaphutha, nokucatshangelwa kokuvikeleka kuqinisekisa ukuthi iskripthi siziphatha ngendlela ebikezelwayo, noma ngabe izinto ziya eceleni. Ukuqina Kungukhiye Amathuluzi amahle azalwa ngezinselele zomhlaba wangempela. Lesi script siyisiqalo; kucabange njengesisekelo ongakhela phezu kwaso njengoba izidingo zeqembu lakho zikhula. Kungakhathaliseki ukuthi ungunjiniyela oyedwa noma uyingxenye yeqembu elikhulu le-DevOps, ukuzenzela okufana nalokhu kuyisibonelo sokuthi ukutshalwa kwezimali okuncane kwekhodi kungaletha izinzuzo ezinkulu ekukhiqizeni nasekuthuleni kwengqondo. Ulungele ukuthatha isinyathelo esilandelayo? 🛠️ : Hlela umbhalo usebenzisa njengomhlahlandlela wakho. Enza ngendlela oyifisayo iSigaba 6 🔍 : Buyekeza ukuhamba komsebenzi kwakho okukhona kwe-AEM ukuze uthole amathuba okuzenzakalela. Ukuhlola 🤝 : Qondisa ithimba lakho noma ubhale iposi lebhulogi mayelana nezinguqulo zakho. Yabelana Siyabonga ngokulandela - manje phuma wenze ngokuzenzakalela! 🚀 Isithasiselo Qedela Ikhodi #!/bin/bash set -eo pipefail # The script will create a package thought the package manager api: # - The package is created, if not already present # - Package filters are populated accordingly to specified paths # - Package is builded # - Package is download to the specified folder _log () { echo "[$(date +%Y.%m.%d-%H:%M:%S)] $1" } check_last_exec () { local message="$1" local output="$2" local status=$3 if [ "$status" -ne 0 ]; then echo && echo "$message" && echo exit 1 fi if [[ $output =~ .*success\":false* ]] || [[ $output =~ .*"HTTP ERROR"* ]]; then _log "$message" exit 1 fi } USR="$1" PWD="$2" SVR="$3" PORT="$4" PKG_GROUP="$5" PKG_NAME="$6" BK_FOLDER="$7" shift 7 # The following paths will be included in the package FILTERS=($@) BK_FILE=$PKG_NAME"-"$(date +%Y%m%d-%H%M%S).zip _log "Starting backup process..." echo "AEM instance: '$SVR':'$PORT' AEM User: '$USR' Package group: $PKG_GROUP Package name: '$PKG_NAME' Destination folder: $BK_FOLDER Destination file: '$BK_FILE' Filter paths: " printf '\t%s\n\n' "${FILTERS[@]}" if [ ! -d "$BK_FOLDER" ]; then _log "Backup folder '$BK_FOLDER' does not exist!" && echo exit 1 fi PKG_NAME=${PKG_NAME// /_} check_last_exec "Error replacing white space chars from package name!" "" $? || exit 1 _log "Removed whitespaces from package name: '$PKG_NAME'" BK_FILE=$PKG_NAME.zip _log "Backup file: '$BK_FILE'" _log "Creating the package..." if [ $(curl -k -u "$USR":"$PWD" "$SVR:$PORT/crx/packmgr/service.jsp?cmd=ls" 2>/dev/null | grep "$PKG_NAME.zip" | wc -l) -eq 1 ]; then _log " Package '$PKG_GROUP/$PKG_NAME' is already present: skipping creation." else curl -k --silent -u "$USR":"$PWD" -X POST \ "$SVR:$PORT/crx/packmgr/service/.json/etc/packages/$PKG_GROUP/$PKG_NAME?cmd=create" \ -d packageName="$PKG_NAME" -d groupName="$PKG_GROUP" check_last_exec " Error creating the package!" "" $? _log " Package created" fi # create filters variable FILTERS_PARAM="" ARR_LEN="${#FILTERS[@]}" for i in "${!FILTERS[@]}"; do FILTERS_PARAM=$FILTERS_PARAM"{\"root\": \"${FILTERS[$i]}\", \"rules\": []}" T=$((i+1)) if [ $T -ne $ARR_LEN ]; then FILTERS_PARAM=$FILTERS_PARAM", " fi done # add filters _log "Adding filters to the package..." CURL_OUTPUT=$(curl -k --silent -u "$USR":"$PWD" -X POST "$SVR:$PORT/crx/packmgr/update.jsp" \ -F path=/etc/packages/"$PKG_GROUP"/"$PKG_NAME".zip -F packageName="$PKG_NAME" \ -F groupName="$PKG_GROUP" \ -F filter="[$FILTERS_PARAM]" \ -F "_charset_=UTF-8") CURL_STATUS=$? # Pass the status to the check_last_exec function check_last_exec "Error adding filters to the package!" "$CURL_OUTPUT" $CURL_STATUS _log " Package filters updated successfully." # build package _log "Building the package..." CURL_OUTPUT=$(curl -k -u "$USR":"$PWD" -X POST \ "$SVR:$PORT/crx/packmgr/service/script.html/etc/packages/$PKG_GROUP/$PKG_NAME.zip" \ -F "cmd=build") check_last_exec " Error building the package!" "$CURL_OUTPUT" $? _log " Package built." # download package _log "Downloading the package..." if [ "$(curl -w "%{http_code}" -o "$BK_FOLDER/$BK_FILE" -k --silent -u "$USR":"$PWD" "$SVR:$PORT/etc/packages/$PKG_GROUP/$PKG_NAME.zip")" -eq "200" ]; then if [ -f "$BK_FOLDER/$BK_FILE" ] && [ -s "$BK_FOLDER/$BK_FILE" ]; then _log " Package $BK_FILE downloaded in $BK_FOLDER." exit 0 fi fi _log " Error downloading the package!" exit 1 Izikhombo [¹] Ukweqa ukuqinisekiswa kwe-SSL nge kuyasiza ekuhlolweni, kodwa uzofuna okuthile okuqinile ekukhiqizeni (ngokwesibonelo )! curl -k --cacert [²] I-AEM Package Manager Imibhalo Esemthethweni