goreleaser / nfpm

nFPM is Not FPM - a simple deb, rpm, apk, ipk, and arch linux packager written in Go
https://nfpm.goreleaser.com/
MIT License
2.18k stars 159 forks source link

`type: tree` creates issues in `deb` packages #856

Open agarof opened 2 months ago

agarof commented 2 months ago

What happened?

Creating a deb package containing a directory using type: tree causes issues with the package on Ubuntu.

On Ubuntu 20 and 22, opening the package with Software Install fails with the error message `Failed to install file: not supported.

On Ubuntu 24, App Center opens and installs the package without issues.

On all three Ubuntu versions, gdebi reports List of files for 'package.deb' could not be read in the Included files tab.

How can we reproduce this?

Create a directory containing a single file using mkdir directory && echo content > directory/file. Generate a deb package using the following config file

name: package
maintainer: Test
contents:
  - src: directory
    dst: /var/lib/directory
    type: tree

The package will have the issues described above. However, a package generated with the following will not

name: package
maintainer: Test
contents:
  - src: directory/file
    dst: /var/lib/directory/file

nfpm version

_____ ____  __  __
 _ __ |  ___|  _ \|  \/  |
| '_ \| |_  | |_) | |\/| |
| | | |  _| |  __/| |  | |
|_| |_|_|   |_|   |_|  |_|
nfpm: a simple and 0-dependencies apk, arch linux, deb, ipk, and rpm packager written in Go
https://nfpm.goreleaser.com

GitVersion:    2.40.0
GitCommit:     db338d012a43be3c7f9c5a450eca2e279c973de4
GitTreeState:  false
BuildDate:     2024-08-29T11:36:48Z
BuiltBy:       goreleaser
GoVersion:     go1.23.1
Compiler:      gc
ModuleSum:     h1:M6WaaHeTCgNopUo9e8zgeHlOiN65LZAKqogzCJXBwYQ=
Platform:      linux/amd64

Search

Code of Conduct

Additional context

The problem seems to come from the data.tar archive's format. The issue affects the package regardless of compression setting and decompressing and recompressing it does not solve the issue. However, extracting the tar archive and recreating it creates a working package.