Automatyczne aktualizacje Debiana – HOWTO

Utrzymywanie aktualnych wersji oprogramowania to podstawa bezpieczeństwa. Nawet w przypadku zwykłego desktopa ma to znaczenie, szczególnie jeśli chodzi o przeglądarki internetowe. Pomóc w tym mogą automatyczne aktualizacje pakietów.

Tradycyjna, ręczna aktualizacja oprogramowania w Linuksie sprowadza się w większości dystrybucji do odświeżenia listy dostępnych pakietów i zainstalowania nowych wersji. Dla dystrybucji opartych o pakiety deb będzie to
apt-get update; apt-get dist-upgrade[1]

W dystrybucjach Linuksa takich jak Debian czy Ubuntu do dyspozycji mamy unattended upgrades, czyli mechanizm pozwalający na automatyczne aktualizacje pakietów. Pozwala on aktualizować wskazane pakiety bez ingerencji zarówno użytkownika, jak i administratora systemu. Poza samą aktualizacją umożliwia skonfigurowanie dodatkowych warunków, jak praca tylko przy podłączonym zasilaczu, wymuszenie rebootu systemu po aktualizacji pakietów, ograniczenie pasma przeznaczonego na pobieranie aktualizacji czy sprzątanie starych wersji kernela.

Aby włączyć mechanizm automatycznych aktualizacji, trzeba zainstalować pakiet unattended-upgrades. Dodatkowo należy wyedytować plik konfiguracyjny:
cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Samą konfiguracją działania automatycznych aktulizacji sterujemy przy pomocy zawartości pliku
/etc/apt/apt.conf.d/50unattended-upgrades.

Opcji jest wiele, od tego, które pakiety wykluczyć z aktualizacji, przez raportowanie mailem, czy wspomniane wcześniej limitowanie szybkości pobierania aktualizacji czy reboot systemu. Domyślna zawartość powinna być OK, jeśli korzystamy wyłącznie z podstawowych repozytoriów. W przypadku posiadania dodatkowych źródeł pakietów, warto sprawdzić czy będą one także aktualizowane i w razie potrzeby dostosować plik.

Przetestować działanie wprowadzonych zmian i ogólnie zachowanie możemy poprzez wydanie polecenia
unattended-upgrades -d

Pokaże ono, które pakiety zostałyby zaktualizowane w naszym systemie.

Trzeba pamiętać, że tego typu nienadzorowana aktualizacja zawsze niesie jakieś ryzyko niepowodzenia. Osobiście korzystam od lat na paru desktopach i nie napotkałem problemów. Jest tam jednak Debian w wersji stabilnej, przeważają repozytoria standardowe, a z dodatkowego oprogramowania są jedynie przeglądarki.

Na koniec polecam lekturę tego opisu automatycznych aktualizacji. Znajdziecie tam wiele dodatkowych szczegółowych informacji i przykładów.

[1] Dostępna jest też mniej inwazyjna wersja polecenia czyli apt-get update. Próbuje ona aktualizować tylko te pakiety, których aktualizacja nie wiąże się z usuwaniem ani doinstalowaniem innych pakietów. Ceną jest pozostawienie w dotychczasowej wersji pakietów, których nie da się zainstalować bez tej operacji. Więcej w manualu apt. Interesującym narzędziem do zarządzania pakietami jest opisywany kiedyś wajig.

Mapowanie klawiszy w macOS bez Karabiner Elements – HOWTO

Karabiner Elements to popularne narzędzie do mapowania klawiszy na macOS. Narzędzie jest wygodne, ale ma parę problemów. Trzeba instalować oddzielny program, były ostrzeżenia o legacy system extension, które opisywałem przy okazji opisu upgrade. Nie testowałem, ale podobno nie działa po upgrade do Big Sur.

Większość znanych mi ludzi wykorzystuje Karabiner Elements do prostego celu: zamiany prawego option z prawym command. Wszystko po to, żeby wygodnie, czyli tak samo jak na PC, wpisywać polskie znaki diakrytyczne. Robiłem tak i ja, a program był w ogóle zupełnym must have na macOS.

Mapowanie klawiszy w macOS bez Karabiner Elements - obrazek
Źródło: wygenerowane za pomocą https://thumbnail.ai/

Ponieważ znalazłem dziś kolejną osobę, która nie wiedziała, że się da, a wykorzystywała właśnie w tak prosty sposób, podzielę się sposobem, który sprzedał mi znajomy z pracy (dzięki J!). Rozwiązanie nie wymaga dodatkowych programów, wystarczy wbudowane oprogramowanie systemowe.

hidutil property --set '{"UserKeyMapping":
[{"HIDKeyboardModifierMappingSrc":0x7000000e7,
  "HIDKeyboardModifierMappingDst":0x7000000e6}]}'

Powyższe polecenie spowoduje, że klawisze zostaną przemapowane tymczasowo, do restartu systemu. Aby osiągnąć ten efekt na stałe, tworzymy plik ~/Library/LaunchAgents/mapkeys.plist o zawartości:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.nanoant.KeyRemapping</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/hidutil</string>
        <string>property</string>
        <string>--set</string>
        <string>{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x7000000e7,"HIDKeyboardModifierMappingDst":0x7000000e6}]}</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Oczywiście rozwiązanie można stosować także do bardziej skomplikowanego mapowania klawiatury. Jednak jak wspominałem na początku, większości użytkowników powinien wystarczyć ww. gotowiec. Po takim zabiegu, skoro mamy działającą aleternatywę, można odinstalować Karabiner Elements zupełnie.

UPDATE: Przydatne linki
Generator mapowania
Gotowa do użycia wersja online

Aktualizacje macOS

Pierwszą aktualizacją macOS, którą robiłem, była ta między „dużymi” wersjami, do wersji Catalina. Wtedy byłem umiarkowanie zadowolony, bo to duża aktualizacja. I pierwsza. I się udała. Od tego czasu miałem parę razy okazję aktualizować system między „małymi” wersjami i… wyrobiłem sobie zdanie.

Źródło: http://www.highstreetcomputers.com/apple-logo-broken/

Aktualizacje systemu w macOS to porażka, generalnie. „Duże” może nie są najgorsze, ale „małe” są tragiczne. Spójrzmy na listę aktualizacji Cataliny na Wikipedii, linkującą do opisu aktualizacji na stronach Apple. Od końca października 2019 do lipca 2020 było sześć aktualizacji. Każda to przynajmniej 3 GB do pobrania i blisko godzina stracona na aktualizację.

No właśnie, jeśli ktoś zastanawia się, o co mi w ogóle chodzi i czy da się system aktualizować lepiej, to szybko nakreślę jak wygląda proces aktualizacji w Linuksie. Otóż sprowadza się do pobrania pakietów i wykonania restartu. Cały czas można pracować na komputerze. Restart i okoliczne czynności nie trwają pół godziny, to zwykły reboot, jak każdy inny, czyli pewnie minuta. Aktualizowany jest zarówno kernel, kluczowe pakiety, jak i pakiety opcjonalne. Nie trzeba pobierać 3 GB, ale to już detal. Chodzi głównie o brak przerwy w możliwości korzystania z komputera.

No właśnie, gdy pisałem o aktualizacji do Cataliny i porównywałem jej czas z aktualizacją Debiana, popełniłem błąd. Porównywałem jabłka z gruszkami – w przypadku macOS brałem pod uwagę czas aktualizacji samego systemu, czyli podstawki, a w przypadku Linuksa systemu i wszystkich dodatkowych aplikacji będących w repozytoriach, a trochę tego jest (LibreOffice, Firefox, Chromium). Nie jest to aż tak ważne, bo to, czy pobieranie trwa pół godziny, czy godzinę nie ma większego znaczenia, jeśli można korzystać z systemu. Kluczowy jest czas niedostępności komputera.

Tyle o aktualizacjach systemu w makach, dopóki coś się diametralnie nie zmieni albo nie wybuchnie przy upgrade, nie będę wracał do tego smutnego tematu.