LINUX.ORG.RU

Сообщения Xintrea

 

Что означает слово Policy в утилите Apt?

По неизвестной причине, ни в команде man apt, ни в команде apt help нет описания опции policy (зато есть коровья СУПЕРСИЛА, ведь она куда важнее документации утилиты, которая управляет всеми файлами программ в системе).

И вот я вижу следующую команду:

apt policy linux-headers-generic

и даже не могу понять что она делает то. Что она означает? «Политика» - на что? «Стратегия» - чего? «Курс» - куда? «Полис» - зачем?

Вроде как эта команда то ли управляет, то ли только показывает какие-то параметры пакетов. Но подробностей найти не смог. Для просмотра информации о пакетах официально существуют опции list и show.

Что подразумевается под этой политикой/стратегией и для чего она нужна?

 , , ,

Xintrea
()

Зачем нужны круглые скобки ( EXPRESSION ) в утилите test?

В документации на утилиту test написано:

SYNOPSIS
       test EXPRESSION
       test
       [ EXPRESSION ]
       [ ]
       [ OPTION

DESCRIPTION
       Exit with the status determined by EXPRESSION.

       --help display this help and exit

       --version
              output version information and exit

       An  omitted  EXPRESSION  defaults  to false.  Otherwise, EXPRESSION is true or false 
       and sets exit status.  It is one of:

       ( EXPRESSION )
              EXPRESSION is true

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

А если будут составные условия (-o, -a) то тогда нужно писать каждое выражение в круглых скобках или нет?

 , , ,

Xintrea
()

PulseAudio все еще не готов для десктопа

Установил себе небезызвестный SunVox, думаю, щас поковыряюсь с трекерной музыкой в современной программе. Как я измучился... Все пердит, заикается, проигрывается с неправильной скоростью. Затяжные периоды глюков самопроизвольно меняются на несколько минутные периоды стабильности, после чего опять пердеж и заикания...

Написал на официальный форум, и мне ответили:

https://warmplace.ru/forum/viewtopic.php?f=12&t=6298

Как бы я не ожидал другого услышать, но блин так обидно, что в Линупсе до сих пор нет просто работающего звукового стека.

 , ,

Xintrea
()

Как создать многопоточную нагрузку на проц стандартными средствами Linux?

Мне нужно создать такую нагрузку на процессор, чтобы один процесс создал кучу потоков на все ядра микропроцессора, и htop показал число ~800% для 8-ми поточного процессора.

Пока что придумал команду:

while true; do dd if=/dev/urandom count=10M bs=1 | xz -9 -T8 > /dev/null ; done
Но эта команда не создает нагрузки более ~118%.

Что еще можно придумать?

 , , ,

Xintrea
()

После разлогирования пользователя через pkill, не работает вход в систему

Система: Debian GNU/Linux 11 Stable, LXDE.

Выгоняю пользователя из графической сессии командой:

pkill -u username
Вроде все хорошо: сессия завершается, появляется окно ввода логина-пароля.

Поля ввода в этом окне рабочие. Но после ввода логина-пароля, ничего не происходит, новая сессия не открывается. Никаким пользователем зайти невозможно, можно только переключиться в консоль Alt+F1, зайти рутом и перезагрузить компьютер. После перезагрузки вход пользователей снова работает.

Почему так происходит? Как исправить?

 ,

Xintrea
()

Как в Ansible отфильтровать список в with_items ?

У меня имеется список репозитариев, который сделан примерно так:

gitRepos
- [ true,  "doxygen_documentation.git", "master", "doxygen_doc"  ]
- [ false, "idk.git",                   "qt5",    "idk"          ]
- [ true,  "binke.git",                 "master", "binke_plugin" ]
...

Чтобы делать действия с репозитариями, используется with_items по данному списку. Раньше в этом списке не было первого столбца true/false, и действия выполнялись для всех элементов списка gitRepos:
- name: Создание/обновление репозитариев
  git: repo="{{ item[nRepoNetworkPath] }}" dest="{{ gitReposPath }}/{{ item[nDirectoryName] }}"
  with_items:
  - "{{ gitRepos }}"

Теперь появился первый столбец, и в with_items надо прописать фильтр, который уберет строки, в которых первый элемент равен false. Условие when использовать нежелательно, так как в нем используются условия по другим переменным, и будет очень заморочено.

Но я читаю документацию:

https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_filters.html

И не вижу там возможности фильтровать/преобразовывать список так, чтобы в нем исключить элементы по условию. Как это можно сделать?

 ,

Xintrea
()

Как в GCC выяснить, какие языки он поддерживает?

Не могу найти опцию, которая бы показала перечень имен «модулей», которые отвечают за разные языки.

Ну, то есть, надо узнать перечень языков в том виде, которые обозначаются термином program в опции -print-prog-name.

Опытным путем найдены обозначения:

  • cc1plus - язык Си++
  • cpp - язык Си (видимо, как-то связано с аббревиатурой C Pre Processor)

А как узнать у gcc, какие еще языки поддерживает текущая инсталляция gcc?

 

Xintrea
()

Как сделать вычислимую переменную в /group_vars/all.yml в зависимости от os.path.isdir() ?

В jinja - шаблонах нельзя использовать привычные методы стандартных Python-модулей, например os.path.isdir(...). Вместо этого предлагается выполнить задачу с модулем stat, в ней вычислить значение, а потом его использовать:

https://stackoverflow.com/questions/43522337/defining-os-path-in-ansible-jinj...

А как тогда установить значение переменной в файле /group_vars/all.yml в зависимости от результата работы stat? Ведь синтаксис этого файла не предполагает исполнение задачи, и в нем только устанавливаются значения переменных?



Перемещено hobbit из general

 ,

Xintrea
()

Почему grep не фильтрует сообщения dd?

Даю такую команду:

$ dd if=/dev/zero count=10000 bs=50000 of=/tmp/zero.bin | grep 10000
10000+0 записей получено
10000+0 записей отправлено
500000000 байт (500 MB, 477 MiB) скопирован, 5,00764 s, 99,8 MB/s
И ожидаю что третьей строки не будет видно, она же не попадает под выражение в grep.

Но третья строка все равно выводится в консоль.

Почему?

 , , , ,

Xintrea
()

Почему systemctl list-units не показывает сервис ntp, хотя он есть?

Обычно чтобы понять, какие сервисы есть в системе, я всегда пользовался командой:

systemctl list-units --all

Но сейчас выяснилось, что эта команда показывает не все сервисы. Например, она не покажет сервис ntp, хотя он существует:
systemctl status ntp
● ntp.service - LSB: Start NTP daemon
   Loaded: loaded (/etc/init.d/ntp; generated; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)

Почему полный список юнитов не отображает все юниты? Чем юнит ntp так отличается от других?

 , systemctp, ,

Xintrea
()

Восстановить работу gitweb. Случайно грохнул /etc/apache2/conf-enabled/gitweb.conf

Пришел сегодня ранёхонько, стал ремонтировать вот это: Apache показывает ошибку 403 на некоторых файлах

Увидел, что в файле /etc/apache2/conf-enabled/gitweb.conf кривоватенькая регулярка, которая, видимо, отвечала за доступ/обработку dot-каталогов ".git" или что-то в этом роде (сервер настраивал не я). Чтобы проверить, что проблема в Apache-модуле gitweb, решил его временно отключить. И вместо того чтоб удалить линк в /conf-enabled, спросоня удалил основной файл в /conf-available.

Отключить раздел чтоб восстановить файл не могу, на сервере куча всего крутится. Поэтому восстановил файл из пакета. И теперь его надо настроить «как было».

По-дефолту он выглядит так:

<IfModule mod_alias.c>
  <IfModule mod_mime.c>
    <IfModule mod_cgi.c>
      Define ENABLE_GITWEB
    </IfModule>
    <IfModule mod_cgid.c>
      Define ENABLE_GITWEB
    </IfModule>
  </IfModule>
</IfModule>

<IfDefine ENABLE_GITWEB>
  Alias /gitweb /usr/share/gitweb

  <Directory /usr/share/gitweb>
    Options +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi
  </Directory>
</IfDefine>


Единственное что я помнил, что репозитарии размещены в каталоге /home/git (этот каталог так же прописан и в /etc/gitweb.conf). А обращение к главной странице в браузере должно происходить по наш_домен/git. Поэтому я подправил настройки:
<IfDefine ENABLE_GITWEB>
  Alias /git /home/git

  <Directory /home/git>
    Options +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi
  </Directory>
</IfDefine>

Перезапускаю Apache2 (версия 2.4, вестимо). И получаю 403 ошибку:
Forbidden
You don't have permission to access this resource.

В общем, судорошно соображал что как крутить, курил логи, не одмин я совсем, Апач лет десять назад запускал... Наконец заставил работать веб-морду. Конфиг получился такой:
<IfDefine ENABLE_GITWEB>

  # Turning on mod rewrite
  RewriteEngine on

  # Make the front page an internal rewrite to the gitweb script
  RewriteRule ^/git/$  /cgi-bin/gitweb.cgi [L,PT]

  # Make access for "dumb clients" work
  RewriteRule ^/git/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /cgi-bin/gitweb.cgi%{REQUEST_URI}  [L,PT]

  Alias /git /home/git
  <Directory /home/git>
    Options +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi

    Require all granted

    # DirectoryIndex gitweb.cgi
    DirectoryIndex /cgi-bin/gitweb.cgi

  </Directory>
</IfDefine>

Но теперь осталась проблема: недоступны ресурсы типа картинок, js-файлов и css-сок. Например, запросы:

http://наш_сервер/git/static/gitweb.css
http://наш_сервер/git/static/gitweb.js

Возвращают ошибку 404.

Вопрос: Как докрутить конфиг, чтобы эти ресурсы стали доступны?

 , gitweb, ,

Xintrea
()

Apache показывает ошибку 403 на некоторых файлах

Привет, народ.

Имеется репозитарий, который выложен на HTTP сервере. Проблема в том, что некоторые файлы Apache не отдает с ошибкой 403. Например:

http://192.168.10.251/astra_rep/se17devupdate2/pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb

http://192.168.10.251/astra_rep/se17devupdate2/pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb

Первый файл, с более длинным именем и путем - отдается. А второй файл, с более коротким именем и путем - нет. Какая-то дичь. Я не могу понять почему. Наткнулся на это ошибку из-за того, что apt-get install не мог получить именно второй пакет:
Ошб:1 http://192.168.10.251/astra_rep/se17devupdate2 1.7_x86-64/main amd64 linux-firmware all 20220329.git681281e4-0ubuntu1+ci202207182106+astra2
  403  Forbidden [IP: 192.168.10.251 80]
E: Не удалось получить http://192.168.10.251/astra_rep/se17devupdate2/pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb  403  Forbidden [IP: 192.168.10.251 80]
E: Не удалось получить некоторые архивы; возможно, нужно запустить apt-get update или попытаться повторить запуск с ключом --fix-missing?
Чтение списков пакетов… Готово

Вот как происходит получение файлов через wget (первый - нормально, второй - с ошибкой):
$ wget "http://192.168.10.251/astra_rep/se17devupdate2/pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb"
--2022-11-17 16:39:46--  http://192.168.10.251/astra_rep/se17devupdate2/pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb
Подключение к 192.168.10.251:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 1613088 (1,5M) [application/x-debian-package]
Сохранение в: «libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci20220704
1218+astra4_all.deb»
libreoffice-wiki-publisher_1.2.0+L 100%[=============================================================>]   1,54M  --.-KB/s    in 0,1s
2022-11-17 16:39:46 (11,9 MB/s) - «libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb» сохранён [1613088/1613088]

$ wget "http://192.168.10.251/astra_rep/se17devupdate2/pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb"
--2022-11-17 16:39:56--  http://192.168.10.251/astra_rep/se17devupdate2/pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb
Подключение к 192.168.10.251:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 403 Forbidden
2022-11-17 16:39:56 ОШИБКА 403: Forbidden.


Я проверил, файл linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb существует, путь правильный.

Права на файлы идентичные:
$ ls -l ./pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb
-rw-r--r-- 1 security security 1613088 сен 29 14:06 ./pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb

$ ls -l ./pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb
-rw-r--r-- 1 security security 214471224 сен 29 14:04 ./pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb


Права на дикретории идентичные:
$ ls -l ./pool/main/libr | grep "libreoffice$"
drwxr-xr-x 2 security security 16384 окт  4 20:13 libreoffice

$ ls -l ./pool/main/l | grep "linux-firmware$"
drwxr-xr-x 2 security security 4096 окт  4 20:12 linux-firmware


Но почему-то один файл отдается, второй - нет. Что еще и где надо проверить, чтобы понять почему Apache на этом файле спотыкается?

 , , ,

Xintrea
()

Посоветуйте монитор 1920x1200, аналог HP Z24n G2

Нынче нет в продаже моников HP Z24n G2. В свое время не купил, теперь найти не могу. В DNS есть HP Z24n G4, но у него вертикальное разрешение меньше - 1920x1080.

Основные требования:

- разрешение 1920x1200
- матрица IPS
- управление подсветкой по току, а не ШИМ, чтобы не мерцало
- желательно (но не критично) наличие разъема DVI

Или подскажите где можно купить именно модель HP Z24n G2. Чтобы можно было прийти, открыть коробку, включить, проверить наличие битых пикселей, и только потом взять. А то по почте пришлют с матрицей на которой 3 пикселя будут гореть на постоянку, и менять не будут, типа это допустимо. Локация СПБ.

 , ,

Xintrea
()

Непонятки с репозитариями Astra Linux

Привет, народ.

Имеется вот такая страница в официальной Astra Linux Wiki:

https://wiki.astralinux.ru/pages/viewpage.action?pageId=158598882

На этой странице имеются http-ссылки на репозитарии и прочие ресурсы, например такие:

https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/
https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.1/iso/

Проблема в том, что эти ссылки не существуют в реальности, везде ошибка 404. Мы написали в техподдержку, что в данной статье некорректные ссылки. Вот какой ответ получили, в три абзаца, абзацы я пронумеровал:

1. Согласно информации из приложенной статьи ссылки репозиториев не должны быть доступны для Astra Linux Special Edition.

2. Доступность по протоколам HTTPS и HTTP обеспечивает доступность всех файлов репозитория по прямым ссылкам, что позволяет использовать для установки и обновления пакетов из этих репозиториев стандартные программы.

3. Помимо доступности протоколов HTTPS и HTTP для того, чтобы было возможно открыть ссылку в браузере и просмотреть содержимое репозитория так, как это делается в файловом менеджере, в репозитории должна быть включена автоматическая индексация содержимого (autoindex). Автоматическая индексация поддерживается в репозиториях Astra Linux Common Edition и не поддерживается в репозиториях Astra Linux Special Edition.



И я ничего не могу понять из этой белиберды.

Абзац 1 - с чего бы ссылки репозитариев «не должны быть доступны для Astra Linux Special Edition»? Ссылки вообще-то доступны кому угодно у кого есть интернет. Что значит недоступны для Astra Linux SE? Что они хотели сказать этим предложением?

Абзац 2 и 3 техподдержка тупо скопировала в разделе Протоколы передачи интернет-репозиториев Astra Linux с той же страницы официальной Wiki.

Вопрос: у нас возникло предположение, что это значит, что веб-сервер настроен так, что он не отдает HTML-представление списка файлов при запросе директорий, относящихся к 1.7. Но должен отдавать файлы если они запрашиваются напрямую.

Чтобы проверить это предположение, я проверил ссылки на файлы:

https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/Release
https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/Release.gpg
https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/binary-amd64/Packages.gz
https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/binary-amd64/Release

https://dl.astralinux.ru/astra/stable/1.7_x86-64/main/Release
https://dl.astralinux.ru/astra/stable/1.7_x86-64/main/Release.gpg
https://dl.astralinux.ru/astra/stable/1.7_x86-64/main/binary-amd64/Packages.gz
https://dl.astralinux.ru/astra/stable/1.7_x86-64/main/binary-amd64/Release

Но все они возвращают 404. Может я неправильно предположил какие файлы могут быть. А может быть, путь, начинающийся с https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/... действительно не существует. Как это можно однозначно проверить?



Перемещено hobbit из general

 , , ,

Xintrea
()

15 лет без кулхацкеров: наконец-то кто-то засунул троян. Но как?

Имею старенький сайто с 9-м Debian Linux и nginx + php-fpm. Сайт самописный, не имеет всяких wordpress-сов или jooml-ов. Фреймверк - Codeigniter-2. Из стороннего - имеется форум punBB 1.4.6 с самодельной капчей.

Обнаружил случайно, что 27 октября 2022 в /tmp каталоге сайта каким-то образом оказался интересный файл с именем phphaATEM. Пользователь и группа у него www-data.

Вот что про него сказал trendmicro посредством virustotal:

https://www.trendmicro.com/vinfo/us/threat-encyclopedia/malware/Backdoor.PHP....

Свеженькая хреновина, от October 18, 2022.

Посмотрел access-лог по времени создания файла, там ничего сверхестественного не увидел, сплошные GET-запросы, один POST-запрос какого-то робота:

https://pastebin.com/raw/8Cuh755E

Я расковырял всякие обфускации, достал PHP-шный код. Оказалось что это кулхацкерская консоль управления файлами через WEB. Никаких ссылок в коде не обнаружил, деструктивного кода тоже. Вот собственно сам код:

https://hastebin.com/qujigumadu.php

Я его даже скопировал в каталог web-сервера и зашел на эту страницу. Открылась web-консоль. Ну консоль как консоль: управление файлами, запуск шелл-команд, информация о хосте, прочие дополнительные инструменты.

Собственно, вопрос: как понять, каким макаром эта штука оказалась на хосте? Что нужно донастроить, чтоб убрать дырку? Обновиться до Debian 11 не могу, потому что в нем уже PHP5 нет, а код весьма старый.

Вопрос второй - а можно ли узнать, смогли ли этой консолью воспользоваться? Я посмотрел логи - нигде доступа к /tmp или phpha* нет. Файлы самого сайта вроде как нетронутые.

 , ,

Xintrea
()

Почему не создаются каталоги из DEBIAN/dirs?

Создаю deb-пакет через dpkg-deb.

В каталоге исходных файлов deb-пакета имеется файл ./DEBIAN/dirs.

В нем прописан каталог:

/var/log/ourProgramm

Однако данный каталог не создается при установке пакета. Я конечно могу прописать создание каталога в postinst, но непонятно почему он автоматически не создается?

 , , dpkg-deb,

Xintrea
()

Ошибка CMake Error: The following variables are used in this project, but they are set to NOTFOUND.

Пытаюсь собрать far2l (https://github.com/elfmz/far2l/), и получаю следующую ошибку cmake:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
/home/xi/work/develop/cpp/far2l/colorer/XERCESC_INCLUDE_DIR
   used as include directory in directory /home/xi/work/develop/cpp/far2l/colorer
/home/xi/work/develop/cpp/far2l/colorer/src/Colorer-library/src/XERCESC_INCLUDE_DIR
   used as include directory in directory /home/xi/work/develop/cpp/far2l/colorer/src/Colorer-library/src

-- Generating done
CMake Generate step failed.  Build files cannot be regenerated correctly.

Искал-искал в тыртырнете как можно исправить, ничего не понял, внятных объяснений из-за чего она и что с ней делать не нашел. Как исправить?

 , ,

Xintrea
()

Как увидеть лог в старом PHP-проекте? Не помню где лог-файл... Не вижу лога ошибок...

Имеется старый рабочий проект, назовем его my-site.ru, написанный на Codeigniter 2. Он крутится на VPS под PHP 5.6. Используется nginx + php5-fpm. Система Debian Linux 9.

Я сделал минимальный контроллер, и он работает. Затем я создаю в нем ошибку:

./ci_application/controllers/hello.php

<?php
  itIsErrorString
  echo "Hello Codeigniter";
  // phpinfo();
?>

Явно тут парсер должен выдавать в лог ошибку типа:
PHP Parse error:  syntax error, unexpected 'echo' (T_ECHO) in .../ci_application/controllers/hello.php on line 3

И куда-то эту ошибку он должен писать. Но я не могу найти лог-файла с ошибкой!

В файле /etc/php5/fpm/php.ini стоит опция:
log_errors = On

Там же я ставил error_log = syslog (и перегружал nginx и php5-fpm) чтобы гарантированно увидеть ошибку в сислоге /var/log/syslog, но нет, туда ошибка не попадает.

В лог-файле самого Codeigniter тоже нет ошибок. В конфиге Codeigniter-а уровень ошибок 1 (1 = Error Messages including PHP errors):
$config['log_threshold'] = 1;


То есть, ошибки должны логироваться.

Я проверял файлы:

/var/log/php5-fpm.log
/var/log/syslog
/var/log/messages
/var/log/debug
/var/log/nginx/error.log
/var/www/my-site.ru/log/* - это каталог лога Codeigniter

Нигде ошибок скрипта не вижу.

Где блин еще искать лог?


Если это важно, вот выхлоп phpinfo() в браузере: https://hastebin.com/raw/wazayuluxi

 , , ,

Xintrea
()

Как добавить данные в БД только если БД пустая?

База данных PostgreSQL 9.6.

Имеется две SQL-команды.

Первая создает таблицу в БД только если такой таблицы еще нет (if not exists):

create table roles if not exists (
 id serial primary key,
 name varchar(20)
); 


Вторая должна добавлять данные в эту таблицу только, если таблица пустая. Вот заготовка для такой команды:
insert into roles (name) values
 ('user'),
 ('security'),
 ('admin');

Вопрос: как можно доработать эту команду, чтобы добавление произошло только если в таблице ничего нет? Видимо, можно получить COUNT() на SELECT, но как сравнить значение COUNT() с нулем, и если ноль - то выполнить команду? Возможно ли такое сделать только лишь синтаксисом SQL?

 ,

Xintrea
()

Как организовать выполнение временных SQL-скриптов при инсталляции DEB-пакета?

Делаю самосборный DEB-пакет.

Имеется несколько SQL-скриптов, которые должны выполниться в момент инсталляции DEB-пакета, но после инсталляции нигде в системе не болтаться.

Понятно, что их вызов должен происходит в скрипте DEBIAN/postinst. Но непонятно где и как разместить сами эти скрипты.

Вот здесь написано следующее:

https://unix.stackexchange.com/questions/711654/setting-up-a-postinst-to-run-...

If sqlfile.sql is a temporary file, then install it to /usr/lib/mypkg/sqlfile.sql and use it from there in your postinst:

mysql ... < /usr/lib/mypkg/sqlfile.sql

Хм, но тогда файлы останутся в системе в каталоге /usr/lib/mypkg.

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

Как поступают в таких случаях?

 , postinst,

Xintrea
()

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