LINUX.ORG.RU

Сообщения wolverin

 

Кодек для ffmpeg или писать самому?

Форум — Development

Приветствую.

В продолжении темы

Сцуть - в древней версии ffmpeg есть отреверсированный кодек cedrus для аппаратного УСКОРЕНИЯ кодирования в H264 на SoC.

На этапе старта нуждаюсь в совете - что будет проще и быстрее - поднять старый кодек до версии libav ффмпега хотя бы 5 ветки (его использую) или полностью реализовывать весь функционал кодека в своем коде???

Из опыта имею только поднятие ffserver до 5 ветки и реализация на его базе простого RTSP сервера )

 , ,

wolverin
()

fwrite + много pread

Форум — Development

Приветствую.

В продолжении темы

Напомню - пишу по кольцу с камеры на флешку без файловой системы через буфер fwrite кусками по 256КБ, из за нехватки времени заняться вопросом скачивание архива выполнялось в полурукопашном режиме через открытие отдельного FILE* или дескриптора в отдельном потоке и долгая перекачка по ентернетам.

Пришло время заняться вопросом отдать архив нескольким клиентам одновременно и собсна вопрос - можно ли через уже открытый FILE* и int fd = fileno(FILE*), используя pread со своим смещением в каждом потоке безопасно выполнять выгрузку одного и того же «файла»? или лучше для каждой выгрузки-потока выполнять свой open?

ЗЫ. на старте не знаю сколько будет одновременно читающих потоков.

 ,

wolverin
()

Все таки fread или mmap?

Форум — Development

Приветствую.

В продолжении темы

Имеется армка 512МБ рам и 512ГБ сд карта.

Суть - для построения журнала видео архива на носителе без файловой системы при прямом проходе (при обратном смещение 1 минута и перечитывается флешка за секунды) флешки выполняю смещение на размер кадра, для поиска нужным мне меток. Все в целом устраивало при перечитывании временных меток пока писал JPEG, который был размером где то 220КБ, но как только начал писать H264 перечитать флешку «вперед» стало проблемой иба кадры в основном около 15КБ.

И тут вспомнился мне комментарий и полез читать в гугль например где говорится как я понял, что ммап быстрее последовательного доступа только в пределах размера памяти, но перечитать фактически мне нужно последовательно всю флешку кусками где то байт по 20, для которых выполняется парсинг простым сравнением памяти и копированием нужных ее мест из каждого куска.

Собсна глобальный вопрос - как бы ускорить чтение с носителя???

Второстепенный - fread vs fseeko какими буферами оперируют если читается фридом условно 20 байт и как его менять? setvbuf почему то чем то вроде setvbuf(pf, NULL, _IOFBF, 32 * 1024 * 1024) никак не влияет на скорость перечитывания носителя

Или может я просто уперся в физическую скорость флешки!?

 , fread, ,

wolverin
()

avcodec_send_frame потокобезопасен?

Форум — Development

жизнь боль )

в продолжении темы Как разблокировать одновременно 2 потока?

3 потока - декодер, енкодер и снимков, декодер ждет переключения между 2 декодированными буферами по барьеру и после переключения отпускает семафоры нужных потоков енкодеров, когда их 2 все работает, только становится на 1 больше и avcodec_send_frame потока снимков начинает переодически слать ошибку -22, даже засегфолился уже ((

для примера обработчик потока снимков

int SnapshotEncode(int (*callback)(const char * topic, const uint8_t * buf, int lbuf), const char * topic)
{
    const AVCodec * pCdc = avcodec_find_encoder(AV_CODEC_ID_MJPEG);
    if (!pCdc)
    {
        fprintf(stderr, "ERROR find snapshot encoder for '%s'\n", avcodec_get_name(AV_CODEC_ID_MJPEG));
        return -1;
    }

    struct stEncoder_t * enc = EncoderNew("snapshot");
    if (!enc) return -2;

    int rt = 0;
    AVCodecContext * pCdcCtx = avcodec_alloc_context3(pCdc);
    if (!pCdcCtx)
    {
        PrintErrorAV("alloc snapshot an encoding context", (rt = AVERROR(ENOMEM)));
        return rt;
    }

    pCdcCtx->time_base = DEFAULT_TIME_BASE;
    pCdcCtx->pix_fmt = pCdcCtxInp->pix_fmt;
    pCdcCtx->height = pCdcCtxInp->height;
    pCdcCtx->width = pCdcCtxInp->width;

    if ((rt = avcodec_open2(pCdcCtx, pCdc, NULL)))
    {
        PrintErrorAV("open snapshot encoder", rt);
        goto END;
    }

    AVPacket * pPkt = av_packet_alloc();
    if (!pPkt)
    {
        PrintErrorAV("allocate snapshot AVPacket", (rt = AVERROR(ENOMEM)));
        goto END;
    }

    EncoderRun(enc, 1);
    if ((rt = sem_wait(&enc->sem)) < 0)
        fprintf(stderr, "ERROR lock encoder semaphore: %d %s\n", errno, strerror(errno));

    if (rt)
    {
        EncoderRun(enc, 0);
        pthread_barrier_wait(&stDec.bar);
        goto END;
    }

    if ((rt = avcodec_send_frame(pCdcCtx, stEnc.pFrm)))
        PrintErrorAV("snapshot encode send", rt);
    else if ((rt = avcodec_receive_packet(pCdcCtx, pPkt)))
        PrintErrorAV("snapshot encode receive", rt);

    EncoderRun(enc, 0);
    pthread_barrier_wait(&stDec.bar);

    if (rt == 0) callback(topic, pPkt->data, pPkt->size);

    av_packet_unref(pPkt);

END:
    EncoderFree(enc);
    if (pPkt) av_packet_free(&pPkt);
    if (pCdcCtx) avcodec_free_context(&pCdcCtx);

    return rt;
}

 , ,

wolverin
()

Как разблокировать одновременно 2 потока?

Форум — Development

Приветствую.

Контекст - для организации параллельной работы декодера и енкодера (онлайн трансляция) с поступающими с камеры кадрами организовал 2 потока с 2 семафорами, которые перекрестно отпускают чужой семафор и ждут на своем, но хочется еще один параллельный редко запускаемый енкодер (снимки) добавить, чтобы не декодить лишний раз.

Вопрос - как бэ из потока декодера запускать сразу 2 потока енкодеров, при этом поток декодера должен ждать завершения обоих???

В идеале бы конешно на С, т.к. сишный модуль этим занимается.

Спасибо за любые идеи )

 ,

wolverin
()

Хитрая очередь 2

Форум — Development

Приветствую, отдельно потужно постоянных читателей моих тем ))

Требуется реализовать очередную хитро.опую очередь для многопоточной обработки, поступающих с h264 камеры nalu блоков, которые в контексте libav библиотек от ffmpeg будем считать условными кадрами.

Для мжпег камер на базе std::deque получился рабочий вариант - поток чтения берет например с начала индекс выделенного массива под кадры и прочитав в элемент кладет этот индекс с другой стороны очереди. Потоки записи кадров, онлайн трансляции, определения движения и просто запроса снимков делают тоже самое только наибарот к очереди - что позволяет во всех случая получать условно самый свежий кадр и отбрасывать все старье.

Теперича хочется тоже самое но в контексте 264 кодека - т.е. для случая чтения например я бы мог заполнять очередь до поступления И кадра и сразу ее опустошать при его считывании (тем самым гарантируя что в начале очереди всегда ключевой кадр), но вот никак не соображу - а как же «потребители» будут понимать что очередь сброшена и надо начинать читать ее сначала? uint64_t счётчик сброса у всех потоков вести!?

Может многопоточники на плюсах сорентируют какие стандартные алгоритмы для таких вещей используются!?

 

wolverin
()

Где потеря RTP пакетов?

Форум — Admin

Приветствую.

Для проксирования видео с камер используется оборачивание в vpn (хотя это мне кажется не важно, т.к. проблема даже если просто запушить) и затем проксирование через mediamtx (он же rtsp-simple-server).

Канал условно гигабитный на этом видео шлюзе, если посмотреть видео напрямую с камеры проблем нет, как только прогнать через проксю - картинка либо тормозить (для мжпег), либо сыпется (для х264), но справедливости ради не всегда и не везде (особенно ночью улучшение существенное по качеству происходит).

Писал разработчику - отвечает ищи сам, у него все в шоколаде ((

Свой небольшой опыт мне говорит, что ртсп сервер занят какой то херней и не успевает пересылать полученные пакеты, т.к. входящий трафик примерно в 2 раза больше исходящего, хотя должно быть как минимум не меньше, а теоретически больше исходящий.

 ,

wolverin
()

Как посмотреть содержимое HTTP Accept-Encoding: gzip

Форум — Admin

Приветствую.

Пытаюсь разобраться, что происходит между чужими ПО сервера и клиента (не работает сервис после обновления). Сдампил rest обмен, ответ выглядит как

HTTP/1.1 200 OK
Date: Thu, 18 Apr 2024 09:52:54 GMT
Server: Apache/2.4.38 (Debian)
Set-Cookie: PHPSESSID=f0ifisf0j0nc8n662i85uevdv4; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 5980
Connection: close
Content-Type: text/html; charset=UTF-8

...собсна тело...

есть способ увидеть его???

 ,

wolverin
()

RTSP публикация

Форум — Development

Приветствую all! ))

Итакс продолжаю изучать вопрос RTSP публикация надежна?

Вновь уточню, что требуется послать rtp только при запросе с rtsp сервера.

Поскольку в свое поделие rtsp сервера так же выполняю публикацию подготовленного видео потока (Как забирается RTP поток у сервера RTSP?), чтобы организовать отдельный поток сервиса с очередью через локальный интерфейс с его внешними буферами (все штатными либами ффмпега без заморочек про сдп, временные базы, синхронизации потоков и прочее), то запушил так же штатно на внешний халявный rtsp-simple-server, который выполняет роль видео прокси в чужом проекте (с мыслями его перепроектировать).

И значит в tcpdump такой обмен вижу после установления tcp подключения

- моя утилита
OPTIONS rtsp://имя_внешнего_хоста:слушающий_порт/блаблабла RTSP/1.0
CSeq: 1
User-Agent: Lavf59.25.100

- сервер
RTSP/1.0 200 OK
CSeq: 1
Public: DESCRIBE, ANNOUNCE, SETUP, PLAY, RECORD, PAUSE, GET_PARAMETER, TEARDOWN
Server: gortsplib

затем

- утилита
ANNOUNCE rtsp://имя_внешнего_хоста:слушающий_порт/блаблабла RTSP/1.0
Content-Type: application/sdp
CSeq: 2
User-Agent: Lavf59.25.100
Content-Length: 305

- сервер ответ 0 длины, видимо tcp-ое подтверждение доставки, которое вижу после каждой посылки

затем

- утилита
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 адрес_сервера
t=0 0
a=tool:libavformat LIBAVFORMAT_VERSION
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z0LAKNoB4AiflmoCAgKAAAADAIAAAApHjBlQ,aM4NyA==; profile-level-id=42C028
a=control:streamid=0

- сервер
RTSP/1.0 200 OK
CSeq: 2
Server: gortsplib
Session: 545498661

затем

- утилита
SETUP rtsp://имя_внешнего_хоста:слушающий_порт/блаблабла/streamid=0 RTSP/1.0
Transport: RTP/AVP/TCP;unicast;interleaved=0-1;mode=record
CSeq: 3
User-Agent: Lavf59.25.100
Session: 545498661

- сервер
RTSP/1.0 200 OK
CSeq: 3
Server: gortsplib
Session: 545498661
Transport: RTP/AVP/TCP;unicast;interleaved=0-1

затем

- утилита
RECORD rtsp://имя_внешнего_хоста:слушающий_порт/блаблабла RTSP/1.0
Range: npt=0.000-
CSeq: 4
User-Agent: Lavf59.25.100
Session: 545498661

- сервер
RTSP/1.0 200 OK
CSeq: 4
Server: gortsplib
Session: 545498661

ПОСЛЕ этого поделие на основе либ ффмпега начинать слать RTP пакеты по ранее установленному TCP соединению на тот же порт.

т.е. как бэ сервер не говорит «публикации» PLAY только когда требуется, что кажется проблемой…

Что же делать как быть!?

 , , , ,

wolverin
()

Выделенный-облачный сервер где взять?

Форум — Admin

Приветствую.

На 1 ГБит/с БЕЗ тарификации по объему трафика.

Посоветуйте? В идеале где то на Урале-Сибири, чтобы время отклика минимальное получить.

Сейчас на timeweb плачу 8000 в месяц за выделенный E3-1230v5, 32 Гб RAM, 2 х 240 Gb SSD, но до них 40 мс только пинг ходит от меня.

 ,

wolverin
()

Пересжатие H264 с потерей кадров

Форум — Development

Приветствую.

Опять продолжение темы Запись сырого h264

Теоретический подсчет показал, что в сравнении с raw записью 1920х1080 MJPEG создающую нагрузку на носитель где то 1.2 Мб/c при 5 фпс, такая же запись H264 при 30 фпс создает поток где то 0.6 Мб/c, т.е. в принципе уже проверенную пропускную способность по записи укладываюсь, а вот с онлайн стримом вопрос.

Абсолютно точно придется пропускать кадры. Если для мжпег удалось сделать это очень равномерно, т.к. из очереди std::deque всегда брался для пересжатия из мжпег в х264 только последний кадр, то в случае с h264 нужно занусуть видео поток в канал где то до 2мбит/c, т.е. декодирование->масштабирование в 2-2.5 раза->сжатие. Все это делается на слабенькой arm пока без доступа к ядру гпу.

Первое что приходит в голову это подряд пересжимать кадры и сбрасывать очередь каждый раз при поступлении I кадра - да камера отдает I кадры каждую секунды и еще 29 P кадров, расстояние не большое, но «рывок» в конце каждой секунды все равно хоть как будет и скорее всего придется отбросить 2/3 кадров (по аналогии с мжпег пересжатием в х264).

Буду благодарен любой идее )

 , , ,

wolverin
()

Как забирается RTP поток у сервера RTSP?

Форум — Development

Приветствую.

Дошли руки для продолжения темы (RTSP публикация надежна?), но пока классический вариант освоить требуется.

Все это «ноу-хау» )) делаю на основе кода на С умершего ffserver от ffmpeg, в котором и реализован только сам RTSP (+html) сервер, а RTP протокол обернут в библиотеки ffmpeg-a - собсна что мне и нужно с одной стороны, но не дает понимание как там работает RTP.

С RTSP понятно - слушающий сокет, через который по входящим событиям (poll) парсится текст. После rtsp согласования открывается еще один (хотя в netstat вижу 2 для rtp и rtcp) слушающий сокет, в который начинают писаться кадры, обернутые в rtp и разбитые на udp/tcp пакеты (в первую очередь рассматриваю udp соединение).

Собсна из за непонимания как происходит RTP обмен вопросы

  1. rtp клиент запрашивает каждый раз новые данные или rtsp сервер просто пишет в сокет, пока в сокет rtsp не придет закрыть соединение?
  2. несколько причин есть очередного рефакторинга, но одна из них это в том, что rtsp клиент может отваливаться и не прислать teardown - с помощью чего подобное лучше отслеживать, исходить из того, что каждый rtsp клиент обязан периодически слать options и по таймауту закрывать сокеты?
  3. вся эта кухня делается на одноплатнике, который уже занят на 75% по процессору, а хочется не только отдавать больше одного видео потока как это сделано в ffserver, но еще и разные (последние создадут нагрузку только на чтение с флешки помимо сети для случая однотипных) - однопоточный RTSP/RTP сервер потянет такие задачи для случая до 10 соединений или лучше сразу разделять 2 протокола на 2 потока?

Пы.Сы. звиняйте за многа букав )

 , , ,

wolverin
()

mariadb 10.3.39 не меняются переменные из конфига

Форум — Admin

Приветствую

Некоторые изменения нужно внести в конфиг в частности innodb_buffer_pool_size хочу дефолтные поднять

написано так

:/etc/mysql/mariadb.conf.d# grep -v ^# 50-server.cnf

[server]

[mysqld]

user                    = mysql
pid-file                = /run/mysqld/mysqld.pid
socket                  = /run/mysqld/mysqld.sock
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
lc-messages-dir         = /usr/share/mysql

bind-address            = 127.0.0.1


query_cache_size        = 16M

log_error = /var/log/mysql/error.log
expire_logs_days        = 10


character-set-server  = utf8mb4
collation-server      = utf8mb4_general_ci

innodb_buffer_pool_size = 268435456


[embedded]

[mariadb]

[mariadb-10.3]

захожу в клиента смотрю после рестарта

MariaDB [(none)]> show variables like 'innodb_buffer_pool%';
+-------------------------------------+----------------+
| Variable_name                       | Value          |
+-------------------------------------+----------------+
| innodb_buffer_pool_chunk_size       | 134217728      |
| innodb_buffer_pool_dump_at_shutdown | ON             |
| innodb_buffer_pool_dump_now         | OFF            |
| innodb_buffer_pool_dump_pct         | 25             |
| innodb_buffer_pool_filename         | ib_buffer_pool |
| innodb_buffer_pool_instances        | 1              |
| innodb_buffer_pool_load_abort       | OFF            |
| innodb_buffer_pool_load_at_startup  | ON             |
| innodb_buffer_pool_load_now         | OFF            |
| innodb_buffer_pool_size             | 134217728      |
+-------------------------------------+----------------+

Почему так? из клиента устанавливается нормально как

SET GLOBAL innodb_buffer_pool_size = 256000000;

 ,

wolverin
()

Подсчет потерь (алгоритм)?

Форум — Development

Приветствую.

Нуждаюсь в идеи )

Сцуть - есть 100500 железок в интернетах, которые раз в 10-15 минут опрашиваются, в БД в поле отправленных запросов пишу +1, когда ответ приходит (снимок) в БД в поле полученных ответов пишу +1 и дата-время последнего ответа

Вопрос - как посчитать АКТУАЛЬНОЕ количество потерь в % скажем за 10 или 100 опросов??? так чтобы не плодить количество записей

 

wolverin
()

No space left on device

Форум — Admin

Приветствую.

как такое может быть, что

# df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/mmcblk1p1   40M   12M   29M  30% /mnt/mmcblk0p1
/dev/mmcblk1p2  1.2G  1.1G     0 100% /mnt/mmcblk0p2
/dev/mmcblk1p3  2.5G  600M  1.9G  25% /mnt/mmcblk0p3

НО

# cp 512MB.swap /mnt/mmcblk0p3/
cp: cannot create regular file '/mnt/mmcblk0p3/512MB.swap': No space left on device

 , , , ,

wolverin
()

nftables для FQDN

Форум — Admin

Приветствую.

Раз уж приходится переходить с iptables, которое сабж не умеет, на nftables появилась такая возможность?

 ,

wolverin
()

Ламбда в списке инициализации конструктора ?

Форум — Development

Приветствую.

Сначала написал многа букв в вопросе, но решил спросить просто кодом раз уж всегда требуют его - почему через обычный метод AutoCommit выполняется раньше всех и все работает, а через лямбду нет ибо порядок инициализации не соблюдается???

class CParamsTXT
{
private:
    const bool bAutoCommit;
    IBPP::Transaction tr;
    IBPP::Statement st;
    CDefFile * pCfg;
    const string Typ, Section, id_bank;

    bool getAutoCommit(IBPP::Transaction tr)
    {
fprintf(stderr, "\n111 111\n");
        const bool rt = !tr->Started();
        if (rt) tr->Start();
        return rt;
    }

protected:
    string GetParam(string & param, string Field, string Ident, string Default = "")
    { ... }

public:
    const string DateFormat, DatePoint, DecPoint, codepage;
    vector<string> svF;
    const char cNote;

    CParamsTXT(CDefFile * pCfg_, IBPP::Transaction tr_, IBPP::Statement st_, string Typ_, string Section_, string id_bank_, string DateFormat_, string DatePoint_, string DecPoint_, string codepage_, string Note_)
    :
        bAutoCommit([](IBPP::Transaction tr_){
fprintf(stderr, "\n111 222\n");
            const bool rt = !tr_->Started();
            if (rt) tr_->Start();
            return rt;}),
//      bAutoCommit(getAutoCommit(tr_)),
        tr(tr_), st(st_), pCfg(pCfg_),
        Typ(Typ_), Section(Section_), id_bank(id_bank_),
        DateFormat(GetParam(DateFormat_, "date_format", "DateFormat", "d/m/y")),
        DatePoint(GetParam(DatePoint_, "date_point", "DatePoint", "/")),
        DecPoint(GetParam(DecPoint_, "dec_point", "DecPoint", ".")),
        codepage(GetParam(codepage_, "codepage", "codepage", "DOS")),
        cNote(GetParam(Note_, "note", "NoteTXT", "")[0])
    { }

 

wolverin
()

DHCP не обновляет BIND9

Форум — Admin

Приветствую.

Очередная проблема после поднятия версии Debian c 8 до 10: isc-dhcp-server перестал обновлять локальную зону на шлюзе, из ошибок вижу такие сообщения

Nov 22 12:23:34 server dhcpd[]: DDNS: cleaning up lease pointer for a cancel cb=0x557dffa84800
Nov 22 12:23:34 server dhcpd[]: Unable to add forward map from имяхоста.имядомена.ru to 192.168.xxx.xxx: operation canceled

в бинде вообще тишина, никаких запросов нет

Делал конфиг когда то под Debian 6 конечно, но все работало пока не обновился

# grep -v ^# dhcpd.conf

ddns-update-style interim;
ddns-updates on;
ddns-domainname "имядомена.ru";
do-forward-updates on;
update-static-leases on;
ignore client-updates;
update-conflict-detection false;

include "/etc/dhcp/dhcpd.key";

zone имядомена.ru {
    primary 192.168.xxx.2;
    key DHCP_UPDATER;
}

zone xxx.168.192.in-addr.arpa {
    primary 192.168.xxx.2;
    key DHCP_UPDATER;
}

option domain-name "имядомена.ru";
option domain-name-servers 192.168.xxx.2;

option local-pac-server code 252 = text;
option local-pac-server "http://proxy/proxy.pac\000";

default-lease-time 36000;       # 10h
max-lease-time 86400;           # 24h

authoritative;

log-facility local7;

shared-network имясети {
    subnet 192.168.xxx.0 netmask 255.255.255.0 {
        range 192.168.xxx.10 192.168.xxx.250;
        option broadcast-address 192.168.xxx.255;
        option routers 192.168.xxx.2;
        option ntp-servers 192.168.xxx.2;
        filename "pxelinux.0";
        next-server 192.168.xxx.1;
    }
}

host имя1 {
    hardware ethernet 52:54:00:8b:xx:xx;
    fixed-address 192.168.xxx.xxx;
}

пока гуглеж не помогает, может кто сталкивался?

 ,

wolverin
()

Импорт ключей gpg

Форум — Admin

Приветствую.

После поднятия версии Debian c 8 до 10 перестали работать ключи, пытаюсь по новой их импортировать - пишет ошибку

$ gpg --import PUBRING.PGP
gpg: Всего обработано: 2
gpg:         пропущено ключей PGP-2: 2

Тут конечно написаны такие ужасы

Some algorithms and parts of the protocols as used by the 20 years old PGP-2 software are meanwhile considered unsafe.

With GnuPG 2.1 all support for those keys has gone.

но что конкретно нужно сделать в этой ситуации не соображу, буду очень благодарен любой помощи.

 

wolverin
()

libvirtd не грузится

Форум — Admin

Приветствую.

После поднятия версии Debian c 8 до 10 не запускается виртуалка с ошибкой

libvirtd[9019]: /usr/sbin/libvirtd: symbol lookup error: /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined symbol: libssh2_scp_recv2

либы стоят

# apt policy libssh2-1
libssh2-1:
  Установлен: 1.8.0-2.1+deb10u1
  Кандидат:   1.8.0-2.1+deb10u1
  Таблица версий:
 *** 1.8.0-2.1+deb10u1 500
        500 http://security.debian.org buster/updates/main amd64 Packages
        100 /var/lib/dpkg/status
     1.8.0-2.1 500
        500 http://mirror.yandex.ru/debian buster/main amd64 Packages

# apt policy libcurl3-gnutls
libcurl3-gnutls:
  Установлен: 7.64.0-4+deb10u7
  Кандидат:   7.64.0-4+deb10u7
  Таблица версий:
 *** 7.64.0-4+deb10u7 500
        500 http://security.debian.org buster/updates/main amd64 Packages
        100 /var/lib/dpkg/status
     7.64.0-4+deb10u2 500
        500 http://mirror.yandex.ru/debian buster/main amd64 Packages

гуглеж что то не помогает, подскажите в чем может быть проблема?

 ,

wolverin
()

RSS подписка на новые темы