Byla vydána nová verze 4.8.0 programu na úpravu digitálních fotografií darktable (Wikipedie).
Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 142 (pdf) a HackSpace 79 (pdf).
Qtractor (Wikipedie) dospěl do verze 1.0.0. Jedná se o Audio/MIDI vícestopý sekvencer.
Byl vydán svobodný kancelářský balík OnlyOffice Docs 8.1. Vedle četných oprav přináší několik funkcí včetně podpory editace textu v PDF a vytváření formulářů v PDF.
Daniel Stenberg, autor nástroje curl, z databáze SteamDB zjistil, že aktuálně 22 734 her na Steamu používá curl.
Společnost Anthropic vydala Claude 3.5 Sonnet, tj. novou verzi své umělé inteligence Claude (Wikipedie). Videoukázky na YouTube. S Claude 3, stejně jak s GPT-3.5, Llama 3 a Mixtral, si lze pokecat bez přihlašování na DuckDuckGo AI Chat.
Byla vydána nová stabilní verze 6.8 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 126. Přehled novinek i s náhledy v příspěvku na blogu a na YouTube. Vypíchnuta jsou vylepšení v integrovaném poštovním klientu.
Příspěvek Aukce domén – měsíc po spuštění na blogu CZ.NIC shrnuje první měsíc provozu Aukce domén .CZ. Aukcemi prošlo celkem 18 174 domén, z toho na 742 z nich byl učiněn alespoň 1 příhoz. Nejdražší aukcí byla na doménu virtualnisidlo.cz s cenou 95 001 Kč, která však nebyla včas uhrazena. Nejdražší aukcí, která byla vydražena i zaplacena je praguecityline.cz s cenovkou 55 600 Kč.
Před 40 lety, 19. června 1984, Bob Scheifler představil první verzi okenního systému X (X Window System). Vycházela z okenního systému W (W Window System).
Desktopové prostředí MATE bylo vydáno ve verzi 1.28. V gitových repozitářích je sice už od února, ale oznámení vydání se na webu objevilo s několikaměsíčním zpožděním (únorové datum zveřejnění je nepravdivé). Jde o první velké vydání od roku 2021. Uživatelsky nejvýznamnější pokrok je v podpoře Waylandu.
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...