Их нравы
На конференции Linux App Summit Себастьян Вик (Sebastian Wick), мэйнтейнер инструментария Flatpak, и Адриан Вовк (Adrian Vovk), создатель инсталлятора для GNOME OS и один из разработчиков systemd-homed и systemd-sysupdate, выступили с докладом о будущем системы самодостаточных пакетов Flatpak.
В докладе упоминалось намерение создать для нужд Flatpak новый процесс systemd-appd для управления правами приложений и вложенной изоляции. Важный нюанс: код ещё не написан, а поддержка пока только задумывалась.
Но тут «разверзлись хляби небесные» в социальной сети Fediverse началась волна агрессии. Разработчиков обвинили в «насаждении диктатуры», «предательстве портативности» и «союзничестве с Ландьюком». Критика сыпалась на этапе концепции, без анализа доклада. Аргументы «мы ещё даже код не написали» игнорировались.
В результате Адриан Вовк заявил, что до начала этой токсичной кампании он искренне хотел найти элегантное решение для пользователей альтернативных init-систем (например, выделить appd в отдельный демон, как это сделали с elogind). Но после потока неконструктивной агрессии и обвинений у него пропала мотивация тратить личное время и силы на это:
К чему это привело? Да к тому, что systemd теперь станет обязательной зависимостью Flatpak, альтернативные решения разработчики больше рассматривать не желают.
И это не первый случай токсичного поведения меньшинств, которые потом искренне удивляются почему никто не хочет поддерживать их решения и вообще тратить на них время. Многие начинают склоняться к теориям заговора и козням корпораций.
На самом деле проблема не в systemd vs openrc (или подставьте сюда все что хотите). Проблема в культуре дискуссии. Токсичное меньшинство, кричащее громче всех, создаёт иллюзию «общественного мнения». Но реальные мейнтейнеры видят: за громкими лозунгами стоит оголтелый фанатизм и догматическое отторжение инакомыслия.
На конференции Linux App Summit Себастьян Вик (Sebastian Wick), мэйнтейнер инструментария Flatpak, и Адриан Вовк (Adrian Vovk), создатель инсталлятора для GNOME OS и один из разработчиков systemd-homed и systemd-sysupdate, выступили с докладом о будущем системы самодостаточных пакетов Flatpak.
В докладе упоминалось намерение создать для нужд Flatpak новый процесс systemd-appd для управления правами приложений и вложенной изоляции. Важный нюанс: код ещё не написан, а поддержка пока только задумывалась.
Но тут «разверзлись хляби небесные» в социальной сети Fediverse началась волна агрессии. Разработчиков обвинили в «насаждении диктатуры», «предательстве портативности» и «союзничестве с Ландьюком». Критика сыпалась на этапе концепции, без анализа доклада. Аргументы «мы ещё даже код не написали» игнорировались.
Брайан Ландьюк (Bryan Lunduke) — известный технический блогер, яростный критик systemd и корпоративного влияния в Linux . В данном контексте обвинение в «союзничестве» с ним используется как токсичный ярлык и обвинение в намеренном вреде проекту ради идеологии.
В результате Адриан Вовк заявил, что до начала этой токсичной кампании он искренне хотел найти элегантное решение для пользователей альтернативных init-систем (например, выделить appd в отдельный демон, как это сделали с elogind). Но после потока неконструктивной агрессии и обвинений у него пропала мотивация тратить личное время и силы на это:
Но, честно говоря, всё это обсуждение сейчас совершенно бессмысленно, пока мы не написали ни единой строчки кода. Если быть откровенным, до этой травли в Феди я планировал максимально тактично отнестись к сценарию использования без systemd. Но тут я увидел, как кто-то в открытую обвиняет нас в том, что мы «союзники Ландьюка».
Так что, извините, но у меня больше нет ни малейшего желания тратить своё время на это дерьмо. Оно того не стоит.
К чему это привело? Да к тому, что systemd теперь станет обязательной зависимостью Flatpak, альтернативные решения разработчики больше рассматривать не желают.
И это не первый случай токсичного поведения меньшинств, которые потом искренне удивляются почему никто не хочет поддерживать их решения и вообще тратить на них время. Многие начинают склоняться к теориям заговора и козням корпораций.
На самом деле проблема не в systemd vs openrc (или подставьте сюда все что хотите). Проблема в культуре дискуссии. Токсичное меньшинство, кричащее громче всех, создаёт иллюзию «общественного мнения». Но реальные мейнтейнеры видят: за громкими лозунгами стоит оголтелый фанатизм и догматическое отторжение инакомыслия.
👍22🤡1
TinyFileManager – простой и эффективный файловый веб-менеджер
В современных условиях часто встает вопрос удобного предоставления доступа к файлам самых разнообразных пользователей, в том числе мобильных и удаленных. Протокол SMB для этой задачи не самая лучшая идея, а создавать дублирующие хранилища наподобие Nextcloud избыточно.
Для такого случая может пригодиться TinyFileManager – простой файловый веб-менеджер в виде единственного PHP-файла. Но разработчик, судя по всему, сосредоточился именно на развитии самого скрипта, а подходы к созданию Docker-образа мягко скажем сомнительны. Поэтому образ мы будем собирать самостоятельно.
Общая структура проекта:
Dockerfile
docker-compose.yml
Caddyfile
php-session.ini
config.php
После чего создаем директорию для хранения файлов и устанавливаем на нее нужные права:
И сгенерируем хеши паролей реальным пользователям:
Обратите внимание, пользователи бывают двух типов, с правами загружать файлы и правами только на чтение.
Запускаем проект:
И переходим в браузере по указанному адресу.
В современных условиях часто встает вопрос удобного предоставления доступа к файлам самых разнообразных пользователей, в том числе мобильных и удаленных. Протокол SMB для этой задачи не самая лучшая идея, а создавать дублирующие хранилища наподобие Nextcloud избыточно.
Для такого случая может пригодиться TinyFileManager – простой файловый веб-менеджер в виде единственного PHP-файла. Но разработчик, судя по всему, сосредоточился именно на развитии самого скрипта, а подходы к созданию Docker-образа мягко скажем сомнительны. Поэтому образ мы будем собирать самостоятельно.
Общая структура проекта:
/opt/tinyfm/
├── Caddyfile
├── config.php
├── php-session.ini
├── docker-compose.yml
├── Dockerfile
└── data/
Dockerfile
FROM php:8.3-fpm-alpine
WORKDIR /var/www/html
RUN apk add --no-cache \
libzip-dev \
libpng-dev \
libjpeg-turbo-dev \
freetype-dev \
oniguruma-dev \
bzip2-dev \
curl \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install zip gd mbstring bz2
RUN curl -L -o index.php https://raw.githubusercontent.com/prasathmani/tinyfilemanager/master/tinyfilemanager.php \
&& chown -R www-data:www-data /var/www/html
docker-compose.yml
services:
tinyfilemanager:
build: .
container_name: tinyfilemanager
restart: unless-stopped
user: "82:82"
volumes:
- app_code:/var/www/html
- ./data:/var/www/html/data
- ./config.php:/var/www/html/config.php:ro
- ./php-session.ini:/usr/local/etc/php/conf.d/session.ini:ro
tmpfs:
- /tmp:uid=82,gid=82,mode=1777
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
caddy:
image: caddy:2-alpine
container_name: tinyfm-caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- app_code:/var/www/html:ro
- ./data:/var/www/html/data:ro
- caddy_data:/data
- caddy_config:/config
depends_on:
- tinyfilemanager
volumes:
app_code:
caddy_data:
caddy_config:
Caddyfile
files.example.com {
#tls internal
encode gzip zstd
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
X-Content-Type-Options nosniff
X-Frame-Options DENY
Referrer-Policy no-referrer
}
root * /var/www/html
php_fastcgi tinyfilemanager:9000
file_server
}php-session.ini
session.gc_maxlifetime = 300
session.cookie_lifetime = 300
session.use_strict_mode = 1
session.cookie_secure = 1
session.cookie_httponly = 1
session.cookie_samesite = Lax
session.save_path = "/tmp"
config.php
<?php
$root_path = '/var/www/html/data';
$root_url = 'data';
$http_host = $_SERVER['HTTP_HOST'];
$use_auth = true;
$auth_users = array(
'admin' => '$2y$10$/K.hjNr84lLNDt8fTXjoI.DBp6PpeyoJ.mGwrrLuCZfAwfSAGqhOW', //admin@123
'user' => '$2y$10$Fg6Dz8oH9fPoZ2jJan5tZuv6Z4Kp7avtQ9bDfrdRntXtPeiMAZyGO', //12345
'guest' => '$2y$10$a.DMI5sRjAnvhb.8rFAXY.XPSEO/eatVb4qCMmTc2YcxTDKp9xMyC' //guest
);
$readonly_users = array(
'guest'
);
$exclude_items = array(
'.htaccess',
'.env',
'docker-compose.yml',
'Caddyfile',
'php-session.ini',
'config.php',
'.git',
'.DS_Store',
'..',
'.'
);
$online_viewer = false;
$default_timezone = 'Europe/Moscow';
После чего создаем директорию для хранения файлов и устанавливаем на нее нужные права:
mkdir -p /opt/tinyfm/data
chown -R 82:82 /opt/tinyfm/data
И сгенерируем хеши паролей реальным пользователям:
docker run --rm php:8.3-alpine php -r "echo password_hash('мой_пароль', PASSWORD_BCRYPT) . PHP_EOL;"Обратите внимание, пользователи бывают двух типов, с правами загружать файлы и правами только на чтение.
Запускаем проект:
docker compose up -d -–build
И переходим в браузере по указанному адресу.
👍29
Настраиваем Visual Studio Code для удаленной работы через SSH
Сегодня все чаще и чаще для конфигурационных файлов используются продвинутые текстовые форматы, такие как JSON или XML, имеющие строгий синтаксис и структуру.
Их применение облегчает программную обработку данных, но при этом они все еще остаются легко читаемыми человеком.
Однако работа с ними в привычных консольных редакторах имеет ряд неудобств, в частности связанных с соблюдением синтаксиса и формата разметки.
Поэтому гораздо удобнее использовать для этого специальные среды разработки, например, VS Code, тем более что он прекрасно умеет работать через SSH.
✅ Читать далее: https://interface31.ru/post/nastraivaem-visual-studio-code-dlya-udalennoy-raboty-cherez-ssh/
Сегодня все чаще и чаще для конфигурационных файлов используются продвинутые текстовые форматы, такие как JSON или XML, имеющие строгий синтаксис и структуру.
Их применение облегчает программную обработку данных, но при этом они все еще остаются легко читаемыми человеком.
Однако работа с ними в привычных консольных редакторах имеет ряд неудобств, в частности связанных с соблюдением синтаксиса и формата разметки.
Поэтому гораздо удобнее использовать для этого специальные среды разработки, например, VS Code, тем более что он прекрасно умеет работать через SSH.
✅ Читать далее: https://interface31.ru/post/nastraivaem-visual-studio-code-dlya-udalennoy-raboty-cherez-ssh/
👍12🔥11❤1
Обновление PostgreSQL в Docker через pg_dumpall
Обновление PostgreSQL между мажорными версиями задача не самая простая, недостаточно просто загрузить новый контейнер, нужно еще выполнить конвертацию структуры кластера СУБД, которая меняется от версии к версии.
Для небольших и средних баз идеально использовать импорт/экспорт при помощи утилиты pg_dumpall, что полностью исключает риск повреждения исходных данных, плюс у вас на руках всегда остается актуальная резервная копия в виде дампа всего кластера.
Итак, приступим, допустим мы изначально имеем:
В нашем случае:
▫️ db — имя сервиса Compose
▫️ postgres-db — реальное имя контейнера Docker
1️⃣ Остановим весь стек и запустим обратно только контейнер с СУБД, это исключит возможную запись в БД во время выгрузки:
Теперь выполним выгрузку дампа всего кластера:
Проверяем, что файл выгрузки создан. После чего останавливаем контейнер с БД:
2️⃣ Следующие шаги будут несколько различаться в отличие от того, используем ли мы Named Volumes или Bind mount, но в любом случае наша задача запустить новый контейнер СУБД с пустым томом.
🔹 Для Named Volumes было:
Стало:
🔹 Для Bind mount было:
Стало:
3️⃣ Запускаем СУБД:
Мы нее запускаем весь стек, чтобы раньше времени приложения не начали писать в новую чистую БД.
Ждем пока база инициализируется и готова будет принимать соединения, для этого выполним команду:
Как только появится сообщение:
Можно двигаться дальше. Загружаем дамп кластера СУБД:
Теперь запускаем весь стек:
4️⃣ После чего рекомендуется выполнить оптимизацию загруженной базы:
Это не мешает работе и можно запускать уже на работающем стеке. Старые тома лучше всего оставить на некоторое время, пока вы не убедитесь, что обновление прошло нормально.
Обновление PostgreSQL между мажорными версиями задача не самая простая, недостаточно просто загрузить новый контейнер, нужно еще выполнить конвертацию структуры кластера СУБД, которая меняется от версии к версии.
Для небольших и средних баз идеально использовать импорт/экспорт при помощи утилиты pg_dumpall, что полностью исключает риск повреждения исходных данных, плюс у вас на руках всегда остается актуальная резервная копия в виде дампа всего кластера.
Итак, приступим, допустим мы изначально имеем:
services:
db:
container_name: postgres-db
В нашем случае:
▫️ db — имя сервиса Compose
▫️ postgres-db — реальное имя контейнера Docker
1️⃣ Остановим весь стек и запустим обратно только контейнер с СУБД, это исключит возможную запись в БД во время выгрузки:
docker compose stop
docker compose up -d db
Теперь выполним выгрузку дампа всего кластера:
docker exec -t postgres-db pg_dumpall -U postgres > full_backup.sql
Проверяем, что файл выгрузки создан. После чего останавливаем контейнер с БД:
docker compose down
2️⃣ Следующие шаги будут несколько различаться в отличие от того, используем ли мы Named Volumes или Bind mount, но в любом случае наша задача запустить новый контейнер СУБД с пустым томом.
🔹 Для Named Volumes было:
services:
db:
image: postgres:17
volumes:
- pg_data:/var/lib/postgresql/data
volumes:
pg_data:
Стало:
services:
db:
image: postgres:18
volumes:
- pg_data_18:/var/lib/postgresql/data
volumes:
pg_data_18:
🔹 Для Bind mount было:
services:
db:
image: postgres:17
volumes:
- ./postgres-data:/var/lib/postgresql/data
Стало:
services:
db:
image: postgres:18
volumes:
- ./postgres-data-18:/var/lib/postgresql/data
3️⃣ Запускаем СУБД:
docker compose up -d db
Мы нее запускаем весь стек, чтобы раньше времени приложения не начали писать в новую чистую БД.
Ждем пока база инициализируется и готова будет принимать соединения, для этого выполним команду:
docker logs -f postgres-db
Как только появится сообщение:
database system is ready to accept connections
Можно двигаться дальше. Загружаем дамп кластера СУБД:
docker exec -i postgres-db psql -U postgres < full_backup.sql
Теперь запускаем весь стек:
docker compose up -d
4️⃣ После чего рекомендуется выполнить оптимизацию загруженной базы:
docker exec -it postgres-db vacuumdb -U postgres --all --analyze-only
Это не мешает работе и можно запускать уже на работающем стеке. Старые тома лучше всего оставить на некоторое время, пока вы не убедитесь, что обновление прошло нормально.
👍8⚡3😁2❤1
УТМ ЕГАИС 403 Forbidden - Доступ к странице с данного IP не разрешен
С такой ошибкой столкнулся сегодня один наш коллега. Предыстория проста. В самом веб-интерфейсе UTM есть фильтр IP-адресов, в котором можно указать доверенные адреса и сети, обращения с других адресов будут отклоняться.
А дальше – проще, немного не подумал или опечатался и доступа у тебя больше нет. Как раз этим наш коллега и решил заняться, тем более что в регионе у нас три «для трезвости» подряд. Но что-то пошло не так и доступ пропал отовсюду.
Поиск в сети, к удивлению, результатов не дал, везде написана какая-то ерунда, а в тематических сообществах и вовсе советуют переустановить УТМ, он бы так и сделал, но за неожиданные выходные в УТМ собралось много входящих документов.
В любом случае переустановка – это не наш метод, всегда следует разобраться в проблеме, иначе переустанавливать на каждый чих просто утомишься.
Итак, белые списки, если они есть, то должны где-то хранится, а каком-то конфигурационном файле. Вот поиском этого и займемся. Недолгие поиски привели нас к файлу
В самом низу он содержит две интересные опции:
Первая – это список адресов, с которых были попытки подключений. Хотя зачем они в конфиге? Логично было бы хранить их в логе. А вот последняя – это и есть наш белый список. Можете откорректировать его до нужных значений, а можете просто очистить.
Ошибка нашего коллеги была классическая, он набрал 192.186.х.х вместо 192.168.х.х.
После чего просто перезапустите службу УТМ и доступ восстановится.
С такой ошибкой столкнулся сегодня один наш коллега. Предыстория проста. В самом веб-интерфейсе UTM есть фильтр IP-адресов, в котором можно указать доверенные адреса и сети, обращения с других адресов будут отклоняться.
А дальше – проще, немного не подумал или опечатался и доступа у тебя больше нет. Как раз этим наш коллега и решил заняться, тем более что в регионе у нас три «для трезвости» подряд. Но что-то пошло не так и доступ пропал отовсюду.
Поиск в сети, к удивлению, результатов не дал, везде написана какая-то ерунда, а в тематических сообществах и вовсе советуют переустановить УТМ, он бы так и сделал, но за неожиданные выходные в УТМ собралось много входящих документов.
В любом случае переустановка – это не наш метод, всегда следует разобраться в проблеме, иначе переустанавливать на каждый чих просто утомишься.
Итак, белые списки, если они есть, то должны где-то хранится, а каком-то конфигурационном файле. Вот поиском этого и займемся. Недолгие поиски привели нас к файлу
transport/conf/transport.properties в директории установки УТМ. У нас указан путь для Linux установки, в Windows его расположение аналогично.В самом низу он содержит две интересные опции:
web.server.attempt.ip =
web.server.access.ip =
Первая – это список адресов, с которых были попытки подключений. Хотя зачем они в конфиге? Логично было бы хранить их в логе. А вот последняя – это и есть наш белый список. Можете откорректировать его до нужных значений, а можете просто очистить.
Ошибка нашего коллеги была классическая, он набрал 192.186.х.х вместо 192.168.х.х.
После чего просто перезапустите службу УТМ и доступ восстановится.
👍22🔥3❤2🤝2
Особенности установки УТМ ЕГАИС на Debian 13
Сегодня попробовали установить УТМ ЕГАИС на свежий дистрибутив Debian 13. Сама установка не вызывает особых сложностей и ее можно выполнить по нашей статье:
🔹 ЕГАИС. Устанавливаем УТМ 4.2.0 на Debian (Ubuntu)
При этом, вместо
Сам пакет u-trans тоже ставится без особых проблем, запускается, но не работает. Если вы откроете лог, то увидите, что УТМ не может обнаружить ключ. Странно, ведь инсталлятор увидел Рутокен и инструменты диагностики тоже его видят.
Поэтому читаем лог дальше и находим интересные записи:
Это значит, что библиотека требует наличия executable stack (исполняемый стек), который отключен в Debian 13 по соображениями безопасности (а также в Ubuntu, начиная с 25.10).
👆 Включить данную технологию не представляется возможным (во всяком случае без глубокого изменения системы), поэтому можно считать, что УТМ ЕГАИС несовместим с Debian 13 и грядущей Ubuntu 26.04 LTS.
😉 Ну если, конечно, разработчики Росалкогольтабакконтроль не перепишут программу, но надежды на это призрачные, с учетом того, что u-trans для Linux до сих пор 32-битное приложение.
С другой стороны, у нас все-таки Linux и каждый тут сам кузнец собственного счастья. Указанные в ошибках библиотеки являются библиотеками PKCS11Lib от Рутокен и поставляются вместе с пакетом УТМ.
Поэтому мы можем заменить их на более современные версии библиотек от Рутокен, которые не требуют executable stack.
Скачать их можно на https://download.rutoken.ru в разделе /Rutoken/PKCS11Lib/Current/Linux/x32/, просто качаем
Для этого перейдем в домашнюю папку и скачаем библиотеку через wget, в нашем случае это последняя на сегодня версия, вам же потребуется уточнить версию библиотеки:
Затем останавливаем УТМ, заменяем необходимые библиотеки (их там две копии) и снова запускаем УТМ:
После чего все запускается и отлично работает. Посмотреть лог УТМ в реальном времени можно командой:
Но данное действие вам придется выполнять всякий раз после переустановки или обновления УТМ.
❗️Также обратите внимание, что данный способ проверен только с токенами Рутокен и работа с JaCarta не проверялась и не гарантируется.
👉 Кроме того, добавим – непосредственной необходимости ставить УТМ ЕГАИС на Debian 13 в текущий момент нет, сервис это сугубо внутренний и при необходимости может эксплуатироваться даже на устаревших версиях системы.
Сегодня попробовали установить УТМ ЕГАИС на свежий дистрибутив Debian 13. Сама установка не вызывает особых сложностей и ее можно выполнить по нашей статье:
🔹 ЕГАИС. Устанавливаем УТМ 4.2.0 на Debian (Ubuntu)
При этом, вместо
libncurses5:i386 следует устанавливать libncurses6:i386, а библиотека SSL называется libssl3t64 и скорее всего будет установлена по умолчанию.Сам пакет u-trans тоже ставится без особых проблем, запускается, но не работает. Если вы откроете лог, то увидите, что УТМ не может обнаружить ключ. Странно, ведь инсталлятор увидел Рутокен и инструменты диагностики тоже его видят.
Поэтому читаем лог дальше и находим интересные записи:
/opt/utm/lib/librtpkcsllecp.so: невозможно задействовать исполняемый стек, как требует разделяемый объект
Это значит, что библиотека требует наличия executable stack (исполняемый стек), который отключен в Debian 13 по соображениями безопасности (а также в Ubuntu, начиная с 25.10).
👆 Включить данную технологию не представляется возможным (во всяком случае без глубокого изменения системы), поэтому можно считать, что УТМ ЕГАИС несовместим с Debian 13 и грядущей Ubuntu 26.04 LTS.
😉 Ну если, конечно, разработчики Росалкогольтабакконтроль не перепишут программу, но надежды на это призрачные, с учетом того, что u-trans для Linux до сих пор 32-битное приложение.
С другой стороны, у нас все-таки Linux и каждый тут сам кузнец собственного счастья. Указанные в ошибках библиотеки являются библиотеками PKCS11Lib от Рутокен и поставляются вместе с пакетом УТМ.
Поэтому мы можем заменить их на более современные версии библиотек от Рутокен, которые не требуют executable stack.
Скачать их можно на https://download.rutoken.ru в разделе /Rutoken/PKCS11Lib/Current/Linux/x32/, просто качаем
librtpkcs11ecp.so. Для этого перейдем в домашнюю папку и скачаем библиотеку через wget, в нашем случае это последняя на сегодня версия, вам же потребуется уточнить версию библиотеки:
cd ~
wget https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x32/librtpkcs11ecp.so
Затем останавливаем УТМ, заменяем необходимые библиотеки (их там две копии) и снова запускаем УТМ:
supervisorctl stop utm
cp -v librtpkcs11ecp.so /opt/utm/lib/librtpkcs11ecp.so
cp -v librtpkcs11ecp.so /opt/utm/lib/librtpkcs11ecp-replica.so
supervisorctl start utm
После чего все запускается и отлично работает. Посмотреть лог УТМ в реальном времени можно командой:
tail -f /opt/utm/transport/l/transport_info.log
Но данное действие вам придется выполнять всякий раз после переустановки или обновления УТМ.
❗️Также обратите внимание, что данный способ проверен только с токенами Рутокен и работа с JaCarta не проверялась и не гарантируется.
👉 Кроме того, добавим – непосредственной необходимости ставить УТМ ЕГАИС на Debian 13 в текущий момент нет, сервис это сугубо внутренний и при необходимости может эксплуатироваться даже на устаревших версиях системы.
1👍25🔥3
Store CLI – интерфейс командной строки для Microsoft Store
Не так давно без лишнего шума и анонсов в последних выпусках Windows появилась утилита командной строки Store CLI, предназначенная для работы с магазином Microsoft.
Для ее использования откройте терминал и просто наберите:
И вы получите короткую справку, которой достаточно чтобы начать с ней работать.
Для просмотра уже установленных из магазина приложений выполните:
Для поиска обновлений отдельного приложения выполните:
Сразу для всех:
Чтобы установить обновления добавьте ключ
Для поиска приложений используйте:
Также можно искать по расширению:
И вы получите все приложения для работы с mp4.
Если вы хотите подобрать альтернативы приложению, то выполните поиск похожих:
Для просмотра каталога можно воспользоваться специальными командами, например, сначала просмотрим категории и субкатегории:
Теперь выведем топ бесплатных приложений определенной категории:
Или топ платных в субкатегории:
Найдя нужное приложение, мы можем установить его командой:
В качестве параметра можно указать имя приложения или ID, второе предпочтительно, так как однозначно определяет приложение, даже если опубликовано несколько его версий. Например, для установки VLC можно использовать команды:
Возможности удаления приложений магазина в данной версии консольной утилиты нет.
Не так давно без лишнего шума и анонсов в последних выпусках Windows появилась утилита командной строки Store CLI, предназначенная для работы с магазином Microsoft.
Для ее использования откройте терминал и просто наберите:
store
И вы получите короткую справку, которой достаточно чтобы начать с ней работать.
Для просмотра уже установленных из магазина приложений выполните:
store installed
Для поиска обновлений отдельного приложения выполните:
store update AppName
Сразу для всех:
store updates
Чтобы установить обновления добавьте ключ
–apply: store update AppName --apply
store updates –apply
Для поиска приложений используйте:
store search AppName
Также можно искать по расширению:
store extension mp4
И вы получите все приложения для работы с mp4.
Если вы хотите подобрать альтернативы приложению, то выполните поиск похожих:
store similar vlc
Для просмотра каталога можно воспользоваться специальными командами, например, сначала просмотрим категории и субкатегории:
store app-categories
Теперь выведем топ бесплатных приложений определенной категории:
store browse-apps top-free --category "Utilities & tools"
Или топ платных в субкатегории:
store browse-apps top-paid --subcategory "Personal Security"
Найдя нужное приложение, мы можем установить его командой:
store install AppName/ID
В качестве параметра можно указать имя приложения или ID, второе предпочтительно, так как однозначно определяет приложение, даже если опубликовано несколько его версий. Например, для установки VLC можно использовать команды:
store install VLC
store install XPDM1ZW6815MQM
Возможности удаления приложений магазина в данной версии консольной утилиты нет.
👍14🤣7
Обновление PostgreSQL в Docker через pg_upgrade
Продолжаем тему обновления контейнеров PostgreSQL между мажорными версиями, в прошлой заметке мы рассмотрели миграцию при помощи утилиты pg_dumpall.
Это простой и надежный способ, но у него есть один существенный недостаток: pg_dumpall – однопоточен, использует для выгрузки и загрузки только одно ядро и выполняет все операции последовательно, как они записаны в файле дампа.
На крупных и даже средних базах такой подход может привести к неконтролируемому времени простоя, что неприемлемо. Поэтому сегодня мы рассмотрим миграцию при помощи другой утилиты - pg_upgrade.
Преимущество pg_upgrade в том, что он не делает экспорт/импорт, не пересоздает всю структуру СУБД, а работает на уровне файлов базы данных.
Итак, приступим, допустим мы изначально имеем:
В нашем случае:
▫️ db — имя сервиса Compose
▫️ postgres-db — реальное имя контейнера Docker
1️⃣ Остановим весь стек и запустим обратно только контейнер с СУБД для создания резервной копии, это исключит возможную запись в БД во время выгрузки:
Теперь выполним выгрузку дампа всего кластера:
Проверяем, что файл дампа создан и останавливаем контейнер с БД:
2️⃣ Следующие шаги будут несколько различаться в отличие от того, используем ли мы Named Volumes или Bind mount.
🔹 При Named Volumes создаем дополнительный именованный том для нового кластера СУБД:
И запускаем специальный контейнер для апгрейда:
Данный контейнер НЕ является официальным образом PostgreSQL, это community image от Tianon Gravi, но он де-факто является стандартом в мире Docker.
Обратите внимание на тег контейнера, он указывает версии, с которой и на которую мы переходим, в нашем случае это 17-to-18, в других случаях выбирайте контейнер с нужным тегом.
Затем меняем Compose, было:
Стало:
🔹 Для Bind mount создаем новую директорию:
И запускаем служебный контейнер:
Затем меняем Cpmpose, было:
Стало:
3️⃣ Запускаем стек:
И выполняем оптимизацию базы:
Это не мешает работе и можно запускать уже на работающем стеке. Старые тома лучше всего оставить на некоторое время, пока вы не убедитесь, что обновление прошло нормально.
Продолжаем тему обновления контейнеров PostgreSQL между мажорными версиями, в прошлой заметке мы рассмотрели миграцию при помощи утилиты pg_dumpall.
Это простой и надежный способ, но у него есть один существенный недостаток: pg_dumpall – однопоточен, использует для выгрузки и загрузки только одно ядро и выполняет все операции последовательно, как они записаны в файле дампа.
На крупных и даже средних базах такой подход может привести к неконтролируемому времени простоя, что неприемлемо. Поэтому сегодня мы рассмотрим миграцию при помощи другой утилиты - pg_upgrade.
Преимущество pg_upgrade в том, что он не делает экспорт/импорт, не пересоздает всю структуру СУБД, а работает на уровне файлов базы данных.
Итак, приступим, допустим мы изначально имеем:
services:
db:
container_name: postgres-db
В нашем случае:
▫️ db — имя сервиса Compose
▫️ postgres-db — реальное имя контейнера Docker
1️⃣ Остановим весь стек и запустим обратно только контейнер с СУБД для создания резервной копии, это исключит возможную запись в БД во время выгрузки:
docker compose stop
docker compose up -d db
Теперь выполним выгрузку дампа всего кластера:
docker exec -t postgres-db pg_dumpall -U postgres > full_backup.sql
Проверяем, что файл дампа создан и останавливаем контейнер с БД:
docker compose down
2️⃣ Следующие шаги будут несколько различаться в отличие от того, используем ли мы Named Volumes или Bind mount.
🔹 При Named Volumes создаем дополнительный именованный том для нового кластера СУБД:
docker volume create pg_data_18
И запускаем специальный контейнер для апгрейда:
docker run --rm \
-e POSTGRES_USER=postgres \
-v pg_data:/var/lib/postgresql/17/data \
-v pg_data_18:/var/lib/postgresql/18/data \
tianon/postgres-upgrade:17-to-18
Данный контейнер НЕ является официальным образом PostgreSQL, это community image от Tianon Gravi, но он де-факто является стандартом в мире Docker.
Обратите внимание на тег контейнера, он указывает версии, с которой и на которую мы переходим, в нашем случае это 17-to-18, в других случаях выбирайте контейнер с нужным тегом.
Затем меняем Compose, было:
services:
db:
image: postgres:17
volumes:
- pg_data:/var/lib/postgresql/data
volumes:
pg_data:
Стало:
services:
db:
image: postgres:18
volumes:
- pg_data_18:/var/lib/postgresql/data
volumes:
pg_data_18:
🔹 Для Bind mount создаем новую директорию:
mkdir ./data/postgres-data-18
И запускаем служебный контейнер:
docker run --rm \
-e POSTGRES_USER=postgres \
-v ./data/ postgres-data:/var/lib/postgresql/17/data \
-v ./data/postgres-data-18:/var/lib/postgresql/18/data \
tianon/postgres-upgrade:17-to-18
Затем меняем Cpmpose, было:
services:
db:
image: postgres:17
volumes:
- ./postgres-data:/var/lib/postgresql/data
Стало:
services:
db:
image: postgres:18
volumes:
- ./postgres-data-18:/var/lib/postgresql/data
3️⃣ Запускаем стек:
docker compose up -d
И выполняем оптимизацию базы:
docker compose exec -T db vacuumdb -U postgres --all --analyze-in-stages
Это не мешает работе и можно запускать уже на работающем стеке. Старые тома лучше всего оставить на некоторое время, пока вы не убедитесь, что обновление прошло нормально.
👍14❤1
Relax-and-Recover (ReaR) - средство аварийного восстановления системы
Среди инструментов резервного копирования существует отдельная группа - системы аварийного восстановления на "голое железо" (Bare Metal Disaster Recovery - BMDR), которые позволяют полностью восстановить систему в случае выхода из строя оборудования или уничтожения системы при воздействии иных факторов.
Relax-and-Recover - сокращенно ReaR - как раз и представляет такую систему, простую в использовании, но достаточно мощную в работе. С ее помощью вы сможете быстро восстановить вашу ОС Linux на новое оборудование, либо выполнить перенос системы со старого оборудования на новое, либо в виртуальную среду.
Перед тем как начинать работу с ReaR следует уточнить некоторые принципиальные моменты. ReaR предполагает создание двух достаточно независимых сущностей: загрузочного образа и резервной копии.
Загрузочный образ позволяет загрузить систему и выполнить восстановление ее макета, под которым подразумевается дисковая разметка, разделы и файловые системы на них, поддерживаются все типы разметки, включая программный RAID и LVM. Но при этом макет не содержит никаких данных, он просто восстановит структуру дисковой подсистемы.
Резервная копия не содержит сведений о структуре хранения, а просто содержит данные, которые там хранились. Это достигается за счет того, что файловая система Linux иерархична и всегда имеет общий корень, это позволяет просто скопировать все данные одним архивом, а как именно они располагаются на физических носителях определяется макетом.
Кстати, Relax-and-Recover поддерживает множество внешних систем резервного копирования, что позволяет разделить процесс резервного копирования макета и резервного копирования данных, но это выходит за рамки данной статьи и ниже мы будем использовать только встроенные средства.
✅ Читать далее: https://interface31.ru/post/relax-and-recover-sredstvo-avariynogo-vosstanovleniya-sistemy/
Среди инструментов резервного копирования существует отдельная группа - системы аварийного восстановления на "голое железо" (Bare Metal Disaster Recovery - BMDR), которые позволяют полностью восстановить систему в случае выхода из строя оборудования или уничтожения системы при воздействии иных факторов.
Relax-and-Recover - сокращенно ReaR - как раз и представляет такую систему, простую в использовании, но достаточно мощную в работе. С ее помощью вы сможете быстро восстановить вашу ОС Linux на новое оборудование, либо выполнить перенос системы со старого оборудования на новое, либо в виртуальную среду.
Перед тем как начинать работу с ReaR следует уточнить некоторые принципиальные моменты. ReaR предполагает создание двух достаточно независимых сущностей: загрузочного образа и резервной копии.
Загрузочный образ позволяет загрузить систему и выполнить восстановление ее макета, под которым подразумевается дисковая разметка, разделы и файловые системы на них, поддерживаются все типы разметки, включая программный RAID и LVM. Но при этом макет не содержит никаких данных, он просто восстановит структуру дисковой подсистемы.
Резервная копия не содержит сведений о структуре хранения, а просто содержит данные, которые там хранились. Это достигается за счет того, что файловая система Linux иерархична и всегда имеет общий корень, это позволяет просто скопировать все данные одним архивом, а как именно они располагаются на физических носителях определяется макетом.
Кстати, Relax-and-Recover поддерживает множество внешних систем резервного копирования, что позволяет разделить процесс резервного копирования макета и резервного копирования данных, но это выходит за рамки данной статьи и ниже мы будем использовать только встроенные средства.
✅ Читать далее: https://interface31.ru/post/relax-and-recover-sredstvo-avariynogo-vosstanovleniya-sistemy/
👍19❤1
Стоит ли пропускать процесс обновления Windows на этапе OOBE
Автоматическое обновление Windows уже давно стало автоматическим, которое просто работает, вне зависимости от вашего желания. Системный администратор может гибко настроить этот процесс, отложить обновления на некоторый срок, да и только.
В Windows 11 процесс автоматического обновления на этапе первого включения (OOBE) сделали обязательным, хочешь – не хочешь, а сиди и жди. Но с некоторых последних версий появилась возможность его пропустить. Ну классно же!
Тут вспоминается старая поговорка: гладко было на бумаге, да забыли про овраги…
В общем появилась у нас необходимость настроить и отдать заказчику некоторое количество Мини-ПК, которые из коробки идут с Windows 11. Процесс начальной установки обновлений на системах с N100 занимает примерно от 40 минут, до часа.
Каждый раз ждать? Тем более что сам процесс настройки несложен: установить NET 3.5, IIS, штатный набор ПО через Winget, драйвера торгового оборудования, платформу 1С и опубликовать базу на IIS. Работы от силы на полчаса, а то и меньше.
Ну так чего ждать? Пропустим, настроим, отдадим и пусть оно там уже само качает, благо настроить параметры обновления и перезагрузки во внерабочее время можно единственным файлом реестра.
Сказано – сделано, на втором Мини-ПК мы пропустили этап обновления и быстро занялись настройкой… Но не тут-то было…
Winget радостно сообщил нам, что msstore недоступен и поставить чего-то он может только из репозитория winget с явным указанием источника в команде. Т.е. все наши скрипты разом сломались.
Установка компонентов Windows (NET и IIS) зависла на нулевой отметке, без каких-либо признаков жизни.
Если перейти в Центр обновления Windows, то там видны нужные обновления, но все серое, везде 0%. Хотя в диспетчере задач явно обновления ставятся.
Но это полбеды, при перезагрузке система долго, очень долго начинает устанавливать обновления, потом перезагружается и начинает их откат. В итоге в системе все у вас начнется по новой.
Как быть? А никак, оставить ее в покое и дождаться пока она сама поставит все необходимые обновления. По сути, нажатие на Пропустить на этапе OOBE ничего не меняет и обновление будет автоматически запущено по фону при входе в систему, делая ее условно работоспособной.
Поэтому что пнем об сову, что сову об пень, разницы никакой. Времени вы не выиграете. Так что пусть обновляется так, как это и задумано – на этапе OOBE, а это время просто внесите в планирование работ.
Автоматическое обновление Windows уже давно стало автоматическим, которое просто работает, вне зависимости от вашего желания. Системный администратор может гибко настроить этот процесс, отложить обновления на некоторый срок, да и только.
В Windows 11 процесс автоматического обновления на этапе первого включения (OOBE) сделали обязательным, хочешь – не хочешь, а сиди и жди. Но с некоторых последних версий появилась возможность его пропустить. Ну классно же!
Тут вспоминается старая поговорка: гладко было на бумаге, да забыли про овраги…
В общем появилась у нас необходимость настроить и отдать заказчику некоторое количество Мини-ПК, которые из коробки идут с Windows 11. Процесс начальной установки обновлений на системах с N100 занимает примерно от 40 минут, до часа.
Каждый раз ждать? Тем более что сам процесс настройки несложен: установить NET 3.5, IIS, штатный набор ПО через Winget, драйвера торгового оборудования, платформу 1С и опубликовать базу на IIS. Работы от силы на полчаса, а то и меньше.
Ну так чего ждать? Пропустим, настроим, отдадим и пусть оно там уже само качает, благо настроить параметры обновления и перезагрузки во внерабочее время можно единственным файлом реестра.
Сказано – сделано, на втором Мини-ПК мы пропустили этап обновления и быстро занялись настройкой… Но не тут-то было…
Winget радостно сообщил нам, что msstore недоступен и поставить чего-то он может только из репозитория winget с явным указанием источника в команде. Т.е. все наши скрипты разом сломались.
Установка компонентов Windows (NET и IIS) зависла на нулевой отметке, без каких-либо признаков жизни.
Если перейти в Центр обновления Windows, то там видны нужные обновления, но все серое, везде 0%. Хотя в диспетчере задач явно обновления ставятся.
Но это полбеды, при перезагрузке система долго, очень долго начинает устанавливать обновления, потом перезагружается и начинает их откат. В итоге в системе все у вас начнется по новой.
Как быть? А никак, оставить ее в покое и дождаться пока она сама поставит все необходимые обновления. По сути, нажатие на Пропустить на этапе OOBE ничего не меняет и обновление будет автоматически запущено по фону при входе в систему, делая ее условно работоспособной.
Поэтому что пнем об сову, что сову об пень, разницы никакой. Времени вы не выиграете. Так что пусть обновляется так, как это и задумано – на этапе OOBE, а это время просто внесите в планирование работ.
🤔13😁5❤4🤡2
Вторая жизнь старого POS-терминала
В комментариях нас спрашивали, какая цель публикации базы 1С на мини-ПК. Поэтому расскажем об одной схеме, которая проверена и обкатана нами на реальной рознице в течении последнего года.
Начнем с проблемы. В рознице широко распространено использование специализированных ПК – POS-терминалов. Это специализированный моноблок с сенсорным экраном, максимально решающий задачи розницы.
Типовой POS-терминал последние годы представлял собой систему на классическом Intel J1900 или в более поздних моделях J3xxx/J4xxx, что для современной 1С с маркировкой уже недостаточно.
Да, можно купить новые POS-терминалы на N100, то стоимость одного такого терминала будет на уровне 50-60 тыс. руб., что может быть еще приемлемо в рамках одного магазина, но в рамках сети это уже серьезные расходы, тем более в наше непростое время.
Заменить на обычный ПК? Тоже не вариант, да и не живут обычные ПК долго на кассе, POS-терминалы не зря столько стоят, потому что кроме всего прочего они еще и «антивандальные». Плюс кассиры уже привыкли работать с сенсором, а если мы говорим про общепит, то там и не отвыкали.
Но с производительностью все плохо и надо что-то решать. Хорошим решением в данной ситуации будут мини-ПК, которые стоят недорого и предоставляют гораздо более высокий уровень производительности.
Для современной 1С будет достаточно моделей уровня N100, хотя в примерно в те же деньги вы можете купить и что-то более мощное, обычно на AMD.
Разместить такой мини-ПК можно в подсобном помещении или где-то в районе кассы так, чтобы к нему был доступ, но было затруднительно его сломать, уронить, завалить бумагами, пакетами и т.п.
На него ставится джентельменский набор ПO: платформа 1С, нужные торговые драйвера, например, для весов, служебные утилиты и поднимается веб-сервер. В Windows из коробки есть IIS, который отлично работает и используем мы именно его. После чего на этом мини-ПК публикуется база.
На POS-терминале меняем локальную базу на нашу веб-публикацию, при этом вам даже не придется перенастраивать торговое оборудование, так как оно подключается к рабочему месту, а оно в 1С не изменилось.
В результате сохраняем максимально привычное рабочее окружения кассира, но серьезно поднимаем вычислительные возможности кассы, там, где вчера все тормозило система начинает ну если не летать, то весьма быстро шевелится.
В результате все довольны, особенно бизнес, который решил проблему при достаточно малом уровне затрат.
В комментариях нас спрашивали, какая цель публикации базы 1С на мини-ПК. Поэтому расскажем об одной схеме, которая проверена и обкатана нами на реальной рознице в течении последнего года.
Начнем с проблемы. В рознице широко распространено использование специализированных ПК – POS-терминалов. Это специализированный моноблок с сенсорным экраном, максимально решающий задачи розницы.
Типовой POS-терминал последние годы представлял собой систему на классическом Intel J1900 или в более поздних моделях J3xxx/J4xxx, что для современной 1С с маркировкой уже недостаточно.
Да, можно купить новые POS-терминалы на N100, то стоимость одного такого терминала будет на уровне 50-60 тыс. руб., что может быть еще приемлемо в рамках одного магазина, но в рамках сети это уже серьезные расходы, тем более в наше непростое время.
Заменить на обычный ПК? Тоже не вариант, да и не живут обычные ПК долго на кассе, POS-терминалы не зря столько стоят, потому что кроме всего прочего они еще и «антивандальные». Плюс кассиры уже привыкли работать с сенсором, а если мы говорим про общепит, то там и не отвыкали.
Но с производительностью все плохо и надо что-то решать. Хорошим решением в данной ситуации будут мини-ПК, которые стоят недорого и предоставляют гораздо более высокий уровень производительности.
Для современной 1С будет достаточно моделей уровня N100, хотя в примерно в те же деньги вы можете купить и что-то более мощное, обычно на AMD.
Разместить такой мини-ПК можно в подсобном помещении или где-то в районе кассы так, чтобы к нему был доступ, но было затруднительно его сломать, уронить, завалить бумагами, пакетами и т.п.
На него ставится джентельменский набор ПO: платформа 1С, нужные торговые драйвера, например, для весов, служебные утилиты и поднимается веб-сервер. В Windows из коробки есть IIS, который отлично работает и используем мы именно его. После чего на этом мини-ПК публикуется база.
На POS-терминале меняем локальную базу на нашу веб-публикацию, при этом вам даже не придется перенастраивать торговое оборудование, так как оно подключается к рабочему месту, а оно в 1С не изменилось.
В результате сохраняем максимально привычное рабочее окружения кассира, но серьезно поднимаем вычислительные возможности кассы, там, где вчера все тормозило система начинает ну если не летать, то весьма быстро шевелится.
В результате все довольны, особенно бизнес, который решил проблему при достаточно малом уровне затрат.
1👍26🤝7🔥5❤2
Тонкое управление Windows Update
Автоматические обновления Windows способны серьезно отравлять жизнь как пользователей, так и системных администраторов обычно сваливаясь как снег на голову и приводя к перезагрузкам или тормозам в самый разгар рабочего времени.
Но и игнорировать обновления тоже не вариант, в современном мире это может приводить и приводит к самым печальным последствиям, обычно в виде очередной эпидемии какого-нибудь червя или трояна.
Поэтому данный вопрос следует поставить под контроль и максимально уложить его в заданные рамки, сделав доступным и предсказуемым. Для этого мы давно используем ряд настроек, которые удобнее всего применять в виде патча реестра.
Отдельное спасибо скажем нейросети, за то, что красиво отформатировала, упорядочила и прокомментировала наш файл:
В целом там все написано, но уточним одну деталь:
Используйте по собственному усмотрению, в ряде случаев разумнее поставить там
Также учтите, что современные системы игнорируют эту опцию, если обновление помечено как «критическое» или «безопасность», для предотвращения спонтанной перезагрузки в этом случае как раз и добавлен блок «дедлайнов».
Автоматические обновления Windows способны серьезно отравлять жизнь как пользователей, так и системных администраторов обычно сваливаясь как снег на голову и приводя к перезагрузкам или тормозам в самый разгар рабочего времени.
Но и игнорировать обновления тоже не вариант, в современном мире это может приводить и приводит к самым печальным последствиям, обычно в виде очередной эпидемии какого-нибудь червя или трояна.
Поэтому данный вопрос следует поставить под контроль и максимально уложить его в заданные рамки, сделав доступным и предсказуемым. Для этого мы давно используем ряд настроек, которые удобнее всего применять в виде патча реестра.
Отдельное спасибо скажем нейросети, за то, что красиво отформатировала, упорядочила и прокомментировала наш файл:
Windows Registry Editor Version 5.00
; =================================================================
; Настройка Windows Update: Контроль расписания, активных часов и перезагрузок
; =================================================================
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate]
; Включить управление активными часами (система не будет перезагружаться в этот период)
"SetActiveHours"=dword:00000001
; Установка активных часов: 09:00 - 23:00 (17 в hex = 23 в dec)
"ActiveHoursStart"=dword:00000009
"ActiveHoursEnd"=dword:00000017
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU]
; Включить автоматические обновления (0 = включено, 1 = отключено)
"NoAutoUpdate"=dword:00000000
; Вариант автоматизации: 4 = Автоматическая загрузка и установка по расписанию
"AUOptions"=dword:00000004
; Расписание установки: 0 = Каждый день
"ScheduledInstallDay"=dword:00000000
; Время установки по расписанию: 03:00 ночи
"ScheduledInstallTime"=dword:00000003
; Устанавливать еженедельно при наличии обновлений
"ScheduledInstallEveryWeek"=dword:00000001
; Исключить автоматическую перезагрузку, если в системе есть вошедшие пользователи
"NoAutoRebootWithLoggedOnUsers"=dword:00000001
; Отключение принудительного ребута по наступившему расписанию (требует реакции пользователя)
"AlwaysAutoRebootAtScheduledTime"=dword:00000000
; Не выполнять принудительный перезапуск до тех пор, пока пользователь не подтвердит уведомление
"OptionsForRebootNotifications"=dword:00000001
; =================================================================
; Настройка «Дедлайнов» (Защита от внезапных перезагрузок на новых сборках Win 10/11)
; =================================================================
; Включаем принудительное следование дедлайнам уведомлений, а не жестким ребутам
"ConfigureDeadlineNoAutoReboot"=dword:00000001
; Сколько дней дается пользователю на установку крупных обновлений (Feature Updates) до напоминания
"ConfigureDeadlineForFeatureUpdates"=dword:00000007
; Сколько дней дается на установку обновлений безопасности (Quality Updates) — обычно 2-7 дней
"ConfigureDeadlineForQualityUpdates"=dword:00000005
; Льготный период (Grace Period) — сколько дней система ждет ПОСЛЕ дедлайна, прежде чем
; начать настойчиво просить перезагрузку (но все еще в рамках Активных Часов!)
"ConfigureDeadlineGracePeriod"=dword:00000002
В целом там все написано, но уточним одну деталь:
"NoAutoRebootWithLoggedOnUsers"=dword:00000001
Используйте по собственному усмотрению, в ряде случаев разумнее поставить там
dword:00000000, что наоборот обеспечит автоматическую перезагрузку за пределами рабочего времени. Также учтите, что современные системы игнорируют эту опцию, если обновление помечено как «критическое» или «безопасность», для предотвращения спонтанной перезагрузки в этом случае как раз и добавлен блок «дедлайнов».
🤝19👍13❤1
Как убрать это окно?
Все просто, но не все ищут простые пути. Открываем приложение Параметры, переходим в Система → Уведомления и прокручиваем в самый низ до пункта Дополнительные параметры, затем просто снимаем галочку Предложить способы завершения настройки этого устройства для наиболее эффективного использования Windows.
Заодно можно и советы с подсказками выключить, чтобы не надоедали.
Либо, если надо быстро и массово, через правку реестра, проще всего это сделать при помощи команды PowerShell:
Но, в отличие от первого способа, для того чтобы изменения вступили в силу вам придется перезагрузить компьютер или выйти и повторно войти в систему.
Все просто, но не все ищут простые пути. Открываем приложение Параметры, переходим в Система → Уведомления и прокручиваем в самый низ до пункта Дополнительные параметры, затем просто снимаем галочку Предложить способы завершения настройки этого устройства для наиболее эффективного использования Windows.
Заодно можно и советы с подсказками выключить, чтобы не надоедали.
Либо, если надо быстро и массово, через правку реестра, проще всего это сделать при помощи команды PowerShell:
New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\UserProfileEngagement" -Name "ScoobeSystemSettingEnabled" -PropertyType DWord -Value 0 -Force
Но, в отличие от первого способа, для того чтобы изменения вступили в силу вам придется перезагрузить компьютер или выйти и повторно войти в систему.
10👍34🔥7❤2🤮1