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 nastavujemeroot: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 volbuPovolit 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ímeroot: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í