Homebrew ant Mac: paketų valdytojas pradedantiesiems

Jei kada nors instaliavai kokią nors programėlę Mac kompiuteryje per terminalą sekdamas kažkokią instrukciją internete, greičiausiai jau susidūrei su žodžiu „Homebrew”. Ir jei tavo reakcija buvo „kas čia per velniava”, tai visiškai normalu – dauguma vartotojų pirmą kartą tai mato būtent taip. Bet štai kas įdomu: kai išmoksi naudotis šiuo įrankiu, supras kodėl vos ne kiekvienas patyręs macOS vartotojas jį turi instaliuotą kaip vieną pirmųjų dalykų naujame kompiuteryje.

Kas per daiktas tas Homebrew

Paprastais žodžiais – tai paketų valdytojas. Įsivaizduok App Store, tik be jokių apribojimų, be Apple priežiūros ir orientuotas išimtinai į programuotojus bei technikos entuziastus, kuriems reikia įrankių, kurių App Store net neturi. Homebrew leidžia instaliuoti, atnaujinti ir pašalinti programinę įrangą per terminalą, naudojant vieną paprastą komandą.

Kodėl tai apskritai reikalinga? macOS ateina su tam tikru kiekiu iš anksto įdiegtų įrankių, tačiau programuotojams to dažniausiai neužtenka. Reikia Python, Node.js, Git (nors tam tikra versija jau būna sistemoje), PostgreSQL, Redis, ir dešimčių kitų bibliotekų bei programų. Be Homebrew tektų kiekvieną iš jų ieškoti atskirai, siųsti installer failus, rankiniu būdu tvarkyti priklausomybes (dependencies) – ir tai gali virsti tikru košmaru, ypač kai vienam projektui reikia vienos Python versijos, o kitam – visai kitos.

Homebrew visą tą procesą suvienodina. Vienas komandos įvedimas terminale – ir turi ką tik nori.

Kaip tai atsirado ir kodėl būtent taip pavadinta

Įdomu tai, kad Homebrew projektą 2009 metais sukūrė Max Howell, tuo metu buvęs paprastas programuotojas, nusivylęs egzistuojančiais sprendimais (tuo metu populiariausias buvo MacPorts). Pavadinimas kilęs iš alaus darymo terminologijos – „brew” reiškia virti, gaminti, o visa koncepcija sukasi apie „recipes” (receptus), pagal kuriuos programos yra „paverdamos” ir instaliuojamos tavo sistemoje. Tie patys „receptai” Homebrew pasaulyje vadinami „formulomis” (formulas).

Beje, čia yra viena juokinga istorija – Max Howell kadaise buvo atmestas iš Google darbo pokalbio, nes negalėjo išspręsti algoritmų užduoties susijusios su binariniais medžiais. Interviuotojas pasakė kažką panašaus, kad „90% mūsų inžinierių” naudoja tavo sukurtą įrankį, bet tu negali apversti binarinio medžio ant popieriaus lapo. Šita istorija tapo gan žinoma developerių bendruomenėje kaip pavyzdys, kad technikos pokalbiai (technical interviews) ne visada atspindi realų sugebėjimą kurti naudingus produktus.

Instaliacija – pirmieji žingsniai

Prieš instaliuojant Homebrew, reikia turėti Xcode Command Line Tools – tai rinkinys bazinių įrankių, tokių kaip Git, kompiliatoriai ir panašiai. Dažniausiai sistema pati pasiūlys tai instaliuoti, kai bandysi paleisti Homebrew komandą pirmą kartą.

Pati instaliacija atrodo taip – atidarai Terminal aplikaciją (ją rasi per Spotlight paiešką, tiesiog paspaudus Cmd+Space ir įrašius „Terminal”) ir įklijuoji šią komandą tiesiai iš oficialios Homebrew svetainės (brew.sh):

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Svarbu – visada imk instaliacijos komandą tiesiai iš oficialios svetainės, nes ją kartais atnaujina. Niekada nekopijuok tokios komandos iš atsitiktinių forumų ar senų straipsnių, nes tai iš esmės yra skriptas, kuris vykdomas su administratoriaus teisėmis tavo sistemoje.

Procesas užtruks kelias minutes, priklausomai nuo interneto greičio. Po instaliacijos svarbiausia – neužmiršti paskutinio žingsnio, kurį Homebrew pats parodo terminale: reikia pridėti Homebrew prie PATH kintamojo, kad sistema žinotų, kur ieškoti instaliuotų programų. Apple Silicon (M1, M2, M3) kompiuteriuose Homebrew instaliuojasi į /opt/homebrew, o senesniuose Intel kompiuteriuose – į /usr/local. Ši detalė kartais suklaidina žmones, ieškančius senų instrukcijų internete.

Kaip realiai naudotis kasdien

Kai instaliacija baigta, viskas tampa nuostabiai paprasta. Nori instaliuoti programą – rašai:

brew install nodejs

Ir viskas. Homebrew pats susiranda reikiamą versiją, atsisiunčia, sutvarko priklausomybes ir paruošia naudojimui. Jokių installer langelių, jokių „Next, Next, Next” mygtukų, jokių licencijos sutikimų su kuriais niekas nesigilina.

Norint pašalinti programą, procesas analogiškas:

brew uninstall nodejs

Vienas dažniausiai naudojamų komandų – tai atnaujinimas. Kadangi Homebrew turi savo lokalią duomenų bazę apie visas galimas formulas, ją reikia periodiškai atnaujinti:

brew update

O jei nori atnaujinti visas jau instaliuotas programas iki naujausių versijų:

brew upgrade

Yra ir smulkesnis, bet naudingas dalykas – brew list parodo viską, kas šiuo metu instaliuota per Homebrew tavo sistemoje. Tai patogu, kai po pusės metų nebeprisimeni, ką tiksliai buvai susidėliojęs.

Casks – ne tik terminalo įrankiai

Čia daug kas nustemba – Homebrew moka instaliuoti ne tik komandinės eilutės įrankius, bet ir visavertes grafinės sąsajos aplikacijas. Tai vadinama „cask” sistema. Nori instaliuoti Google Chrome, Visual Studio Code, Slack, Docker Desktop ar Spotify? Prašom:

brew install --cask google-chrome
brew install --cask visual-studio-code
brew install --cask docker

Tai iš esmės pakeičia poreikį eiti į naršyklę, ieškoti oficialios svetainės, atsisiųsti .dmg failą, jį atidaryti, tempti ikonėlę į Applications aplanką ir tada dar ištrinti installer failą. Vienas eilutės komanda atlieka visą tą darbą automatiškai.

Beje, tai puikiai tinka, kai nusiperki naują Mac ir nori greitai susidėlioti visą darbo aplinką. Galima net sukurti skriptą su visomis reikalingomis brew install komandomis ir paleisti jį iš karto po pirmo prisijungimo – per pusvalandį turi visą aplinką paruoštą, tarsi būtų dirbtas jau metus.

Brewfile – visos aplinkos užrašymas viename faile

Yra dar vienas galingas, bet mažiau žinomas dalykas – Brewfile. Tai leidžia sugeneruoti visą sąrašą to, kas šiuo metu instaliuota tavo sistemoje:

brew bundle dump

Tai sukuria failą pavadinimu Brewfile, kuriame surašyta absoliučiai viskas – visos formulos, visi caskai, net Mac App Store aplikacijos, jei naudoji atitinkamą papildinį. Šis failas gali būti puikus dokumentavimo įrankis – jei kada nors persikelsi į naują kompiuterį arba tiesiog nori pasidalinti komanda apie tai, kokie įrankiai naudojami projekte, tereikia paleisti:

brew bundle install
Ir naujame kompiuteryje bus instaliuota lygiai tas pats, kas buvo senajame. Šitą praktiką dažnai naudoja IT komandos, kurios nori užtikrinti, kad visi programuotojai dirbtų su identiška aplinka.

Ką daryti, kai kažkas nutinka ne taip

Homebrew, kaip ir bet kuris kitas įrankis, ne visada veikia be problemų. Vienas dažniausių dalykų, su kuriuo susidursi - tai priklausomybių konfliktai arba senos, sugadintos instaliacijos. Pirmas dalykas, kurio verta pabandyti - diagnostinė komanda:

brew doctor

Ji patikrina visą sistemą ir praneša, jei kažkas neteisingai sukonfigūruota - pavyzdžiui, netinkamos teisės į aplankus arba senos, nebenaudojamos nuorodos (symlinks). Dažnai tiesiog perskaičius pranešimą ir sekant pasiūlytus veiksmus, problema išsisprendžia savaime.

Kitas naudingas veiksmas - išvalymas nuo senų, nebenaudojamų failų versijų:

brew cleanup

Kadangi Homebrew laiko senas versijas, kai atnaujina programas, po kurio laiko diskas gali prisipildyti nereikalingų failų. cleanup komanda tai sutvarko ir dažnai atlaisvina gerokai daugiau vietos, nei tikėtumeisi.

Vietoj išvadų - keli patarimai, kuriuos verta įsidėmėti

Jei šiandien pirmą kartą instaliuoji Homebrew, štai keletas dalykų, kurie iš karto sutaupys nervų ateityje. Pirma - visada tikrink, ar formula, kurią nori instaliuoti, egzistuoja, prieš tai naudodamas brew search pavadinimas. Kartais programos pavadinimas terminale skiriasi nuo to, kaip ją vadina rinkodara - pavyzdžiui, Visual Studio Code cask'as vadinasi visual-studio-code, o ne tiesiog "vscode".

Antra - reguliariai vykdyk brew update && brew upgrade kombinaciją, geriausia bent kartą per savaitę. Tai apsaugo nuo situacijos, kai bandai instaliuoti naują programą, o Homebrew skundžiasi, kad negali rasti formulos, nes tavo lokali duomenų bazė per daug pasenusi.

Trečia - jei dirbi su keliais projektais, kuriems reikia skirtingų programavimo kalbų versijų (pavyzdžiui, skirtingos Python versijos), Homebrew vienas pats to tinkamai neišsprendžia. Čia geriau naudoti papildomus įrankius, tokius kaip pyenv ar nvm, kuriuos, beje, irgi gali instaliuoti per Homebrew.

Ketvirta - neinstaliuok viską be atrankos vien todėl, kad "gal prireiks". Kiekviena formula ir cask'as užima vietos diske, o kartais net paleidžia foninius procesus. Prieš instaliuojant, verta trumpai paguglinti, ką tiksliai ta programa daro.

Ir galiausiai - Homebrew nėra magija, tai tik labai gerai suprojektuotas įrankis, kuris automatizuoja tai, ką anksčiau reikėdavo daryti rankiniu būdu. Kai pradedi juo naudotis, terminalas nustoja atrodyti kaip baisi juoda dėžė ir tampa tiesiog dar vienu, gan patogiu būdu tvarkytis su savo kompiuteriu. O kai vieną dieną pasakysi kolegai "aš čia tiesiog per brew instaliavau" vietoj ilgo pasakojimo apie installer failus - suprasi, kad šis mažas įrankis tapo neatsiejama tavo darbo dalimi.

Daugiau

Kamera įrašė įsilaužimą, bet vaizdas buvo bevertis: klaida padaroma dar montuojant

Kaip išvengti nugaros skausmų dirbant iš namų