The redesign of pkg_install for pkgsrc

Jörg Sonnenberger

[email protected]

The NetBSD Project

Outline

pkgsrc in 3 minutes

pkgsrc: high-level structure

What is pkg_install?

The old pkg_install

pkg_install — illustrated

spaghetti (from Wikipedia)

Problems en detail

Pkgsrc: open issues

The answer

Desired structure

onion (from Wikipedia)

Package patterns (I)

Before

Problems with old patterns

Package patterns (II)

After

Use of patterns

Compatibility patterns

Package lists

Plists as mini IDS

Regeneration and verification of installed packages

Package metadata

Serialized descriptions

--- %YAML:1.0 !pkgsrc.org,20060813/pkg 
pkgname: mad123-0.8.5nb2
prefix: /usr/pkg
platform: 
  os: NetBSD
  os_version: 3.99.22
  architecture: i386
  abi: 32
depends: 
- curl>=7.15.3
- libmad>=0.15.1bnb1
plist: 
  /usr/pkg/bin/mad123: !pkgsrc.org,20060813/plist/file 
    checksum: 
      RMD160: 4b8fd3e645386f1d674603a349613075d2d2377c
    modification_time: 2006-11-07 08:16:51
    size: 20776
    permission: 0555
  /usr/pkg/man/man1/mad123.1: !pkgsrc.org,20060813/plist/file 
    checksum: 
      RMD160: 6b6a1800c664a7940975ee634b050e2ecc5397c4
    modification_time: 2006-11-07 08:16:51
    size: 5518
    permission: 0444
meta: 
  descriptions: 
    en_US: |
      mad123 is a simple command line MP3 player using Robert Leslie's
      libmad fixed-point MP3 decoder library.
      ...
  comments: 
    en_US: Command-line MPEG audio player
  license: GPL
  maintainer: [email protected]
  build_time: 2006-11-08 14:19:12

Binary package format

Architecture of pkg_install

Integration I: staged installation

Integration II: pattern conversion

Integration III: new pkg flavour

Integration IV: Old packages

Summary

Q&A

Questions?