<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>60924</bug_id>
          
          <creation_ts>2026-10-12 19:04:58 +0300</creation_ts>
          <short_desc>Предложение: aprutil1: вынести runtime-DSO драйвера DBM apr_dbm_lmdb-1.so из libaprutil1-devel в runtime-пакет</short_desc>
          <delta_ts>2026-10-12 19:10:50 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>aprutil1</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=44191</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Artem Varaksa">varaksaaa</reporter>
          <assigned_to name="Anton Farygin">rider</assigned_to>
          <cc>rider</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>301859</commentid>
    <comment_count>0</comment_count>
    <who name="Artem Varaksa">varaksaaa</who>
    <bug_when>2026-10-12 19:04:58 +0300</bug_when>
    <thetext>Пакет aprutil1 во всех ветках (p10: 1.6.3-alt4, p11: 1.6.4-alt1, sisyphus: 1.6.5-alt1) собирается с `--with-dbm=lmdb`. Runtime-файл — DSO драйвера DBM — `/usr/lib64/apr-util-1/apr_dbm_lmdb-1.so` упакован **только** в пакет `libaprutil1-devel`:

```
%files -n libaprutil1-devel: %_libdir/apr-util-%aprver/apr_dbm_lmdb*
```

При этом это именно runtime-файл: DBM API apr-util (`apr_dbm_open_ex()`) загружает драйвер через `dlopen()` в момент вызова — в `libaprutil-1.so.0` встроены строки с каталогом `/usr/lib64/apr-util-1` и шаблоном имени драйвера `apr_dbm_%s-1.so` (драйвер `lmdb`). В результате на любой системе, где не установлен `libaprutil1-devel`, все потребители `apr_dbm*()` не могут загрузить драйвер.

## Конкретное проявление: gvfs-tests (класс Dav, режим root)

Тестовый набор gvfs (test/gvfs-test) генерирует конфигурацию Apache с директивой `DAVLockDB DAVLock`. При включённой базе блокировок **каждая DAV-операция записи** (COPY/PUT/MKCOL/MOVE) перед выполнением проверяет блокировки исходного ресурса, т.е. открывает lock DB через `apr_dbm_open_ex()`; операции чтения (GET/PROPFIND) к базе блокировок не обращаются. На тестовой системе без `libaprutil1-devel` все записи завершаются HTTP 500, в error_log Apache:

```
[dav_fs:crit] (20019)DSO load failed: AH00576: The DBM driver could not be loaded
[dav:error] The locks could not be queried for verification against a possible &quot;If:&quot; header.  [500, #0]
[dav:error] Could not open the lock database.  [500, #400]
[dav:error] (20019)DSO load failed: Could not open database.  [500, #1]
[dav:error] Could not COPY /public/hello.txt due to a failed precondition on the source (e.g. locks).  [500, #0]
```

```
&gt; COPY /secret/restricted.txt HTTP/1.1
&lt; HTTP/1.1 500 Internal Server Error
AssertionError: 1 != 0 : gio: dav://localhost:8088/secret/restricted.txt: HTTP Error: Internal Server Error
```

Все 4 теста Dav (test_http_auth, test_http_noauth, test_https_auth, test_https_noauth) падают одинаково — и для `dav://`, и для `davs://`, и для анонимного, и для аутентифицированного доступа.

Проблема не только в тестах: любой реальный Apache 2.4 с `mod_dav` и `DAVLockDB` (WebDAV-сервер с поддержкой блокировок) на системе без `libaprutil1-devel` будет возвращать 500 на все записи.

## Проверенный результат установки пакета

После установки `libaprutil1-devel` (1.6.5-alt1, sisyphus) файл `/usr/lib64/apr-util-1/apr_dbm_lmdb-1.so` появляется, все 4 теста Dav проходят; повторный прогон полного набора: `Ran 31, FAILED (failures=3, skipped=13)` — оставшиеся падения не связаны с этим багом (см. 44191).

## Предложение

Вынести runtime-DSO драйвера DBM из `libaprutil1-devel` в пакет `libaprutil1` (либо в отдельный runtime-подпакет с корректными Requires из `libaprutil1`/`apache2`), пока файл не находится в Development-пакете — любой потребитель `apr_dbm()` на минимальной системе не работает.

## Шаги воспроизведения (через gvfs-tests, root)

1. Минимальная система с `apache2`, `apache2-mod_ssl`, `apache2-httpd-prefork`, `gvfs-tests` (без `libaprutil1-devel`)
2. Запустить тестовый набор от root: `/usr/libexec/gvfs/installed-tests/gvfs/gvfs-test`
3. Все 4 теста Dav падают с HTTP 500 на DAV-записях

(Минимальная ручная альтернатива: конфигурация Apache с `DAV on` + `DAVLockDB` и любая DAV-запись, например `gio copy` в `dav://`-монтирование.)

## Версии (проверено по RDB, октябрь 2026)

- aprutil1 (source): p10 1.6.3-alt4, p11 1.6.4-alt1, sisyphus 1.6.5-alt1
- libaprutil1-devel: p10 1.6.3-alt4, p11 1.6.4-alt1, sisyphus 1.6.5-alt1
- gvfs: p10 1.48.2-alt1, p11 1.57.2-alt1 (задание 435928: 1.58.5-alt1), sisyphus 1.62.0-alt1
- apache2: p10 2.4.68-alt1, p11 2.4.69-alt1, sisyphus 2.4.69-alt1</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>