Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Michal Švarc

Stran: [1] 2 3 ... 6
1
Server / Dvě instalace php-imagick ze zdroje
« kdy: 14. 06. 2024, 16:53:54 »
Nedávno jsem upgradoval PHP na části serveru.
Mám dvě verze php které jedou zároveň php8.1, php8.3 a asi i díky tomu také dvě verze phpize: phpize8.1, phpize8.3
Pro instalaci imagicku jsem použil lehce upravený postup z Githubu:
Kód: [Vybrat]
cd /usr/share
git clone https://github.com/Imagick/imagick
mv imagick php-imagick8.1
git clone https://github.com/Imagick/imagick
mv imagick php-imagick8.3
cd php-imagick8.1
phpize8.1 && ./configure
make
make install
cd ../php-imagick8.3
phpize8.3 && ./configure
make
make install

Postup se zdá být ok, do chvíle kdy make install vypíše
Kód: [Vybrat]
Installing shared extensions:     /usr/lib/php/20230831/
Installing header files:          /usr/include/php/20230831/

Vypsal jsem si co to přesně dělá
Kód: [Vybrat]
make install --dry-run
/bin/bash /usr/share/php-imagick8.3/libtool --tag=CC --mode=install cp ./imagick.la /usr/share/php-imagick8.3/modules
test -d modules && \
/usr/share/php-imagick8.3/build/shtool mkdir -p /usr/lib/php/20230831
echo "Installing shared extensions:     /usr/lib/php/20230831/"
rm -f modules/*.la >/dev/null 2>&1
/usr/share/php-imagick8.3/build/shtool install -c modules/* /usr/lib/php/20230831
if test "ext/imagick/php_imagick_shared.h"; then \
for i in `echo ext/imagick/php_imagick_shared.h`; do \
i=`/usr/share/php-imagick8.3/build/shtool path -d $i`; \
paths="$paths /usr/include/php/20230831/$i"; \
done; \
/usr/share/php-imagick8.3/build/shtool mkdir -p $paths && \
echo "Installing header files:          /usr/include/php/20230831/" && \
for i in `echo ext/imagick/php_imagick_shared.h`; do \
if test "imagick"; then \
src=`echo $i | /usr/bin/sed -e "s#ext/imagick/##g"`; \
else \
src=$i; \
fi; \
if test -f "/usr/share/php-imagick8.3/$src"; then \
/usr/share/php-imagick8.3/build/shtool install -c -m 644 /usr/share/php-imagick8.3/$src /usr/include/php/20230831/$i; \
elif test -f "/usr/share/php-imagick8.3/$src"; then \
/usr/share/php-imagick8.3/build/shtool install -c -m 644 /usr/share/php-imagick8.3/$src /usr/include/php/20230831/$i; \
else \
(cd /usr/share/php-imagick8.3/$src && /usr/share/php-imagick8.3/build/shtool install -c -m 644 *.h /usr/include/php/20230831/$i; \
cd /usr/share/php-imagick8.3/$src && /usr/share/php-imagick8.3/build/shtool install -c -m 644 *.h /usr/include/php/20230831/$i) 2>/dev/null || true; \
fi \
done; \
fi

V této situaci by mne zajímalo pár věcí:
1) Nejsem si tak úplně jistý, jestli mohu použít více příkazů `make instal za sebou` - to co mi dělá `make instal` jsem si uvědomil až po spuštění na tom druhém adresáři a tahle otázka směřuje k tomu, zda je lepší oba adresáře smazat a zkusit to celé s drobnými úpravami znovu, nebo mohu na tom co už mám znovu spustit `make install` a udělá to to samé
2) Koukal jsem co je v adresáři `/usr/lib/php`, kam se 'instaluje' imagick, a jsou tam mimo jiné adresáře 8.1, 8.3.
Myslíte, že by bylo v pořádku tu nainstalovanou cestu vylepšit tímto adresářem?
Kód: [Vybrat]
cd /usr/lib/php/
mv 20230831 8.1/20230831
to samé by pak třeba šlo udělat i v adresáři
`/usr/include/php/`, kde takové adresáře zatím nejsou

2
Server / Re:Jak přeinstalovat ImageMagick Easy Install?
« kdy: 30. 04. 2024, 07:14:06 »
Povedlo se, ale stejnak bych byl radši, kdyby existovala nějaká lepší metoda na odinstalaci věcí, co se instalují pomocí sady příkazů jako je
Kód: [Vybrat]
configure
make
make install

3
Server / Re:Zprovoznění podpory image/avif v PHP 8.1
« kdy: 30. 04. 2024, 07:08:54 »
Pochybuji, že to někomu pomůže, ale uzavřel bych to tím, že můj problém spočíval v první fázi v použití balíků pro ubuntu, kde je tak či tak zastaralá verze ImageMagicku6 a v druhé, při řešení problému, v používání tak staré verze IMEI (otázka na od/re/instalaci: https://forum.root.cz/index.php?sid-forum=5lq6jkksk09odhrse0pj5nkl16&topic=28974.0), že bylo skoro s podivem, že se to nerozbilo dříve. Po jejím odebrání a instalaci krz nejnovější verzi instalátoru, mi převody do avifu již fungují.

Mým největším problémem byl neexistující update částí, co nejsou součástí balíčkovacího systému apt (tedy instalace jako: configure, make, make install).

4
Server / Re:Zprovoznění podpory image/avif v PHP 8.1
« kdy: 26. 04. 2024, 09:25:09 »
A co přesně je myšleno tímhle?
Kód: [Vybrat]
To jsem si (evidentně chybně), pokusil odpovědět na jednu z vlastních otázek.
Samozřejmě nejsem na stejným systemu jako ty...
po kompilaci
Kód: [Vybrat]
php -i | grep ImageMagick
...
i ten tvů exec chyby nehází,..

máš nainstalovaný libheif? Mají tam nějaky devel prostředí v dockeru koukni na `docker/developing/Dockerfile` a zřejmě místo libavif používají libheif jako dekoder. Já mám oboje v systemu,..

Kód: [Vybrat]
libavif 1.0.4-2 [installed] Library for encoding and decoding .avif files
libheif 1.17.6-5 [installed] An HEIF and AVIF file format decoder and encoder
Kód: [Vybrat]
libavif mám akorát tuhle https://github.com/AOMediaCodec/libavif (1.0.4), buď nemám nějaký potřebný repositář, nebo Ubuntu 20.04 aktuálně liavif z balíčkovacího systému nenabízí
Kód: [Vybrat]
libheif1/focal,now 1.6.1-1build1 amd64 [installed,automatic]
Kód: [Vybrat]
php -i | grep ImageMagicku mě nezobrazí vůbec nic

5
Server / Re:Zprovoznění podpory image/avif v PHP 8.1
« kdy: 24. 04. 2024, 10:40:57 »
Takže mám za to, že bez imagicku pro php to nejde, ale není třeba ho instalovat z balíčkovacího systému.
Vrátil jsem to vše do původního stavu, odinstaloval php8.1-imagick se všemi přidruženými balíčky pomocí příkazu uvedeného u IMEI
Kód: [Vybrat]
apt remove "*imagemagick*" --purge -y && apt autoremove --purge -yPak jsem nainstaloval imagick pomocí
Kód: [Vybrat]
git clone https://github.com/Imagick/imagick
cd imagick
phpize && ./configure
make
make test
make install
pak jsem v adresáři
Kód: [Vybrat]
/etc/php/8.1/mods-available  vytvořil soubor imagick.ini
a vložil do něj cestu k imagick.so, který se mi vytvořil
Kód: [Vybrat]
extension=/usr/lib/php/20210902/imagick.sov adresáři
Kód: [Vybrat]
/etc/php/8.1/fpm/conf.dvytvořil link na ten soubor
Kód: [Vybrat]
ln -s /etc/php/8.1/mods-available/imagick.ini 20-imagick.ininačež jsem restartoval apače a pro jistotu i php
Kód: [Vybrat]
systemctl reload apache2
systemctl reload php8.1-fpm
a phpinfo se tváří že avif podporuje, což předtím nedělalo, nicméně imagemagick7.1.1-31, ze kterého tu informaci bere stále avif nerad.

Přestože v `magick identify -list format` se ten formát vyskytuje
Kód: [Vybrat]
echo shell_exec("mogrify -quality 60 -resize 200x200 -format avif /var/www/webovyserver.xz/web/data/**/*.jpeg 2>&1");
echo shell_exec('mogrify -quality 50 -resize 30x30 -path /var/www/webovyserver.xz/web/data/min/0 /var/www/webovyserver.xz/web/data/0/*O.avif 2>&1');
se tváří takhle:
Kód: [Vybrat]
mogrify: unable to open image 'avif:': No such file or directory @ error/blob.c/OpenBlob/3571.
mogrify: unrecognized image format `avif' @ error/mogrify.c/MogrifyImageCommand/4952.
mogrify: no decode delegate for this image format `AVIF' @ error/constitute.c/ReadImage/746.
Vzhledem k tomu že imagick pro php byl generován na základě tohohle imagemagicku, nepředpokládám že by šel.

6
Server / Re:Zprovoznění podpory image/avif v PHP 8.1
« kdy: 24. 04. 2024, 08:37:33 »
Citace
magick identify -list format
vypíše avif?
Ano, vypíše.
Kód: [Vybrat]
AVIF  HEIC      rw+   AV1 Image File Format (1.17.6)

7
Server / Jak přeinstalovat ImageMagick Easy Install?
« kdy: 23. 04. 2024, 10:32:23 »
Kód: [Vybrat]
https://github.com/SoftCreatR/imeiStačí smazat adresář se starou verzí, případně script z cronu a nainstalovat novou?

8
Server / Zprovoznění podpory image/avif v PHP 8.1
« kdy: 23. 04. 2024, 06:02:28 »
Linux: Ubuntu 20.04

Nedávno, před pár týdny, jsem měl podobný problém, imagemagick prostě přestal převádět obrázky na avif. Tehdy jsem zjistil, že se nějak ztratila knihovna libavif, a nakonec jsem zkusil nainstalovat avif podporu pomocí https://github.com/AOMediaCodec/libavif , respektive https://github.com/AOMediaCodec/libavif#build-everything-from-scratch verzi, protože v balíčkovacím systému nic jako libavif již není a přestože jsem nepřišel na to proč, pár týdnů to fungovalo. Teď už zas ne, takže hledám, co by se dalo dělat.

Pro začátek, je potřeba mít na to knihovnu php8.1-imagick, nebo to jde i bez ní?

php8.1-imagick má u nás na serveru závislost na imagemagick-6-common libmagickcore-6.q16-6 libmagickwand-6.q16-6
a s tím ni aktuálně avif nefunguje

při php8.1-imagick nainstalovaném, jsem našel soubor /etc/php/8.1/fpm/conf.d/20-imagick.ini kde se dá změnit cesta, pomocí
Kód: [Vybrat]
extension=/usr/local/lib/ImageMagick-7.1.1/modules-Q16HDRI/coders/magick.so a adresář
/var/lib/php/modules/8.1/fpm/enabled_by_maint/ s prázdným souborem imagick

po odinstalaci zmíněných imagemagick-6* a tím i php8.1-imagick, které se jich drží jako klíště, byl soubor /etc/php/8.1/fpm/conf.d/20-imagick.ini smazán a prázdný soubor imagick se přesunul do /var/lib/php/modules/8.1/fpm/disabled_by_maint/

tak jsem si ten soubor vytvořil znovu a pro jistotu přesunul zpět i ten prázdný soubor

nevím, ale doufám, že by mi to mohlo v php8.1fpm pomoci používat tu verzi z imei, v phpinfo jsem nicméně nezaregistroval žádnou změnu

9
Používám převážně webový prohlížeč Librewolf, a když něco nejde (jako třeba přidávání příspěvků sem do fóra) zkusím nejdříve Firefox.

Librewolf 123.0-1 mi z nějakého důvodu zobrazuje doménové jméno v adresním řádku https://はじめよう.みんな/ jako https://xn--p8j9a0d9c9a.xn--q9jyb4c/
Firefox 123.0-1 a Opera One 107.0.5045.21 to zobrazují správně.

Zajímalo by mě jakým způsobem vlastně tohle zobrazování funguje a jelikož to librewolf evidentně blokuje, skrývá se v tom nějaké bezpečnostní riziko?

Zkoušel jsem to zobrazit i ve starších webových prohlížečích, a zdá se mi že ty toto zobrazování nepodporují (ale zase, zkoušel jsem jen eolie a midori)

10
Software / Re:Je šance na zápis ze tří vstupů zároveň?
« kdy: 07. 11. 2023, 04:31:50 »
děkuji za tipy

k vysvětlení keydef jsem našel https://unix.stackexchange.com/questions/546081/keydef-of-sort-man-page

zatím jsem skončil u
Kód: [Vybrat]
apt search php8.[1-3] | sort -k1.7 | tr -s "\n"což je pro mé účely (porovnání verzí instalovaných a neinstalovaných knihoven php), dostačující

11
Software / Je šance na zápis ze tří vstupů zároveň?
« kdy: 07. 11. 2023, 02:28:29 »
Je jedno zda do souboru, nebo na výstup.

Rád bych výpisy těchto tří příkazů
Kód: [Vybrat]
apt search php8.3
apt search php8.2
apt search php8.1

setřídil tak, že se nevypíše první příkaz, druhý příkaz a třetí příkaz za sebou, ale vypíše se první řádek prvního, první řádek druhého, první řádek třetího, druhý řádek prvního, atd.

asi by šlo ty výstupy načíst ve scriptu do polí o číslech řádků a pak to vypsat cyklem, ale zajímalo by mě, jestli neexistuje lepší/snažší přístup

navíc, úplně nejlepší by bylo, seřadit to podle toho, co je za těmi šesti znaky ve výpisu (php8.x)

12
Vývoj / Re:Dokáže Bash spustit příkaz z proměnné?
« kdy: 21. 10. 2023, 17:54:44 »
Daj:
Kód: [Vybrat]
ps2=`echo $prikaz1|sh`
Děkuji.

Funguje to (ať už se závorkou nebo se zpětným apostrofem).

13
Vývoj / Re:Dokáže Bash spustit příkaz z proměnné?
« kdy: 12. 09. 2023, 15:14:26 »
Tady trochu vysvětlujou, proč to nefunguje: https://unix.stackexchange.com/a/506859
Tady je něco, co se tváří jako řešení, ale nezkoušel jsem: https://stackoverflow.com/questions/43752854/bash-pipe-character-in-variable-for-command-substitution

Každopádně pro googlení jsou důležitý výrazy "bash", "command substitution" a "pipe"
Díky za tipy.
Skrytí do funkce jsem zatím nezkoušel. protože důvod proč jsem to původně dával do proměnné, spočívá v tom, proměnnou složit na základě vstupů a posléze spustit

Pořád jsem v tom moc nepokročil, ale díky nastavení set -x na které se mi povedlo úplně zapomenout už vím, proč to vlastně vyhazuje chybu
Kód: [Vybrat]
prikaz1cast1="ps -Al U michal"
prikaz1cast2="grep vidsave"
prikaz1="$prikaz1cast1 | $prikaz1cast2"
echo ${prikaz1}
ps=$($prikaz1)                       # nefunkční
#ps=`$prikaz1`                       # kdo by to řekl?, chová se stejně jako předchozí
echo je v pohodě a vytiskne ps -Al U michal | grep vidsave
při pokusu o spuštění se to nicméně přeloží pro bash jako
ps -Al U michal '|' grep vidsave
což celkem pochopitelně skončí chybou
zkusil jsem jen tak, co to udělá přidat středníky...
Kód: [Vybrat]
prikaz1="$prikaz1cast1; | $prikaz1cast2;"výsledkem pokusu o spuštění byl příkaz, dá li se tomu tak říci ps -Al U 'michal;' '|' grep 'vidsave;'

14
Vývoj / Re:Dokáže Bash spustit příkaz z proměnné?
« kdy: 12. 09. 2023, 05:50:10 »
Zkusil jsem si to přepsat ještě jednou:
Kód: [Vybrat]
prikaz1cast1="ps -Al U michal"
        prikaz1cast2="grep vidsave"
        prikaz1="$prikaz1cast1 | $prikaz1cast2"

        prikaz2cast1="ps -Al U michal"
        prikaz2cast2="grep yt-dlp"
        prikaz2="$prikaz2cast1 | $prikaz2cast2"
       
        echo -en " ${barvaTextBila}${prikaz1}${barvaTextZrusit}\n"
        #ps=$(ps -Al U michal | grep vidsave) # funkční
        ps=$($prikaz1cast1 | $prikaz1cast2)   # funkční
        #ps=$($prikaz1)                       # nefunkční
       
        ps+="\n\n"
        echo -en " ${barvaTextBila}${prikaz2}${barvaTextZrusit}\n"
        #ps+=$(ps -Al U michal | grep yt-dlp) # funkční
        ps=$($prikaz2cast1 | $prikaz2cast2)   # funkční
        #ps+=$($prikaz2)                      # nefunkční
        echo -en " ${barvaTextZluta}${ps}${barvaTextZrusit}"
Dle mého názoru vadí svislítko uložené do proměnné, jen by mě zajímalo proč vlastně a velmi pochybuji o tom, že by mi při hledání důvodu pomohlo něco jako ps --help

15
Vývoj / Re:Dokáže Bash spustit příkaz z proměnné?
« kdy: 11. 09. 2023, 11:40:27 »
vysledek=$($prikaz)

Třeba.  Možná by to chtělo si pročíst nějaký úvod do shell/bashe.
To nemohu popřít, ale zkoušel jsem to dříve, než jsem sem podal dotaz, a nefungovalo to tak. Pro mě překvapivě to po tvé odpovědi částečně jde. Aha já pitomec - v nějaké chvíli jsem začal kopírovat chybnou část kódu a pak se do toho tak zamotal, že jsem měl dojem že to nefunguje vůbec a nakonec se zeptal tady.
Přitom mi to ve skutečnosti nefunguje jen u příkazu, kde mám rouru
Kód: [Vybrat]
        prikaz1="ps -Al U michal | grep vidsave"
        prikaz2="ps -Al U michal | grep yt-dlp"
        echo -en " ${barvaTextBila}${prikaz1}${barvaTextZrusit}\n"
        ps=$($prikaz1)
        ps+="\n\n"
        echo -en " ${barvaTextBila}${prikaz2}${barvaTextZrusit}\n"
        ps+=$($prikaz2)
        echo -en " ${barvaTextZluta}${ps}${barvaTextZrusit}"
        ;;
má za výsledek
Kód: [Vybrat]
ps -Al U michal | grep vidsave
error: garbage option

Usage:
 ps [options]

 Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
 for additional help text.

For more details see ps(1).
 ps -Al U michal | grep yt-dlp
error: garbage option

Usage:
 ps [options]

 Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
 for additional help text.

For more details see ps(1).
Přitom příkaz samotný, jak spuštěný přímo v konzoli, tak ve scriptu ale neuložený do proměnné, tedy $(ps -Al U michal | grep vidsave) funguje správně.

Stran: [1] 2 3 ... 6