Firma Murena představila /e/OS verze 2.0. Jde o alternativní sestavení Androidu bez aplikací Google. Mezi novinkami je podrobnější nastavení ochrany soukromí před sledováním aplikacemi. Murena prodává několik smartphonů s předinstalovaným /e/OS (Fairphone, repasovaný Google Pixel 5).
Do 30. května lze v rámci akce Warhammer Skulls 2024 získat na Steamu zdarma hru Warhammer 40,000: Gladius - Relics of War.
HelenOS (Wikipedie), tj. svobodný operační systém českého původu založený na architektuře mikrojádra, byl vydán ve verzi 0.14.1. Přehled novinek v poznámkách k vydání. Vypíchnou lze nabídku Start. Videopředstavení na YouTube.
BreadboardOS je firmware pro Raspberry Pi Pico (RP2040) umožňující s tímto MCU komunikovat pomocí řádkového rozhraní (CLI). Využívá FreeRTOS a Microshell.
Vývojáři KDE oznámili vydání balíku aplikací KDE Gear 24.05. Přehled novinek i s náhledy a videi v oficiálním oznámení. Do balíku se dostalo 5 nových aplikací: Audex, Accessibility Inspector, Francis, Kalm a Skladnik.
Byla vydána (𝕏) nová verze 18.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.
V neděli 26. května lze navštívit Maker Faire Rychnov nad Kněžnou, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.
Byla vydána nová stabilní verze 3.20.0, tj. první z nové řady 3.20, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Z novinek lze vypíchnou počáteční podporu 64bitové architektury RISC-V.
Společnost Jolla na akci s názvem Jolla Love Day 2 - The Jolla comeback představila telefon se Sailfish OS 5.0 Jolla Community Phone (ve spolupráci se společností Reeder) a počítač Jolla Mind2 Community Edition AI Computer.
Podíváme se blíže na skript uninstall.sh, který šíří Princeton Instruments ve svém Picam_SDK-v2.6.0.run.
#!/bin/sh # Default variables START_DIR=`dirname $0` START_DIR=`cd $START_DIR; pwd` echo "Start_DIR is" $START_DIR USR_LIB=/usr/lib64 USR_LOC_LIB=/usr/local/lib64 INSTALL_ROOT=$START_DIR PI_ROOT=`cd ..; pwd` PLEORA_ROOT=`cd $START_DIR/../../pleora; pwd` REMOVE_LINKS=yes INSTALL_DIR_OVERWRITE=yes # Initial screen clear echo -n "Remove Picam SDK installed in directory '$INSTALL_ROOT' (yes/no) ? " read ANSWER if [ ! "$ANSWER" = "yes" ]; then echo "Uninstall cancelled." exit; fi if [ ! -w $INSTALL_ROOT ]; then echo "You do not have write permissions to '$INSTALL_ROOT'." echo "Run installer as super user (root)." exit 1 fi echo "Removing software on $INSTALL_ROOT" if [ -d $PI_ROOT ]; then rm -rf $PI_ROOT fi #pleora removal if [ -d $PLEORA_ROOT ]; then rm -rf $PLEORA_ROOT fi if [ "$REMOVE_LINKS" = "yes" ]; then rm -rf $USR_LOC_LIB/libPv* rm -rf $USR_LOC_LIB/libEb* rm -rf $USR_LOC_LIB/libPt* rm -rf $USR_LOC_LIB/libEbuser* rm -rf $USR_LOC_LIB/liblog* rm -rf $USR_LOC_LIB/libapr* rm -rf $USR_LOC_LIB/libG* rm -rf $USR_LOC_LIB/liblog* rm -rf $USR_LOC_LIB/libM* # Picam references rm -rf /var/run/pits rm -rf $USR_LOC_LIB/libpi* rm -rf $USR_LOC_LIB/*.dat rm -rf /etc/ld.so.conf.d/picam.conf fi echo "Removal complete." echo "" echo ""
Skript se zachová třemi různými způsoby, dle toho odkud je zavolán. Před příkazy rm -rf
dáme echo
, abychom zjistili co se stane, ale bez následků.
Smaže co má:
# /opt/PrincetonInstruments/picam/ # ./uninstall.sh Remove Picam SDK installed in directory '/opt/PrincetonInstruments/picam' (yes/no) ? yes Removing software on /opt/PrincetonInstruments/picam rm -rf /opt/PrincetonInstruments rm -rf /opt/pleora
Zachrání nás inteligentní chování příkazu rm, jinak by nám smazal celý /:
rm: it is dangerous to operate recursively on `/' rm: use --no-preserve-root to override this failsafe
# cd /root # /opt/PrincetonInstruments/picam/uninstall.sh Remove Picam SDK installed in directory '/opt/PrincetonInstruments/picam' (yes/no) ? yes Removing software on /opt/PrincetonInstruments/picam rm -rf / rm -rf /opt/pleora
Smaže nám celý /home:
# cd /home/user # /opt/PrincetonInstruments/picam/uninstall.sh Remove Picam SDK installed in directory '/opt/PrincetonInstruments/picam' (yes/no) ? yes Removing software on /opt/PrincetonInstruments/picam rm -rf /home rm -rf /opt/pleora
Chyba je na následujících řádcích:
START_DIR=`cd $START_DIR; pwd` PI_ROOT=`cd ..; pwd`
Autor si neuvědomil, že spouští příkaz cd
v subshellu, takže pracovní adresář v nadřízeném shellu zůstane stejný.
Pokud by se skript alespoň před spuštěním rm -rf
zeptal, zda-li má smazat adresář XY, byla by větší šance, že si toho uživatel všimne.
V případě, že by se skript správně otestoval, tak by tato chyba neprobublala až k zákazníkovi.
Takže ponaučení na závěr. Nevěřte nikomu. Není od věci mrknou co je obsahem skriptu uninstall.sh, obzvláště pokud není příliš dlouhý. A do třetice. Zálohovat, zálohovat, zálohovat.
UPDATE: David ještě správně poukázal na řádek:
START_DIR=`dirname $0`
Skript by v případě zavolání, pomocí symbolického linku z jiného adresáře, také selhal.
Šlo by to vylepšit voláním:
START_DIR=$(readlink -f ${BASH_SOURCE[0]})
Tiskni Sdílej:
Pokud jsem něco neopomněl, tak by to mělo jít např. takto:
readlink -f ${BASH_SOURCE[0]}
readlink
by tě mohlo zajímat:
includepath="$( cd -P "$( dirname "$0" )" && pwd )"
Autor si neuvědomil, že spouští příkaz cd v subshellu, takže pracovní adresář v nadřízeném shellu zůstane stejný.Tak v tom problém teda opravdu není.
Autorovi nikdo z nás do hlavy samozřejmě nevidí, ale nevidíme tam ani Tobě, takže klidně svou myšlenku rozveď.
START_DIR=`dirname $0`Tohle prostě v $0 dostane cestu toho, jak byl program zavolanej...