Linux E X P R E S

Facebook

Řešení aktualizace systému pro běžného uživatele

update.png

Často instaluji Ubuntu pro uživatele, kteří mají počítač pouze pro předem daný a neměnný účel – obsluha e-mailů, prohlížení fotek, filmů, pouštění hudby, psaní a tisk dokumentů („Word“ a „Excel“), prohlížení internetu, Youtube … atd. Typickým představitelem je senior, který bere PC jako pracovní pomůcku a nechce experimentovat. Zkrátka, PC má pro práci a ulehčení – nic víc.


Pro tyto účely je, dle mého, Linux nejlepší možná volba. Po nainstalování a konfiguraci používaných aplikací je v podstatě při normálním používání „nerozbitný“. Problémem trošku může být aktualizace programů a operačního systému. Ty aktualizace by (pro výše uvedené typy uživatelů) nebyly až tak „žhavé“, ale v průběhu času dochází mj. k aktualizaci webového prohlížeče, což může přinést komplikace – zkrátka při prohlížení internetu mohou některé stránky přestat korektně fungovat, protože vyžadují prohlížeč od určité novější verze. Pokud budeme používat výhradně LTS verze UBUNTU, pak je životnost OS min. 5 let – a za tu dobu vyjde bezpočet nových verzí např. Firefoxu – tedy je velká šance, že popisovaný problém nastane a aktualizace systému bude nezbytná.

Za dobu, co Linux instaluji pro tyto „běžné“ uživatele jsem se nesetkal s problémy při aktualizaci. Instaluji-li Ubuntu pro „zdatnějšího“ uživatele, ukazoval jsem postup, jak systém aktualizovat. Jenže – protože používám při instalaci samostatný oddíl pro /home, resp. nevelký oddíl pro /, byl jsem po delší době volán k PC, který nešel po aktualizaci spustit. Důvod byl ve všech případech stejný a triviální – neodebíráním zastaralých souborů po aktualizaci došlo k zaplnění oddílu / Přesněji, jediným problémem byla nedokončená aktualizace z důvodu nedostatku místa na oddílu / .

Na základě výše uvedeného pokládám za dostačující a bezpečné umožnit pomocí scriptu obsloužit celý proces aktualizace v rámci jedné verze OS i „běžnému“ uživateli bez zadání správcovského hesla.

Postup:

  • vytvoříme (skopírujeme) spouštěč s názvem update.desktop, který u již existujícího uživatele umístíme např. do ~/Plocha a pro případ dalších, ještě nevytvořených uživatelů jej můžeme umístit do /etc/skel/Plocha .
    • Pozn. 1 – pokud kopírujme soubor na ~/Plocha, pak vlastníkem musí daný uživatel a soubor musí mít příznak pro spouštění. Při prvním spuštění odsouhlasíme, že se jedná o bezpečný spouštěč.
    • Pozn. 2 – Pokud umístíme spouštěč do /etc/skel/Plocha, pak práva nastavujeme root:root, rwx,r-x,r-x, při vytváření nového uživatele se práva automaticky změní během vytváření domovského adresáře nového uživatele. U verze Ubuntu 20.04 je následně ještě nutno u spouštěče umístěného na ploše pravým tlačítkem zatrhnou volbu Povolit spouštění.

Obsah souboru update.desktop (ke stažení zde)

[Desktop Entry]
Version=1.0
Type=Application
Name=Aktualizace systému
Comment=Aktualizace operačního systému
Exec=sudo man-dist-upgrade
Icon=applications-system.png
Path=
Terminal=true
StartupNotify=true
GenericName=Update system
Comment[cs]=Aktualizace systému
  • vytvoříme (skopírujeme) soubor se scriptem a názvem man-dist-upgrade a umístíme ho do /usr/local/sbin, práva nastavíme root:root , rwx,r-x,r-x.

Obsah souboru man-dist-upgrade (ke stažení zde)

#!/bin/bash
#
# Skript pro manuálně spouštěnou aktualizaci vč. odebrání zastaralých souborů
# Název skriptu : man-dist-upgrade
# Doporučen umístění a práva : /usr/local/sbin root:root rwx,r-x,r-x
#
# D. Dvořák
#
 
TEXT_RESET='\e[0m'
TEXT_YELLOW='\e[0;33m'
TEXT_RED_B='\e[1;31m'
TEXT_GREEN_L='\e[92m'
 
check_exit_status() {
 
    if [ $? -eq 0 ]
    then
        echo -e $TEXT_YELLOW
        echo "* OK - zdá se, že je vše v pořádku"
        echo -e $TEXT_RESET
 
    else
        echo -e $TEXT_RED_B
        echo "* ERROR - chyba!"
        echo -e $TEXT_RESET
 
        read -p "* Mám ukončit script? (ano/ne) " answer
 
            if [ "$answer" == "ano" ]
            then
                exit 1
            fi
    fi
}
 
check_continue() {
 
    read -p "* Pokračovat? (ano/ne) " answer
    echo
 
         if [ "$answer" != "ano" ]
            then
                exit 1
            fi
 
}
greeting() {
 
    echo -e $TEXT_YELLOW
    echo "Aktualizace systému se skládá z následujících kroků :"
    echo "- kontrola stavu => zjištění existence aktualizovaných balíčků"
    echo "- aktualizace balíčků => nahrazení zastaralých balíčků"
    echo "- uvolnění místa na disku => odstranění již nepotřebných balíčků"
 
}
 
update() {
    echo -e $TEXT_GREEN_L
    echo "* Zjistit existenci aktualizovaných balíčků?"
    echo -e $TEXT_RESET
    check_continue
 
        sudo apt-get update;
    check_exit_status
 
    echo -e $TEXT_GREEN_L"* Provést samotnou aktualizaci balíčků?"
    echo -e $TEXT_RESET
    check_continue
 
        sudo apt-get dist-upgrade -y;
    check_exit_status
}
 
housekeeping() {
 
    echo -e $TEXT_GREEN_L"* Uvolnit místo na disku?"
    echo -e $TEXT_RESET
 
    check_continue
 
    echo -e $TEXT_YELLOW"* Odstraňuji nepotřebné balíčky."
    echo -e $TEXT_RESET
 
    sudo apt autoremove --purge -y;
    check_exit_status
 
    echo -e $TEXT_YELLOW"* Mažu stažené balíčky."
    echo -e $TEXT_RESET
 
    sudo apt-get autoclean -y;
    check_exit_status
 
    echo -e $TEXT_YELLOW"* Aktualizuji databázi souborů"
    echo -e $TEXT_RESET
    echo "... chvíli strpení ..."
    sudo updatedb;
    check_exit_status
}
 
leave() {
 
    echo -e $TEXT_GREEN_L"--------------------------"
    echo "- Aktualizace kompletní! -"
    echo "--------------------------"
 
    if [ -f /var/run/reboot-required ]; then
        echo -e $TEXT_RED_B
        echo 'Po aktualizci je pro dokončení vyžadován rester systému!'
        echo -e $TEXT_RESET
    fi
    echo
    read -n 1 -r -s -p $'* Stiskem jakékoliv klávesy zavřete terminál...\n'
 
    exit
}
 
greeting
update
housekeeping
leave

Pozn. – u Ubuntu 20.04 nebude po instalci OS funkční příkaz updatedb. Řešním je nainstalovat mloctate nebo blok pro „Aktualizaci databáze souborů“ zakomentovat, resp. smazat.

  • Pomocí příkazu visudo upravíme sudoers soubor – na konec přidáme následující řádek:
ALL ALL=(ALL) NOPASSWD:/usr/local/sbin/man-dist-upgrade

Toť vše. Kterýkoliv přihlášený uživatel tak má možnost provést rutinní aktualizaci systému bez zadání správcovského hesla. Poklepáním na ikonu „Aktualizace systému“ umístěné na ploše, spustí níže uvedené kroky, které musí navíc explicitně odsouhlasit.

  • kontrola stavu => zjištění existence aktualizovaných balíčků
  • aktualizace balíčků => nahrazení zastaralých balíčků
  • uvolnění místa na disku => odstranění již nepotřebných balíčků

Autor: David Dvořák
Licence: volně k použití

Diskuze (9) Nahoru