deb package

deb / description

A deb file (package) is an archive tha adheres to a certain format called '''.deb format. There are currently two types of deb packages :

  • Binary packages
  • Source packages

That format is described (is there a spec?) in :

  • linux man pages : $ man 5 deb ( or $ man 'deb(5)' )
  • debian doc / FAQ : @

deb / binary

deb / binary / description

  • debian docs/ policy : @

deb / binary / package filename

A file that is a .deb package must has a filename with a certain syntax. That syntax is not documentented in deb(5) manpage.I list various sites where that syntax is described without being sure if there is one source:

  • debian docs/ FAQ : @
  • debian docs/ reference : @

Debian package name format: The Debian binary package file names has the following structure:

package-name_upstream-version-debian.revision_architecture.deb

eg:  openttd_14.1-1_amd64.deb
     package-name: openttd
     upstream-version: 14.1
     debian.revision: 1
     architecture: amd64
  • starts with the package name
  • version (enclosed in underscores)
  • release
  • architecture for which package built
  • deb extension

deb / binary / package name

Every package must have a name that’s unique within the Debian/Devuan archive. So although in a Devuan repository we there can be many versions of a certain package all can share the same package by sharing the same Package name.

deb / binary / structure

deb / source

deb / source package / description

deb / source package / ref

An Debian source package is descriped in:

deb / source package / types

There are two types of Debian source packages:

  • the so-called native packages, where there is no distinction between the original sources and the patches applied for Debian
  • the (more common) packages where there's an original source tarball file accompanied by another file that contains the changes made by Debian

deb / source package / filename

deb / source package / contents

For the native packages, the source package includes :

  • a Debian source control file (.dsc) and
  • the source tarball (.tar.{gz,bz2,xz}).

A source package of a non-native package includes:

  • a Debian source control file,
  • the original source tarball (.orig.tar.{gz,bz2,xz}) and
  • the Debian changes (.diff.gz for the source format “1.0” or .debian.tar.{gz,bz2,xz} for the source format “3.0 (quilt)”).

deb / mynotes

In the early unix days getting a Unix i think it was like getting a distribution.

A package is a granularity basic level of software management. By that i mean that it works as a contract between a programmer that publish software and the administrator-user of an installed distribution. That contract tries to deliniate the infinite multitude of ways to communicate-exchange-transfer programs-data in a very narrow space.

I think the minimal package would be a binary file. A certain program. But a program usally need certain shared libraries. It seems the shared libraries are the hidden stars of a distribution. Assumming that a user wants programs to be social and integrate into complex workflows with other programs it seems that the shared libraries can become the magic glue that imposes certain comm types.

Thus when we download a program with it's own libaries (appimage , flatpak etc) means propably that that program wont respect current workflows in our systems since it could have incompatible versions of libraries.

deb / refs

debian policy