Mac i problemy z locale w terminalu – HOWTO

Jak pisałem, częściowo siedzę na macu. Zrozumiałem ludzi, którzy narzekali na obsługę systemu klawiaturą w macach. Wiele skomplikowanych combo na trzy palce. Ale to mogła by być kwestia przyzwyczajenia, zwłaszcza w trybie graficznym. Jeśli jednak ktoś korzysta głównie z terminala, to „fun” jest na zupełnie innym poziomie. Otóż funkcję klawisza Ctrl w macOS „normalnie” (czyli w GUI) spełnia lewy klawisz command, umieszczony tam, gdzie normalnie jest alt. Jeśli jednak przejdziemy do terminala, to w aplikacjach uruchomionych w konsoli żeby zrobić ctrl-c należy wcisnąć… control-c. Tak, jest też osobny klawisz control, którego należy używać w terminalu.

Jeśli jednak korzystamy z VirtualBox i uruchomimy tam Linuksa, to żeby utworzyć nową zakładkę w przeglądarce należy użyć… control-t. W GUI. W tej samej przeglądarce pod macOS używamy command-t. IMO totalna porażka UXowa i coś do czego nie sposób się przyzwyczaić, jeśli ktoś używa systemów na przemian. Można najwyżej nieustannie pamiętać, ale u mnie kończy się to masą missclicków. Zobaczę jeszcze co będzie po podłączeniu zewnętrznej, pecetowej klawiatury, choć to raczej z ciekawości – w końcu to nie stacjonarka. Ew. poszukam jakiegoś software’owego rozwiązania, choć staram się unikać przemapowywania klawiszy jak mogę – ciężko się później korzysta z instrukcji w necie.

Z pozytywów – doceniam działające kopiowanie i wklejanie w terminalu przy pomocy command-c i command-v. Pod Linuksem są na to osobne skróty, choć do tego akurat używałem myszy i zaznacz (i automatycznie skopiuj) i środkowego przycisku do wklejania. Domyślnie działa też – analogicznie jak pod Linuksem – wklejanie zaznaczonego w terminalu tekstu przy pomocy środkowego klawisza myszy. Niestety, jest ograniczone do konsoli, aby skopiować jakieś polecenie z przeglądarki trzeba już używać skrótów klawiszowych.

Wracając do tematu z topica. Po zmianie systemu na macOS i logowaniu przy pomocy ssh na serwery witał mnie komunikat w stylu:

-bash: warning: setlocale: LC_ALL: cannot change locale (pl_PL.UTF-8)
-bash: warning: setlocale: LC_ALL: cannot change locale (pl_PL.UTF-8)
-bash: warning: setlocale: LC_ALL: cannot change locale (pl_PL.UTF-8)

Sprawa jasna, problem ustawieniami locales, tyle, że nigdy mi się nie zdarzał, w systemie (macOS) niby są ustawione. Na chwilę odpuściłem temat, bo mało estetyczny komunikat przy logowaniu to nie dramat, ale szybko okazało się, że potrafi to wpływać – rzecz jasna ujemnie – na działanie poleceń i skryptów. Gdy tylko siadłem do szukania rozwiązania okazało się, że problem jest popularny, wręcz powszechny.

Pierwsze rozwiązanie, które znalazłem, wyglądało elegancko i nawet tłumaczyłoby, czemu nie działa skoro locales są ustawione. Niestety, po włączeniu i otwarciu nowych zakładek w terminalu, a nawet restarcie terminala okazało się, że… nie działa. Teraz widzę, że rozwiązanie jest stare, z 2012, wtedy mi umknęło.

Dopiero tu znalazłem faktyczne rozwiązanie problemu z locale w terminalu pod macOS. Jest proste i sprowadza się do dodania dwóch linii w pliku ~/.bash_profile:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

Powinno działać także z wersją polską, ale nie testowałem – w moim przypadku powyższa wersja jest OK, przynajmniej po pobieżnym sprawdzeniu nie zauważyłem problemów. Ustawienie z pierwszego rozwiązania również zostawiłem.

11 Replies to “Mac i problemy z locale w terminalu – HOWTO”

  1. Ten problem wynika częściowo z Twoich przyzwyczajeń. I drugie, że duża część aplikacji ma mapowania tak zrobione żeby nie kolidowały z systemowymi… Bo największą porażką tego systemu jest to, że części rzeczy po prostu nie da się przestawić. Osobiście zamieniam na Macku funkcje klawiszy control i command oraz na start skrót do Spotlight (bo lubię mieć command/control + spacja w IDE do innych rzeczy), a do terminala po po prostu się przyzwyczaiłem i zaciskam zęby, bo co jakiś czas popełniam błędy bo w domu siedzę głównie na Linuksie. 😉

    Z wirtualną maszyną jest trochę upierdliwe, ale skoro odpalasz na niej Linuksa to spróbuj przygotować własne mapowanie klawiszy.

    1. Wszystko można zwalić na przyzwyczajenia. Na razie robocza spiskowa teoria jest taka, że na macach celowo zrobili inaczej i reklamują, że to lepsze i naturalne, bo wiedzą, że przeciętny człowiek może się przyzwyczaić do jednego zestawu. 😉

      Zamiana miejsc nie boli mnie w tym momencie (przynajmniej nie o tym jest we wpisie), a jedynie fakt, że mam „dwa osobne klawisze control”. Ogólnie staram się (zresztą od zawsze tak mam) nie customizować zbytnio, żeby móc korzystać z dowolnego komputera, nie tylko swojego. M.in. z tego powodu nigdy nie próbowałem poważnie przesiąść się na układ klawiatury Dvoraka.

      Wirtualna maszyna to pewien skrót myślowy. To różne wirtualki, część z premedytacją live, zatem przemapowanie w wirtualkach odpada.

      1. A to kolejny punkt. Trzeba się przyzwyczaić, że jak się przyzwyczaisz to i tak mogą coś zmienić bo wymyślą, że inaczej jest lepiej. 😀

        Nie mniej, jak dla mnie ten system ma ogromnego plusa za prostotę wielu rzeczy, Apple się nie bawi w przesadną kompatybilność wsteczną, jak gdzieś dojdą do wniosku, że inaczej będzie lepiej to po prostu zmienią i cała reszta ma się dostosować…

        Ma też to swoje minusy, przykładem tego może być nawet ostatnia zmiana głównego systemu plików, przyszła aktualizacja, ochoczo kliknąłem i cyk Unity 5.x nie działa z partycji systemowych. Jak zwykle coś kosztem czegoś… 😉

        1. Nie czuję tej prostoty. Tzn. dla mnie nie jest istotnie prościej, niż gdzie indziej. Jest parę fajnych rzeczy (ale o tym kiedy indziej), ale prościej? No nie bardzo. Przy czym oczywiście zdaję sobie sprawę, że mam spaczone pojęcie prościej, bo dla mnie prościej oznacza wydać jedno polecenie w konsoli i mieć zaktualizowane wszystkie aplikacje, a nie klikać po kolei okienka, albo móc przeczytać komunikat błędu, a nie dostać na twarz bluescreena z kodem.

          Nie ukrywajmy, że brak kompatybilności wstecznej jest Apple na rękę – wymusza wymianę sprzętu. I nawet nie ma specjalnej obawy, że sprzęt trafi do mniej wymagających zastosowań, bo skoro macOS nie działa, to dla „przywykniętego” użytkownika po sprzęcie. Przecież Linuksa nie będzie używał.

          Dla jasności: to nie był wpis z narzekaniem, tylko z rozwiązaniem popularnego problemu. Po prostu jedna rzecz mi się przypomniała z tym osobnym klawiszem i nie mogłem jej nie poruszyć przy okazji. Marudzenie, także o ergonomii, dopiero będzie.

          1. Prościej z punktu widzenia zwykłego użytkownika. Dostajesz komputer z systemem, zero doinstalowywania sterowników, ilość opcji minimalna, uproszczony interfejs zarządzania systemem. W porównaniu do Windowsa, z jego naleciałościami i brakiem decyzji czy zostawić taki panel sterowania, czy nowy, czy może jeszcze inny to jest przepaść.

            Co do błędów pomocna może się okazać aplikacja console, która pozwala przeglądać logi. Co do aktualizacji, te z App Stor’a aktualizujesz jednym klikiem, no ale nie każdy lubi płacić ciężko zarobione $$$ za licencje na program developerski więc też znam ten ból. 😀 No i jest home brew do aplikacji konsolowych, cocoa pods gdybyś potrzebował bibliotek do natywnych projektów, ale sporo zależy od tego czego szukasz. Home brew albo ports warto mieć jeśli po prostu lubisz unixowe narzędzia.

            Z tą kompatybilnością wsteczną to nie działa za bardzo dla sprzętu. Akurat Apple bardzo długo wspiera aktualizacjami swój sprzęt, ostatnie poważniejsze odcięcie nastąpiło przy zmianie rodziny procesorów, a tak to wydaje mi się, że najnowsze aktualizacje są dostępne także dla maszyn z C2D, musiałbym wygrzebać swojego macka mini i sprawdzić… Do wymiany sprzętu raczej przymuszają puchnące programy, kilka lat temu Skype był natywny, dzisiaj coraz więcej aplikacji opartych na Elektronie i tak się śmialiśmy z Chroma, że kilka zakładek i RAM robi pa pa, a teraz mamy pseudo natywne apki do komunikacji Slacka, Skyp’a i pewnie jeszcze coś się znajdzie, opasłe IDE (produkty JetBrains są wypasione ale też wcinają trochę pamięci), itd. itd.

            Rozumie, że to nie wpis z narzekaniem. Też mi się wiele rzeczy nie podoba ale chyba najbardziej odpycha mnie cennik, i tak w pracy Mack, w domu stary Mack jak trzeba popracować, do zadań domowych Linux, ale w planach ogarnięcie środowiska pracy na Windzie, bo i sporo osób w pracy ma Windowsa, Unity czasami ma dziwne odpały na Macku i nie zawsze można zrobić po prostu aktualizację do nowszej wersji no i zupełnie inny poziom cenowy. W sumie jakbyś się pochwalił czego do tej pory używałeś na Windowsie, że tak lubisz command line byłbym wdzięczny. 😀

  2. Ciężko mi oceniać przez pryzmat zwykłego użytkownika. Na Windows raczej nie siedzę, ale z tego co czasami mam okazję kliknąć/obejrzeć, to ze sterownikami bardzo się poprawiło. Z trudności, które ostatnio miałem pod Windows: wybór przez którą kartę dźwiękową ma lecieć dźwięk i którego mikrofonu korzystać. I w sumie najchętniej per appka, a nie globalnie. Muszę pamiętać, by sprawdzić na macu… Jeśli chodzi o rzekomą prostotę, to wg moich obserwacji i tak koniec końców wszyscy kończą w wyszukiwarce, nawet z prostymi rzeczami. Rozmowa z kumplem, użytkownikiem maca parę tygodni dłużej była bardzo pouczająca, dla obu stron. W kontekście prostych ustawień właśnie.

    App Store nie używam, nawet nie skonfigurowałem, nie mam potrzeby – potrzebne appki dostarcza firma, dodatkowe instaluję albo z Homebrew (tak, jak najbardziej potrzebuję opensource’owych appek), albo ze stron projektów (wg kumpli w App Store podobno i tak nie wszystko jest, TBH nie sprawdzałem). Nadal, brakuje mi jednego miejsca do wszystkich aktualizacji. Pod Debianem/Ubuntu jest w zasadzie jedna uznana metoda instalacji – przez repo. Po prostu dodajesz odpowiednie repo i po tym już wszystko dzieje się samo, automatycznie, zarządzane z jednego miejsca. Co bardziej ogarnięte appki nawet dodają repo przy instalacji pakietu z ręki. Skoro przy aktualizacjach jesteśmy, to z kronikarskiego obowiązku: wczoraj jakaś appka(? albo część systemu) chciała się zaktualizować i… chciała zrobić restart komputera. Całkiem jak Windows koło 2000.

    Czy Apple długo wspiera sprzęt? https://www.macrumors.com/2018/06/04/macos-mojave-supported-macs/ – odcięcie wielu modeli. Wygląda, że jakieś 5-6 lat dają, to nie jest IMO dużo dla hardware. Zwł. dla mocniejszych modeli. W to, że poprzednia wersja systemu jest aktualizowana i są na nią wydawane appki i wszystko działa oczywiście wierzyć można…

    Apetyt na RAM to jeszcze inna kwestia, Chrome zużywa niby tyle, ile dasz ale… nie widzę tego pod Linuksem. Mam 16 GB, odpalone 2-3 przeglądarki z masą tabów, Thunderbird, password manager, agregator RSS i… użycie < 4GB. Jeśli ktoś nie zaśmieca kompa to IMO 4 GB dają radę na desktop, chociaż oczywiście RAM jest tani i nigdy go dość, więc nie ma co poniżej 8 GB schodzić. Wiadomo, że jak ktoś chce cięższe IDE czy uruchamiać VMki to sytuacja się zmienia. Czego używałem na Windows? Windows jest do grania. 😉 I za moich czasów nie było tam sensownej konsoli. Teraz to się zmienia, bo i bash jest, i nowy powershell wygląda... co najmniej interesująco. Od dekady albo lepiej siedzę na Linuksie. Ostatnie parę lat na desktopie na Debianie unstable prywatnie. Służbowo - Debian, Ubuntu, zależy co dają/na co pozwalają.

    1. Czyli C2D odpadły, często w komplecie ze starszym, powolnym SATA. W sumie praca na nich była już mocno bolesna, nawet stare i5/i7 na dzisiejsze czasy jednak już odstają. Z tego powodu i u nas była mała kilka lat temu zmiana na nowsze modele… Sporo $$$ ale czas budowania z ponad 40 minut spadł do kilkunastu… i generalnie komfort pracy zupełnie inny… Microsoft nas rozpieścił ale… do klepania kodu i 10 letnia maszyna starczy ale jak trzeba zrobić testy na swoim komputerze, zrobić builda, przeliczyć light mapy, skompresować tekstury, zbudować paczki… no to już często i tak nikt nie dba, że sprzęt działa tylko wymienia na szybszy bo czekanie na wyniki obliczeń też kosztuje…

      Ale to taka mała dygresja, też bym chciał dłuższy support. Na starym miniaczu po prostu mogłem puścić builda i robić swoje na drugiej maszynie, teraz będzie trzeba wymienić bo brak nowego systemu = brak aktualizacji iTuns i Xcode… No i znów Apple chce $$$…

      1. Ja tam nic do C2D ani SATA nie mam. Jako maszynki do przeglądania netu, napisania tekstu czy arkusza – spokojnie wystarczające. C2D są nieco ubogie we wbudowane funkcje (wersje SSE, wsparcie AES itp.), ale jeśli ktoś tego nie potrzebuje, to nadal są to normalne, sprawne procki, porównywalne z i3, o różnych Celeronach czy Atomach nie wspominając. Jasne, jak ktoś potrzebuje wydajności to już wsparcie nie ma znaczenia, ale nie o tym przypadku mowa.

        Oraz: naprawdę Apple ładowało 6-7 lat temu C2D nawet do topowych modeli?

        1. Bardziej 8-10 lat temu, na wiki są spoko rozpiski sprzętu Applowego, tego nie ma tak dużo więc są to często kompletne zestawienia kolejnych generacji. U nas właśnie przeskok był z maszyn z okolic 2008-2009. I tak jak patrzę to dodatkowym wymaganiem pewnie jest odpowiedni układ graficznym bo odpadła też część maszyn z wczesnymi procesorami serii i5, Apple jak to Apple zawsze musi zrobić coś po swojemu i pewnie Metal™ ma swoje wymagania…

          1. No jednak 2012 (mid 2012) w górę, wspomniane w przytoczonym wyżej linku, to jest 7 lat od chwili obecnej, a wcześniejsze modele wypadły.

            Jak masz fajne rozpiski to poproszę linka. Szukałem na szybko, ale nic prostego nie znalazłem, żeby była wersja sprzętu i które wersje macOS obsługuje. Na wikia było coś kompletnego, na oko, ale daleko temu było do prostoty.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *