Установка PHP 8.3 на RedOS 8.0
Ну собственно всё банально и скучно сводится к выполнению скрипта:
sudo dnf install php83-release
sudo dnf clean all
sudo dnf makecache
sudo dnf update php
Жизнь замечательных грибов
Наработки и статьи по работе с Linux
Ну собственно всё банально и скучно сводится к выполнению скрипта:
sudo dnf install php83-release
sudo dnf clean all
sudo dnf makecache
sudo dnf update php
RedOS 8 собран на другой архитектуре, поэтому так просто обновиться не получится. А еще жадная техподдержка просит действующую лицензию на техподдержку, для получения скрипта для обновления с 7 на 8. Однако в Яндекс найдется всё (с):
#!/usr/bin/sh
# Обновляем пакеты
dnf upgrade --refresh
# Заменяем версию
sudo sed -i 's/7\.3/8.0/g' /etc/yum.repos.d/*
rm -f /etc/yum.repos.d/RedOS-kernels6.repo
# Обновляем систему
dnf system-upgrade download --allowerasing
# Удаляем неиспользуемые пакеты
dnf autoremove
dnf system-upgrade reboot
После перезагрузки продолжить:
#!/usr/bin/sh
rm -f /etc/yum.repos.d/*.rpmnew
dnf upgrade --refresh
Далее у меня вылезло несколько сломанных пакетов, которые фиксил следующим образом:
Кроме того, появился ряд сломанных пакетов. Лечил:
dnf remove qt5-qtlocation
dnf remove qt5-qtbase
dnf update perl-libs --best --allowerasing
dnf update
dnf install libicui18n*
dnf update
После чего всё вроде начинает работать без ошибок. Ну или с ошибками, но не явными. В случае нахождения оных, пост будет дополнятся.
Увы, опять наступил момент, что ОС уже не обновляется оперативно, и того гляди, вообще её снимут с поддержки, а обновления ставить нужно. Ранее уже делал описание обновления, но с тех пор инструкция чуть изменилась.
Подготавливаю необходимый инструментарий и окружение:
dnf install libtool svn expat-devel pcre pcre-devel openssl-devel -y
dnf install zlib-devel
dnf install pam-devel
dnf install libselinux-devel
Скачиваю на сайте https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/ необходимую версию sshd, распаковываем её в папку и переходим в неё:
tar -xzf openssh-10.6p1.tar.gz
cd openssh-10.6p1
Конфигурируем, cобираем, устанавливаем:
./configure --with-privsep-path=/var/lib/sshd/ --sysconfdir=/etc/ssh --with-pam --with-selinux
make
make install
Переименовываем старые бинарники, и делаем ссылки на новые:
mv /usr/sbin/ssh /usr/sbin/ssh_old
mv /usr/sbin/sshd /usr/sbin/sshd_old
ln -s /usr/local/sbin/ssh /usr/sbin/ssh
ln -s /usr/local/sbin/sshd /usr/sbin/sshd
service sshd restart
ssh -V
ssd -V
В результате получаем

Задача: вызываемая функция должна вернуть таблицу.
Решение:
DROP FUNCTION get_count_np_by_ls(date,bigint,bigint,boolean);
CREATE OR REPLACE FUNCTION public.get_count_np_by_ls(pr date, porog1 bigint, porog2 bigint, epd boolean)
RETURNS TABLE(name character varying, cnt numeric)
LANGUAGE plpgsql
AS $function$
BEGIN
if epd=true then
return QUERY
select
arname as brname,
sum(acnt) as gcnt
from (
select * from (
SELECT
areas.name as arname,
count(*) as acnt
FROM public.posting_addresses
inner join ls_addresses on ls_addresses.ls=posting_addresses.ls and ls_addresses.address_type=1 and ls_addresses.area between 1 and 26
inner join areas on areas.id=ls_addresses.area
inner join ls on ls.id=posting_addresses.ls
where
posting_addresses.period=pr and
ls.dt_cancel_epd_bill<=pr
group by areas.name,ls_addresses.city,ls_addresses.settler) as zx
where
zx.acnt between porog1 and porog2
) as res
group by brname;
else
return QUERY
select
arname as brname,
sum(acnt) as gcnt
from (
select * from (
SELECT
areas.name as arname,
count(*) as acnt
FROM public.posting_addresses
inner join ls_addresses on ls_addresses.ls=posting_addresses.ls and ls_addresses.address_type=1 and ls_addresses.area between 1 and 26
inner join areas on areas.id=ls_addresses.area
inner join ls on ls.id=posting_addresses.ls
where
posting_addresses.period=pr
group by areas.name,ls_addresses.city,ls_addresses.settler) as zx
where
zx.acnt between porog1 and porog2
) as res
group by brname;
end if;
END;
$function$
;
Вызывается так:
SELECT * from get_count_np_by_ls('2026-05-01',1,1,true)
Внимание! Частой ошибкой является вызов select get_count_np_by_ls(‘2026-05-01’,1,1,true). В этом случае столбцы «схлопываются» в один
В Linux есть такая особенность: если например удалишь физически файл ну например лога какого то домена, в то время как демон запущен, запись на диск демоном будет продолжена, а сам файл вы уже не увидите до перезапуска службы. Это не всегда удобно. Способ решения:
cat /dev/null > /var/log/myapp.log
Т.е. очистить файл, не меняя его дискриптора.