/go-deb

A native implementation of the Debian specification in Go.

Primary LanguageGoMIT LicenseMIT

go-deb

A native implementation of the Debian specification in Go, which is very much inspired by go-rpm. The go-deb is trying to replicate go-rpm as close as possible in order to provide more or less common API. The difference between RPM and Dpkg, however, inevitable.

$ go get github.com/isbm/go-deb

Same as go-rpm, go-deb package aims to enable cross-platform tooling for dpkg written in Go.

Initial goals include like-for-like implementation of existing Dpkg ecosystem features such as:

  • Reading of modern and legacy Debian package file formats
  • Reading, creating and updating modern and legacy Dpkg repository metadata
package main

import (
	"fmt"
	"github.com/isbm/go-deb"
)

func main() {
	// Set options manually or use deb.DefaultPackageOptions instance
	options := &deb.PackageOptions{
		Hash: deb.HASH_SHA1,
		RecalculateChecksums: true,
		MetaOnly: false,
	}

	p, err := deb.OpenPackageFile("golang_1.12~1_amd64.deb", options)
	if err != nil {
		panic(err)
	}

	fmt.Printf("Loaded package: %v - %s\n", p, p.Summary())
}