third-party software management under bsd

32
Third-party software management under BSD Andrew Pantyukhin <[email protected]> EuroBSDCon 2006 powered by the FreeBSD Foundation

Upload: andrew-pantyukhin

Post on 16-Jun-2015

109 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Third-party software management under BSD

Third-party softwaremanagement under BSD

Andrew Pantyukhin

<[email protected]>

EuroBSDCon 2006

powered by the FreeBSD Foundation

Page 2: Third-party software management under BSD

First things first

●The need for 3d-party software

●Why do we require packages

●The need for package management

●What do we expect to manage

Page 3: Third-party software management under BSD

History -Packages in UNIX

●OS is an all-included bundle

●"Users" must figure out how to "use" software

themselves

●SysV/SunOS PKG format

Page 4: Third-party software management under BSD

History -Packages in BSD

●JKH committed pkg_install in 1993

●JKH committed ports in 1994

●{Net,Open}BSD snatched both of them

Page 5: Third-party software management under BSD

History -Packages in Linux

●Many PM systems appeared in 1993-95, including

RPM and dpkg

●Portage came out in 2002

●A multitude of PM systems were started over since

90s, some of them still maintained, some actively

developed

Page 6: Third-party software management under BSD

Current Status

●Dozens of distinctive PM systems

●Focus on binary and/or source packages

●Automation of compilation-related routines

●Automation of installation tasks

Page 7: Third-party software management under BSD

FreeBSD ports

●Make + shell

●Multiple scripts in multilevel directories

●Effective automation of common tasks and hacks

Page 8: Third-party software management under BSD

NetBSD ports

●Good documentation

●pkginstall framework

●pkg options framework

Page 9: Third-party software management under BSD

OpenBSD ports

●Fake build environment

●Immaculate documentation

●Options, flavors, multi-packages

●New pkg_install + a hard-headed maintainer

Page 10: Third-party software management under BSD

Looking out of BSD

●RPM

●Dpkg

●Portage

●Other

●Linux Core Consortium - Standard Base

Page 11: Third-party software management under BSD

Why bother?

●Isolation has its benefits, but

●No system alone proved to be able to reach even

modest qualitative/quantitative targets

●We have too much in common not to share ideas and

code

Page 12: Third-party software management under BSD

What's up?

●Scalability

●Resource management/customization

●Dependencies, capabilities, functionality

●User-side management, interface, Clicks!

●Versioning everywhere

●Saving porter a lifetime (as in more automation)

●Much more...

Page 13: Third-party software management under BSD

What packages needand what they provide

●Other packages

●Resources

●Functionality

Page 14: Third-party software management under BSD

OS Resourcesfor packages

●Disk space

●TCP/UDP ports at different addresses

●File name spaces

●User/group names/ids

●CPU, RAM, disk throughput, etc.

●Bandwidth

●You name it...

Page 15: Third-party software management under BSD

Appliances

●Package + dependencies bundled together

●Jail appliances

●OS appliances

●BSD-based hardware appliances

Page 16: Third-party software management under BSD

Package-Provided Resources

●(SQL) Databases

●Virtual Hosts

●Client connections to an (antivirus) engine

●On-screen pixel real-estate

●Technically specific items, like lines in configuration

files

Page 17: Third-party software management under BSD

Package-Provided Functionality

●Needed by users directly and/or required by other

packages

●API-oriented, e.g. language modules and extensions,

binary libraries

●Task-oriented, e.g. web servers, mail clients, DBMS

Page 18: Third-party software management under BSD

Install-/run-time customization

●Automation of installation tasks based on simple

user-made choices

●Single interface to configure the usage of some

resources, like TCP ports

Page 19: Third-party software management under BSD

Multiple package instancing

●Many versions installed at one time for testing and

compatibility

●Several instances of the same version with different

configurations

Page 20: Third-party software management under BSD

More flexibility

●Movable packages - at post-install time

●Non-privileged management

●Per-user/per-jail package masking

Page 21: Third-party software management under BSD

Versioning

●Easily accessible older versions

●Depending on older versions

●Keeping distfiles in a VCS repo

●Incremental distfile updates

Page 22: Third-party software management under BSD

Getting pristine sources

●RCS, VCS repositories

●P2P

●Metalinks

●Rsync

●Guided non-distributable downloads

Page 23: Third-party software management under BSD

User Interface

●Centralized management

●Orthogonal switches

●Advanced on-line help/hints system in addition to

manpages and other documentation

●Integrated updating capabilities

●Options handling

●Clicks

Page 24: Third-party software management under BSD

User Package Sets

●Storage of package sets, easy access/distribution

●Marking packages as requested or depended on

●Marking some big (sets of) packages as undesirable

to be installed

Page 25: Third-party software management under BSD

Technicalities

●distcc

●ccache

●Cross-compilation

Page 26: Third-party software management under BSD

Security

●CVE is a dictionary

●We need a database

●Different projects use CVE/database as an overlay

●Or, the database stores info about projects

Page 27: Third-party software management under BSD

Exchanging hacks

●Thousands of hacks spread out throughout the PM

systems

●Only a few are documented, most of the other ones

are abandoned and forgotten

●Developers have to reinvent solutions

Page 28: Third-party software management under BSD

Collaboration(ism)

●Education

●Spirit

●Communication

Page 29: Third-party software management under BSD

Education

●Other PM systems exist, and they do work

●Many of them have good documentation

●Behind projects there are people to talk to and to learn

from

Page 30: Third-party software management under BSD

Spirit

●No single PM system dominates the market

●Rich traditions of forks and new-from-scratch solutions

gave us diversity, but prevent us from trying to work

together

●Working with people/approaches we don't necessarily

like

Page 31: Third-party software management under BSD

Communication

●Actual developers making contacts

●Looking for solutions (in)

●Sharing our ideas (out)

●Taking part in outside discussions

●Inviting outsiders over to our forums

Page 32: Third-party software management under BSD

What's next

●More forays into the wild

●Mentioning the diversity of PM systems in docs

●Learning from others

●Bringing in foreign solutions

●Standardizing on decisions