Č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 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í
.
- Pozn. 1 – pokud kopírujme soubor na
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.
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í