Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot create zip archives with 7-Zip 23.01 installed #502

Open
NinjaCowboy opened this issue Dec 6, 2023 · 5 comments
Open

Cannot create zip archives with 7-Zip 23.01 installed #502

NinjaCowboy opened this issue Dec 6, 2023 · 5 comments

Comments

@NinjaCowboy
Copy link

NinjaCowboy commented Dec 6, 2023

Expected behaviour

Engrampa should be able to create zip files from Caja's context menu or the command-line.

Actual behaviour

Attempting to do so results in an error popup saying "An error occurred while adding files to the archive.".

Steps to reproduce the behaviour

  1. Install engrampa and 7-Zip 23.01 (other versions of 7-Zip may be affected, but this is the one I have installed).
  2. Create a simple text file called hello.txt
  3. Open a terminal in the same directory as hello.txt and run the following command: engrampa -a test.zip hello.txt
  4. Engrampa will be unable to create the archive and show an error.

MATE general version

1.26.1

Package version

engrampa-1.26.1_1

Linux Distribution

Void Linux

Link to bugreport of your Distribution (requirement)

Additional Information

This appears to be caused by engrampa passing an invalid -l switch to 7z. Running strace (strace -f -e trace=execve -s 200 engrampa -a test.zip hello.txt) reveals that engrampa passes the -l switch to 7z, which doesn't seem to be available (at least not in this version).

[pid  5736] execve("/usr/bin/7z", ["7z", "a", "-tzip", "-mem=AES128", "-bd", "-y", "-l", "-mx=7", "--", "/home/ninja/.fr-Y9V8HS/test.zip", "hello.txt"], 0x55e008297560 /* 45 vars */) = 0
[pid  5736] +++ exited with 7 +++

Running /usr/bin/7z a -tzip -mem=AES128 -bd -y -l -mx=7 -- /home/ninja/test.zip hello.txt gives an error.

Command Line Error:
Unknown switch:
-l

The output of 7z --help on my system does not mention the -l switch at all, but it is mentioned in some online manpages.

7-Zip (z) 23.01 (x64) : Copyright (c) 1999-2023 Igor Pavlov : 2023-06-20
 64-bit locale=en_US.UTF-8 Threads:4 OPEN_MAX:1024

Usage: 7zz <command> [<switches>...] <archive_name> [<file_names>...] [@listfile]

<Commands>
  a : Add files to archive
  b : Benchmark
  d : Delete files from archive
  e : Extract files from archive (without using directory names)
  h : Calculate hash values for files
  i : Show information about supported formats
  l : List contents of archive
  rn : Rename files in archive
  t : Test integrity of archive
  u : Update files to archive
  x : eXtract files with full paths

<Switches>
  -- : Stop switches and @listfile parsing
  -ai[r[-|0]]{@listfile|!wildcard} : Include archives
  -ax[r[-|0]]{@listfile|!wildcard} : eXclude archives
  -ao{a|s|t|u} : set Overwrite mode
  -an : disable archive_name field
  -bb[0-3] : set output log level
  -bd : disable progress indicator
  -bs{o|e|p}{0|1|2} : set output stream for output/error/progress line
  -bt : show execution time statistics
  -i[r[-|0]]{@listfile|!wildcard} : Include filenames
  -m{Parameters} : set compression Method
    -mmt[N] : set number of CPU threads
    -mx[N] : set compression level: -mx1 (fastest) ... -mx9 (ultra)
  -o{Directory} : set Output directory
  -p{Password} : set Password
  -r[-|0] : Recurse subdirectories for name search
  -sa{a|e|s} : set Archive name mode
  -scc{UTF-8|WIN|DOS} : set charset for console input/output
  -scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}} : set charset for list files
  -scrc[CRC32|CRC64|SHA1|SHA256|*] : set hash function for x, e, h commands
  -sdel : delete files after compression
  -seml[.] : send archive by email
  -sfx[{name}] : Create SFX archive
  -si[{name}] : read data from stdin
  -slp : set Large Pages mode
  -slt : show technical information for l (List) command
  -snh : store hard links as links
  -snl : store symbolic links as links
  -sni : store NT security information
  -sns[-] : store NTFS alternate streams
  -so : write data to stdout
  -spd : disable wildcard matching for file names
  -spe : eliminate duplication of root folder for extract command
  -spf[2] : use fully qualified file paths
  -ssc[-] : set sensitive case mode
  -sse : stop archive creating, if it can't open some input file
  -ssp : do not change Last Access Time of source files while archiving
  -ssw : compress shared files
  -stl : set archive timestamp from the most recently modified file
  -stm{HexMask} : set CPU thread affinity mask (hexadecimal number)
  -stx{Type} : exclude archive type
  -t{Type} : Set type of archive
  -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Update options
  -v{Size}[b|k|m|g] : Create volumes
  -w[{path}] : assign Work directory. Empty path means a temporary directory
  -x[r[-|0]]{@listfile|!wildcard} : eXclude filenames
  -y : assume Yes on all queries
@xuzhen
Copy link

xuzhen commented Dec 16, 2023

The -l option only exists in p7zip 4.20+, 7-zip has never had it.

@yangfl
Copy link

yangfl commented Jan 23, 2024

Also affects Debian, engrampa 1.26.1-2 and 7zip 23.01+dfsg-7

@zhuyaliang
Copy link
Member

The name of the 7zip binary program has been changed in Debian
debian-7zip
7zip-org

    7zz  (7-Zip) - standalone full version of 7-Zip that supports all formats. 

    7zzs (7-Zip) - standalone full version of 7-Zip that supports all formats (static library linking).

    7z  (p7zip) - 7-Zip that requires 7z.so shared library, and it supports all formats via 7z.so.
    
    7zr (p7zip) - standalone reduced version of 7-Zip that supports some 7-Zip's formats:
                  7z, xz, lzma and split.
    
    7za (p7zip) - standalone version of 7-Zip that supports some main formats: 
                  7z, xz, lzma, zip, bzip2, gzip, tar, cab, ppmd and split.

@zhuyaliang
Copy link
Member

@NinjaCowboy Why does the -l parameter appear.

       if (recursive)
               fr_process_add_arg (comm->process, "-l");

recursive has always been FALSE

@zhuyaliang
Copy link
Member

@NinjaCowboy Can we close this issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants