Commit bffac956 authored by Chris Lawrence's avatar Chris Lawrence Committed by Didier Raboud

lsb 3.0-8 Debian release.

parent 76d532aa
lsb (3.0-8) unstable; urgency=low
* Bring in lsb-release (binary) package; rewritten to handle -v properly
for LSB 2.x and beyond.
* /etc/lsb-release is no longer provided by the lsb-release package;
it is probably best managed in base-files (which derived distros are
probably branding anyway).
-- Chris Lawrence <> Wed, 21 Sep 2005 20:53:37 -0400
lsb (3.0-7) unstable; urgency=low
* Update lsb-core dependencies to include:
......@@ -96,7 +96,7 @@ Architecture: all
Depends: sed, ncurses-bin
Replaces: lsb (<< 2.0-6)
Conflicts: lsb (<< 2.0-6)
Priority: important
Priority: required
Description: Linux Standard Base 3.0 init script functionality
The Linux Standard Base ( is a standard
core system that third-party applications written for Linux can
......@@ -105,3 +105,21 @@ Description: Linux Standard Base 3.0 init script functionality
This package only includes the init-functions shell library, which
may be used by other packages' initialization scripts for console
logging and other purposes.
Package: lsb-release
Architecture: all
Depends: python (>> 2.3), python (<< 2.5)
Recommends: lsb
Description: Linux Standard Base version reporting utility
The Linux Standard Base ( is a standard
core system that third-party applications written for Linux can
depend upon.
The lsb-release command is a simple tool to help identify the Linux
distribution being used and its compliance with the Linux Standard Base.
LSB conformance will not be reported unless the required metapackages are
While it is intended for use by LSB packages, this command may also
be useful for programmatically distinguishing between a pure Debian
installation and derived distributions.
lsb-base for Debian
The Debian lsb-base package provides a series of logging functions to
permit simplified logging of init script actions.
......@@ -87,4 +90,4 @@ If supplied, this script fragment should be compatible with any Debian
/bin/sh, as init scripts sourcing this file may be running under any
Bourne-style shell permitted by Debian policy (i.e. not just bash).
-- Chris Lawrence <>, Fri Sep 16 19:20:32 2005
-- Chris Lawrence <>, Wed Sep 21 20:21:36 2005
lsb-release for Debian
NB: These notes are intended for anyone building a derived
distribution using this package. They are not likely to be helpful to
This is a reimplementation of the classic lsb_release command; its
main new feature is support for the new output for the -v option in
LSB 2.x/3.x. This version of lsb_release is also designed to only report
that a system is LSB compliant if the correct LSB metapackages are available,
and to properly support situations where only certain LSB metapackages
(i.e. lsb-core only) are installed.
Distribution-specific information should be *separately provided* in
/etc/lsb-release; it is no longer provided in this package. It is my
hope that in Debian, this will be managed by the base-files
maintainer (who already maintains the debian_version file).
The file should be formatted as a series of shell variable
assignments. Multiword strings should be quoted in double quotes.
You should not assume this file is actually parsed by a Bourne shell
(i.e., no fancy stuff). Example:
DISTRIB_ID=(Distributor ID)
DISTRIB_DESCRIPTION=(A human-readable description of the release)
DISTRIB_RELEASE=(The release number)
DISTRIB_CODENAME=(The codename for the release)
Any other variable assignments will be silently ignored. For Debian
3.1 (sarge), it might have read:
DISTRIB_DESCRIPTION="Debian GNU/Linux 3.1 (sarge)"
-- Chris Lawrence <>, Wed Sep 21 20:40:25 2005
......@@ -74,8 +74,9 @@ install: build
# Add here commands to install the package into debian/lsb.
#$(MAKE) install DESTDIR=$(CURDIR)/debian/lsb
cp install_initd remove_initd lsbinstall debian/lsb-core/usr/lib/lsb
cp init-functions debian/lsb-base/lib/lsb
cp -p install_initd remove_initd lsbinstall debian/lsb-core/usr/lib/lsb
cp -p init-functions debian/lsb-base/lib/lsb
cp -p lsb_release debian/lsb-release/bin
# Build architecture-independent files here.
binary-indep: build install
# lsb_release command for Debian
# (C) 2005 Chris Lawrence <>
# This package is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 dated June, 1991.
# This package is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this package; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
from optparse import OptionParser
import sys
import commands
import os
import re
# LSB compliance packages... may grow eventually
PACKAGES = 'lsb-core lsb-cxx lsb-graphics'
modnamere = re.compile(r'lsb-(?P<module>[a-z]+)-(?P<arch>[^ ]+)(?: \(= (?P<version>[0-9.]+)\))?')
def valid_lsb_versions(version, module):
# If a module is ever released that only appears in >= version, deal
# with that here
if version == '3.0':
return ['2.0', '3.0']
return [version]
def check_modules_installed():
# Find which LSB modules are installed on this system
output = commands.getoutput("dpkg-query -f '${Version} ${Provides}\n' -W %s 2>/dev/null" % PACKAGES)
if not output:
return []
modules = []
for line in output.split(os.linesep):
version, provides = line.split(' ', 1)
version = version.split('-', 1)[0]
for pkg in provides.split(','):
mob =
if not mob:
mgroups = mob.groupdict()
# If no versioned provides...
if mgroups.get('version'):
module = '%(module)s-%(version)s-%(arch)s' % mgroups
modules += [module]
module = mgroups['module']
for v in valid_lsb_versions(version, module):
mgroups['version'] = v
module = '%(module)s-%(version)s-%(arch)s' % mgroups
modules += [module]
return modules
'1.1' : 'buzz',
'1.2' : 'rex',
'1.3' : 'bo',
'2.0' : 'hamm',
'2.1' : 'slink',
'2.2' : 'potato',
'3.0' : 'woody',
'3.1' : 'sarge',
'3.2' : 'etch', # XXX - may not end up as 3.2
def guess_debian_release():
distinfo = {'ID' : 'Debian'}
kern = os.uname()[0]
if kern in ('Linux', 'Hurd', 'NetBSD'):
distinfo['OS'] = 'GNU/'+kern
elif kern == 'FreeBSD':
distinfo['OS'] = 'GNU/k'+kern
if os.path.exists('/etc/debian_version'):
release = open('/etc/debian_version').read().strip()
if not release[0:1].isalpha():
# /etc/debian_version should be numeric
codename = RELEASE_CODENAME_LOOKUP.get(release, 'n/a')
distinfo.update({ 'RELEASE' : release, 'CODENAME' : codename })
# Guess with apt policy before being this stupid?
distinfo.update({ 'RELEASE' : release, 'CODENAME' : 'sid'} )
distinfo['DESCRIPTION'] = '%(ID)s %(OS)s %(RELEASE)s (%(CODENAME)s)' % distinfo
return distinfo
def get_distro_information():
distinfo = {}
if os.path.exists('/etc/lsb-release'):
for line in open('/etc/lsb-release'):
line = line.strip()
if not line:
var, arg = line.split('=', 1)
if var.startswith('DISTRIB_'):
var = var[8:]
if arg.startswith('"') and arg.endswith('"'):
arg = arg[1:-1]
distinfo[var] = arg
distinfo = guess_debian_release()
return distinfo
def main():
parser = OptionParser()
parser.add_option('-v', '--version', dest='output', action='store_const',
const='version', default='version',
help="show LSB modules this system supports")
parser.add_option('-i', '--id', dest='output', action='store_const',
const='id', help="show distributor ID")
parser.add_option('-d', '--description', dest='output',
action='store_const', const='description',
help="show description of this distribution")
parser.add_option('-r', '--release', dest='output',
action='store_const', const='release',
help="show release number of this distribution")
parser.add_option('-c', '--codename', dest='output',
action='store_const', const='codename',
help="show code name of this distribution")
parser.add_option('-a', '--all', dest='output',
action='store_const', const='all',
help="show all of the above information")
parser.add_option('-s', '--short', dest='short',
action='store_true', default=False,
help="show all of the above information in short format")
(options, args) = parser.parse_args()
if args:
parser.error("No arguments are permitted")
short = (options.short)
all = (options.output=='all')
distinfo = get_distro_information()
if options.output == 'version' or all:
verinfo = check_modules_installed()
if not verinfo:
print >> sys.stderr, "No LSB modules are available."
elif short:
print ':'.join(verinfo)
print 'LSB Version:\t' + ':'.join(verinfo)
if options.output == 'id' or all:
if short:
print distinfo.get('ID', 'n/a')
print 'Distributor ID:\t%s' % distinfo.get('ID', 'n/a')
if options.output == 'description' or all:
if short:
print distinfo.get('DESCRIPTION', 'n/a')
print 'Description:\t%s' % distinfo.get('DESCRIPTION', 'n/a')
if options.output == 'release' or all:
if short:
print distinfo.get('RELEASE', 'n/a')
print 'Release:\t%s' % distinfo.get('RELEASE', 'n/a')
if options.output == 'codename' or all:
if short:
print distinfo.get('CODENAME', 'n/a')
print 'Codename:\t%s' % distinfo.get('CODENAME', 'n/a')
if __name__ == '__main__':
.TH lsb_release 1
lsb_release \- print distribution-specific information
.B lsb_release
.I "[options]"
.B lsb_release
command provides certain LSB (Linux Standard Base) and
distribution-specific information.
If no options are given, the \fI\-v\fP option is assumed.
The program follows the usual GNU command line syntax, with long
options starting with two dashes (`\-\-').
A summary of options are included below.
.B \-v, \-\-version
Show the version of the LSB against which your current installation is
compliant. The version is expressed as a colon separated list of LSB
module descriptions.
.B \-i, \-\-id
Display the distributor's ID.
.B \-d, \-\-description
Display a description of the currently installed distribution.
.B \-r, \-\-release
Display the release number of the currently installed distribution.
.B \-c, \-\-codename
Display the code name of the currently installed distribution.
.B \-a, \-\-all
Display all of the above information.
.B \-s, \-\-short
Use the short output format for any information displayed. This
format omits the leading header(s).
.B \-h, \-\-help
Show summary of options.
This is a reimplementation of the
.B lsb_release
command provided by the Free Standards Group. Any bugs are solely the
responsibility of the author below.
Chris Lawrence <>.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment