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

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

    <bug>
          <bug_id>49730</bug_id>
          
          <creation_ts>2024-03-19 10:42:01 +0300</creation_ts>
          <short_desc>Предоставлять /usr/bin/7z и p7zip, чтобы заменить устаревший p7zip</short_desc>
          <delta_ts>2026-10-14 22:31:48 +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>7-zip</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32096</blocked>
    
    <blocked>32097</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Vitaly Lipatov">lav</reporter>
          <assigned_to name="Vitaly Lipatov">lav</assigned_to>
          <cc>george</cc>
    
    <cc>lav</cc>
    
    <cc>mike</cc>
          
          <qa_contact name="Vitaly Lipatov">lav</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>243173</commentid>
    <comment_count>0</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2024-03-19 10:42:01 +0300</bug_when>
    <thetext>При тестировании p7zip для принятия в p10 выяснилось, что от него зависит по сборке много пакетов. Желательно от этого избавиться в пользу универсальности или /usr/bin/7zz (7-zip), поскольку p7zip это неофициальный порт.

Количество зависимых (по сборке) пакетов: 86

ArxLibertatis-1.2-alt1.20200607.1
GMT-6.1.1-alt1_1
GraphicsMagick-1.3.36-alt1.1
ale-0.9.0.3-alt9
altquire-0.1.2-alt1
android-tools-10.0.0-alt2.r36
anyservice-1.6-alt1
appinstall-1.4.3-alt1
arcclock-1.2-alt1
ceph-17.2.7-alt1
checkduplicatelibrarysymbols-0.2-alt1
conky-manager-2.4-alt1
cuneiform-1.1.0-alt5
darktable-4.2.1-alt0.P10.1
dc3dd-7.2.646-alt1_9
devscripts-2.19.7-alt2
dvdauthor-0.7.2-alt4
eaglemode-0.95.0-alt1
ecryptomgr-0.9.3-alt1
eepm-3.57.6-alt1
erc-0.9.5-alt1
eterbackup-1.9-alt1
etercifs-5.6.0-alt1
etersoft-build-utils-3.0.11-alt1
far2l-2.5.3-alt1
faust-0.9.90-alt4
featherpad-0.18.0-alt1
file-roller-3.40.0-alt1
font-manager-0.8.7-alt1
fudgefont-1.4-alt1_3
giter-1.15-alt1
gluegen2-2.3.2-alt2_11jpp8
gmic-2.9.9-alt2
gnome3-40.0-alt2
inkscape-1.2.2-alt2
kde5-ark-23.08.4-alt2
kde5-set-23.08.3-alt1
korinf-2.3.0-alt1
libxine2-1.2.9-alt3
lua5.1-module-basexx-0.4.1-alt2
lua5.1-module-binaryheap-0.4-alt1
lua5.1-module-bit32-5.3.0-alt1
lua5.1-module-compat53-0.7-alt2
lua5.1-module-cqueues-20200726-alt1
lua5.1-module-fifo-0.2-alt1
lua5.1-module-http-0.3-alt1
lua5.1-module-lpeg-1.0.2-alt1_lr1
lua5.1-module-lpeg_patterns-0.5-alt1
lua5.1-module-luafilesystem-1.7.0-alt1_lr2
lua5.1-module-luaossl-20190731-alt1
lua5.1-module-luasocket-3.0rc1-alt4_lr2
lua5.1-module-mmdblua-0.2-alt1
lua5.1-module-psl-0.3-alt1
lua5.3-luarocks-2.4.2-alt7
lua5.3-module-lpeg-1.0.2-alt1_lr1
lua5.3-module-luaexpat-1.3.0-alt1
lua5.3-module-luafilesystem-1.7.0-alt1_lr2
lua5.3-module-luasec-0.8-alt1_lr1
lua5.3-module-luasocket-3.0rc1-alt4_lr2
mate-1.26.0-alt2
mate-file-archiver-1.26.1-alt1
mate-file-manager-actions-ark-2-alt1
megapixels-1.5.2-alt1.git7741389
octave-7.3.0-alt2
pdf2djvu-0.9.19-alt2
photoflare-1.6.5-alt1
php7-gmagick-2.0.6-alt3.33.rc1
php8.0-gmagick-2.0.6-alt3.30.rc1
php8.1-gmagick-2.0.6-alt3.27.rc1
php8.2-gmagick-2.0.6-alt3.16.rc1
quilt-0.66-alt2
ranger-1.9.3-alt1
razodrant-0.3-alt1
rocksndiamonds-contributions-1.2.0-alt2
rocksndiamonds-emc-2.0.0-alt3
rx-etersoft-1.4.5-alt1
scrcpy-1.21-alt1
scribus-1.5.8-alt2
slade-3.2.4-alt1
springlobby-0.271-alt1_1
springrts-105.0-alt1.1
task-edu-1.5.9-alt12
trikStudio-2022.2-alt1
usermode-fs-tools-1.3-alt1
vdr-2.2.0-alt9
woeusb-5.1.2-alt1

Использование p7zip в Сизифе немного короче:
$ epm wd --short p7zip
 $ apt-cache whatdepends p7zip
usermode-isofs-tools
razodrant
python3-module-ranger
quilt
p7zip-devel
eepm-repack
woeusb
p7zip-standalone
mate-file-archiver
lua5.4-luarocks
lua5.3-luarocks
lua5.1-luarocks
kde5-ark
file-roller
far2l
deepin-compressor
conky-manager
ArxLibertatis
flatpak-builder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282880</commentid>
    <comment_count>1</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2026-02-27 17:11:32 +0300</bug_when>
    <thetext>Поскольку отказаться от использования в такой куче пакетов нереально, надо предоставить бесшовную замену, добавив в 7-zip предоставление p7zip.

Некоторые нюансы:

Некоторые пакеты зависят от /usr/bin/7z, потребуется симлинк
Для зависящих от пакета p7zip (по имени) нужен Provides: p7zip
p7zip-standalone (7za) — от него никто не зависит, можно безболезненно убрать.

Что нужно в спеке 7-zip:

  Provides: p7zip = %version-%release
  Obsoletes: p7zip &lt; 25
  Provides: p7zip-standalone = %version-%release
  Obsoletes: p7zip-standalone &lt; 25

И в %install:
  ln -s 7zz %buildroot%_bindir/7z
  ln -s 7zz %buildroot%_bindir/7za</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282882</commentid>
    <comment_count>2</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2026-02-27 17:14:32 +0300</bug_when>
    <thetext>Форматы, которые остались только в p7zip (через плагин Rar.so):
lz4, lz5, lizard, lzip — дополнительные компрессоры (патчи p7zip-project, не от Pavlov)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282885</commentid>
    <comment_count>3</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2026-02-27 17:59:06 +0300</bug_when>
    <thetext>https://git.altlinux.org/tasks/409483/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283066</commentid>
    <comment_count>4</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2026-03-03 12:10:16 +0300</bug_when>
    <thetext>7-zip-26.00-alt2 -&gt; sisyphus:

Fri Feb 27 2026 Vitaly Lipatov &lt;lav@altlinux.ru&gt; 26.00-alt2
- Add /usr/bin/7z, /usr/bin/7za and provide p7zip (ALT bug 49730)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302427</commentid>
    <comment_count>5</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2026-10-14 17:13:31 +0300</bug_when>
    <thetext>Переоткрываем: замена p7zip через симлинки 7z/7za -&gt; 7zz оказалась не полностью совместимой по CLI.

В bug #60427 создание ZIP/7z в Engrampa на p10 сломалось из-за передачи -l. Исправление mate-file-archiver удалило этот ключ, но совместимость legacy-команд в 7-zip остаётся вопросом.

Сравнил таблицы kSwitchForms в CPP/7zip/UI/Common/ArchiveCommandLine.cpp локальных исходников p7zip 17.05 и 7-zip 26.04: 52 и 65 имён ключей. Единственный отсутствующий в новой таблице старый ключ — -l. Остальные имена сохранены; это не проверка полной совместимости аргументов и поведения.

В p7zip -l влияет на следование по символическим ссылкам: global_use_lstat = !parser[NKey::kUseLStat].ThereIs; архивируется содержимое цели ссылки. Официальный 7-Zip ключ не принимает:
$ 7zz a -l /tmp/p7zip-compat-probe.7z /dev/null
Command Line Error:
Unknown switch:
-l
Код возврата 7 (проверено на установленном 7zz).

Предлагается рассмотреть обвязки для /usr/bin/7z и /usr/bin/7za вместо прямых симлинков; /usr/bin/7zz оставить нативным интерфейсом. Конкретная реализация пока не выбрана. Простое отбрасывание -l не гарантирует сохранения семантики p7zip, требуется проверить корректный перевод параметра и поведение ссылок.

Для проверки совместимости нужны обычные файлы, ссылки на файлы/каталоги, битые ссылки, ZIP/7z, пути с пробелами и -- (после него -l может быть именем файла). Различия методов сжатия/форматов из комментария #2 не решаются простой обвязкой.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302460</commentid>
    <comment_count>6</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2026-10-14 22:31:48 +0300</bug_when>
    <thetext>Подтверждаю на 7-zip-26.04-alt1 (Sisyphus): /usr/bin/7z и /usr/bin/7za - прямые симлинки на 7zz, и `7z a -l x.7z dir` завершается с &quot;Unknown switch: -l&quot; (код 7). Кроме того, различается поведение по умолчанию: p7zip без -l сохранял символические ссылки как ссылки (lstat), а 7zz по умолчанию идёт по ссылкам (сохраняет содержимое цели, на битых ссылках - предупреждения errno=2), как p7zip с -l; сохранять ссылки как ссылки 7zz умеет только с -snl. Сам p7zip из Sisyphus уже удалён, замена через Provides/Obsoletes работает.

План (новая сборка 26.04-alt3): /usr/bin/7z, /usr/bin/7za (и 7zr) сделать небольшими обвязками совместимости с p7zip поверх 7zz: ключ -l (до --) убирается, это поведение 7zz по умолчанию; без -l добавляется -snl, чтобы ссылки сохранялись как ссылки, как в p7zip; явный -snl не дублируется; аргументы после -- не трогаются. /usr/bin/7zz остаётся нативным интерфейсом 7-Zip. Проверка в docker: обычные файлы, ссылки на файлы/каталоги, битые ссылки, ZIP и 7z, пути с пробелами, файл с именем -l после --. Дополнительные кодеки p7zip (lz4, lz5, lizard, lzip из комментария #2) обвязкой не решаются.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>