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

Č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.

Spuštěním manuální aktualizace systému zajistíme následujících operace:
  • 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ů

Licence : volně k použití

Napsat komentář