From c1350bc6ac91c18719a06cddfccc4eb5c62175d0 Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Mon, 5 Nov 2012 11:03:33 +0000 Subject: [PATCH] lsb (4.1+Debian8) unstable; urgency=low * Fix libqt3-mt missing epoch. * Hide the stderr output of $(initctl version) in init_is_upstart. (Closes: #682032) [dgit import package lsb 4.1+Debian8] --- debian/README.Debian | 197 ++++ debian/TODO | 6 + debian/changelog | 1306 ++++++++++++++++++++++ debian/compat | 1 + debian/control | 364 ++++++ debian/copyright | 59 + debian/lsb-base.NEWS | 17 + debian/lsb-base.README.Debian | 234 ++++ debian/lsb-base.dirs | 1 + debian/lsb-base.install | 2 + debian/lsb-base.maintscript.Ubuntu | 1 + debian/lsb-core.config | 12 + debian/lsb-core.dirs | 3 + debian/lsb-core.examples | 1 + debian/lsb-core.install | 4 + debian/lsb-core.lintian-overrides | 2 + debian/lsb-core.manpages | 1 + debian/lsb-core.postinst | 71 ++ debian/lsb-core.prerm | 47 + debian/lsb-core.templates | 25 + debian/lsb-cxx.lintian-overrides | 2 + debian/lsb-desktop.NEWS | 15 + debian/lsb-desktop.README.Debian | 19 + debian/lsb-desktop.lintian-overrides | 2 + debian/lsb-graphics.lintian-overrides | 2 + debian/lsb-invalid-mta.install | 1 + debian/lsb-invalid-mta.links | 1 + debian/lsb-invalid-mta.lintian-overrides | 2 + debian/lsb-languages.lintian-overrides | 2 + debian/lsb-multimedia.lintian-overrides | 2 + debian/lsb-printing.lintian-overrides | 2 + debian/lsb-release.README.Debian | 38 + debian/lsb-release.bug-script | 24 + debian/lsb-release.install | 2 + debian/lsb-release.manpages | 1 + debian/lsb-release.postinst | 16 + debian/lsb-release.postrm | 16 + debian/lsb-security.lintian-overrides | 2 + debian/lsb.lintian-overrides | 2 + debian/po/POTFILES.in | 1 + debian/po/ar.po | 62 + debian/po/ca.po | 64 ++ debian/po/cs.po | 68 ++ debian/po/da.po | 61 + debian/po/de.po | 70 ++ debian/po/es.po | 95 ++ debian/po/eu.po | 63 ++ debian/po/fi.po | 58 + debian/po/fr.po | 74 ++ debian/po/gl.po | 62 + debian/po/it.po | 62 + debian/po/ja.po | 71 ++ debian/po/ko.po | 62 + debian/po/ml.po | 64 ++ debian/po/nl.po | 77 ++ debian/po/pl.po | 64 ++ debian/po/pt.po | 62 + debian/po/pt_BR.po | 73 ++ debian/po/ro.po | 63 ++ debian/po/ru.po | 65 ++ debian/po/sk.po | 60 + debian/po/sv.po | 74 ++ debian/po/templates.pot | 51 + debian/po/vi.po | 82 ++ debian/rules | 87 ++ debian/source/format | 1 + debian/source/options | 1 + init-functions | 429 +++++++ init-functions.d/20-left-info-blocks | 43 + init-functions.d/50-ubuntu-logging | 141 +++ initdutils.py | 177 +++ install_initd | 138 +++ lsb.8 | 35 + lsb_release | 98 ++ lsb_release.1 | 60 + lsb_release.py | 367 ++++++ lsbinstall | 271 +++++ remove_initd | 49 + sendmail | 3 + test/apt-cache | 57 + test/dpkg-query | 29 + test/init-skeleton | 233 ++++ test/lsb-release | 5 + test/lsb-test.sh | 10 + test/minid.initd | 52 + test/minid.pl | 8 + test/test_initdutils.py | 31 + test/test_lsb_release.py | 326 ++++++ 88 files changed, 6764 insertions(+) create mode 100644 debian/README.Debian create mode 100644 debian/TODO create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/lsb-base.NEWS create mode 100644 debian/lsb-base.README.Debian create mode 100644 debian/lsb-base.dirs create mode 100644 debian/lsb-base.install create mode 100644 debian/lsb-base.maintscript.Ubuntu create mode 100755 debian/lsb-core.config create mode 100644 debian/lsb-core.dirs create mode 100644 debian/lsb-core.examples create mode 100644 debian/lsb-core.install create mode 100644 debian/lsb-core.lintian-overrides create mode 100644 debian/lsb-core.manpages create mode 100755 debian/lsb-core.postinst create mode 100644 debian/lsb-core.prerm create mode 100644 debian/lsb-core.templates create mode 100644 debian/lsb-cxx.lintian-overrides create mode 100644 debian/lsb-desktop.NEWS create mode 100644 debian/lsb-desktop.README.Debian create mode 100644 debian/lsb-desktop.lintian-overrides create mode 100644 debian/lsb-graphics.lintian-overrides create mode 100644 debian/lsb-invalid-mta.install create mode 100644 debian/lsb-invalid-mta.links create mode 100644 debian/lsb-invalid-mta.lintian-overrides create mode 100644 debian/lsb-languages.lintian-overrides create mode 100644 debian/lsb-multimedia.lintian-overrides create mode 100644 debian/lsb-printing.lintian-overrides create mode 100644 debian/lsb-release.README.Debian create mode 100755 debian/lsb-release.bug-script create mode 100644 debian/lsb-release.install create mode 100644 debian/lsb-release.manpages create mode 100644 debian/lsb-release.postinst create mode 100644 debian/lsb-release.postrm create mode 100644 debian/lsb-security.lintian-overrides create mode 100644 debian/lsb.lintian-overrides create mode 100644 debian/po/POTFILES.in create mode 100644 debian/po/ar.po create mode 100644 debian/po/ca.po create mode 100644 debian/po/cs.po create mode 100644 debian/po/da.po create mode 100644 debian/po/de.po create mode 100644 debian/po/es.po create mode 100644 debian/po/eu.po create mode 100644 debian/po/fi.po create mode 100644 debian/po/fr.po create mode 100644 debian/po/gl.po create mode 100644 debian/po/it.po create mode 100644 debian/po/ja.po create mode 100644 debian/po/ko.po create mode 100644 debian/po/ml.po create mode 100644 debian/po/nl.po create mode 100644 debian/po/pl.po create mode 100644 debian/po/pt.po create mode 100644 debian/po/pt_BR.po create mode 100644 debian/po/ro.po create mode 100644 debian/po/ru.po create mode 100644 debian/po/sk.po create mode 100644 debian/po/sv.po create mode 100644 debian/po/templates.pot create mode 100644 debian/po/vi.po create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100644 debian/source/options create mode 100644 init-functions create mode 100644 init-functions.d/20-left-info-blocks create mode 100644 init-functions.d/50-ubuntu-logging create mode 100644 initdutils.py create mode 100755 install_initd create mode 100644 lsb.8 create mode 100755 lsb_release create mode 100644 lsb_release.1 create mode 100644 lsb_release.py create mode 100755 lsbinstall create mode 100755 remove_initd create mode 100644 sendmail create mode 100755 test/apt-cache create mode 100755 test/dpkg-query create mode 100644 test/init-skeleton create mode 100644 test/lsb-release create mode 100644 test/lsb-test.sh create mode 100755 test/minid.initd create mode 100755 test/minid.pl create mode 100644 test/test_initdutils.py create mode 100644 test/test_lsb_release.py diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 0000000..8690a37 --- /dev/null +++ b/debian/README.Debian @@ -0,0 +1,197 @@ +lsb for Debian +-------------- + +This package provides the Linux Standard Base on Debian systems. The +LSB is a specification for allowing the same binary package to be used +on multiple distributions. + +INSTALLING LSB PACKAGES + +The "alien" package supports LSB packages on Debian. For example, to +install an LSB package "lsb-mozilla-1.2-1_i386.rpm", type (as root): + +alien -i lsb-mozilla-1.2-1_i386.rpm + +Ideally, the package should be converted to a Debian package and then +installed by dpkg. If this fails, there may be a problem with either +the lsb package (most likely) or alien (less likely), and you should +contact the vendor of the lsb package to resolve the problem. + +PACKAGE LAYOUT + +The LSB implementation in Debian is currently divided into eight +packages: + +* The "lsb-core" package depends on the Debian packages that are + required to comply with the LSB-Core 4.1 specification. It also + includes some subroutines that are used by LSB-compliant applications + when they are being installed or removed. + +* The "lsb-graphics" package depends on the X11 libraries required for + the LSB-Graphics 4.1 specification. + +* The "lsb-cxx" package depends on libstdc++6, required for the + LSB-CXX (LSB-C++) 4.1 specification. + +* The "lsb-desktop" package depends on the Gtk+ and Qt libraries required + for the LSB-Desktop 4.1 specification. + +* The "lsb-languages" package depends on Python 2.4 and Perl 5.8.8 or later. + +* The "lsb-multimedia" package depends on libasound2. + +* The "lsb-printing" package depends on the CUPS libraries (libcups2 + and libcupsimage2), foomatic-filters, and Ghostscript. + +* The "lsb" package depends on all of the above packages. + +* The "lsb-base" package includes a number of functions used by init.d + scripts in some LSB packages. + + For documentation of those functions (and those added for Debian's use), + please see the README.Debian file in that package. + +* The "lsb-release" package includes the lsb_release command, which provides + information about the installed LSB modules and the underlying distribution. + +The LSB module packages are architecture-specific because of +differences in the requirements of the LSB on various binary +architectures. In particular, each package provides +lsb-{module}-noarch and lsb-{module}-{arch} virtual packages. + +IMPLEMENTATION ISSUES + +This package attempts to implement the core LSB specification. Much +of the implementation is drawn on a talk by Wichert Akkerman +(http://www.liacs.nl/~wichert/talks/LSBDistro/html/) and Matt +Taggart's discussion of LSB 1.0 and Debian. Matt has also produced a +slideshow on LSB in Debian, which can be found at: +http://people.debian.org/~taggart/debconf2/ + +This package implements the LSB specification by: + +- depending upon packages that implement OS services required by the + LSB, including libraries and programs. + +- including the correct symlink to the dynamic linker. + +- providing the LSB init script functionality. Some of the LSB init + functionality cannot be implemented without cooperation from other + packages or changes in policy for sarge+1; however, the remainder is + provided here. + +The intent of this package is to provide a best current practice way +of installing LSB packages on Debian using the Intel and PowerPC +32-bit architectures with the Linux kernel ("ia32" and "ppc32"). Its +presence does not imply that I or the Debian project believe that +Debian fully complies with the Linux Standard Base, and should not be +construed as a statement that Debian is LSB-compliant. + +The specification is available at http://www.linuxbase.org/spec/ + +DEVIATIONS FROM LSB + +The package and its dependencies implement all of LSB on Debian, with +these exceptions: + +- LSB 3.2 doesn't fully specify what the init_functions should do. I + have chosen to implement them in a way that is consistent with + Debian current practice, using the start-stop-daemon utility and the + echo command. For sarge+1, I expect a nicer init logging facility + that could be used. + +- LSB specifies no way for a binary to request that a pid file be + created for it, and the spec is ambiguous about whether start_daemon + should create the pid file, therefore I assume the binary will + produce its own /var/run/basename.pid file. + +- Debian only implements certain features of adduser if shadow + passwords are enabled. The lsb package will prompt the user to + enable shadow passwords if they appear to be disabled; however, it + does not force this choice on the administrator. Administrators who + disable shadow passwords may find that some LSB applications fail to + operate correctly as a result. + + (We do not consider this a bug in the package.) + +- The LSB specifies that several X libraries must be available on the + system, but does not specify the presence of either an X server or + any X clients. However, many LSB packages may expect these things + to be present, despite their absence from the spec. + + Similarly, the printing specification requires the CUPS libraries + but no CUPS binaries; hence, printing may be impossible unless you + actually install the cupsys package. + + (This may be a deficiency in the spec. However, we comply as-written.) + +- The LSB specifies that cron scripts can be placed in cron.daily and + other directories; however, Debian's run-parts appears to ignore + these scripts if they contain a dot in their names. (See #118646) + You can work around this problem by editing /etc/crontab and + specifying the --lsbsysinit option; it is hoped that eventually + Debian will include this option by default. + + (This is a known deficiency in debianutils, and is required for + backwards compatibility with expected behavior on earlier systems.) + +- /etc/profile.d scripts aren't executed on shell startup by default + on Debian systems (see Debian Policy section 9.9 for an explanation). + LSB 3.2 is ambiguous on this requirement; /bin/sh is *not* required + to execute these scripts, according to its description, but the + lsbinstall documentation says that it is. + + Debian policy forbids the use of /etc/profile.d by Debian packages, + so it is unlikely this will change (as it might be seen as + encouragement for Debian developers to do use it.) + +There may be other deviations from the spec; they are bugs in this +package and should be reported as such using Debian's bug tracking +system: see reportbug(1) or your favorite bug reporting tool. (The +aforementioned deviations are generally bugs in the package that +cannot be easily fixed, or are bugs in the specification itself that +we hope to resolve in the near future.) + +For more discussion of these deviations, see: + +http://lists.debian.org/lsb-spec/2001/lsb-spec-200107/msg00002.html + (a discussion of deficiencies in LSB 1.0, mostly resolved) + +DESIGN DECISIONS + +- I implemented the LSB init dependencies based on Debian policy's + update-rc.d support. A registry of package-provided facilities and + their start and stop priorities is retained in + /var/lib/lsb/facilities. Priorities are assigned to the system + facilities as found on my sid systems as of today; perhaps system + facilities should be registered by the appropriate packages, and not + managed by the lsb package, but that is a sarge+1 policy decision. + +- As of 1.3-1, a second registry of init script dependencies is + retained in /var/lib/lsb/depends. This is used to ensure that an + LSB package will not be removed if it provides an LSB facility that is + used by another LSB package. (If you rely on this functionality and + are upgrading from the 1.2 series, you will need to manually reinstall + all of your LSB packages.) + +- As of 3.0-2, a third registry of files installed by lsbinstall is + retained in /var/lib/lsb/lsbinstall. Unlike the other two registries, + it is not designed to be human-readable. + +- The facility handling scripts are written in Python. I am not + particularly attached to them being written in Python, but at the + same time I do not forsee rewriting them in $language_of_choice. + +COMPLIANCE TESTING + +I have been unable to locate any LSB package that tests the init +script functionality of the spec. I am therefore unable to say +whether this package actually works as advertised. I would appreciate +any reports of its success or failure. + +An example init script that tests some of these features is provided +as /usr/share/doc/lsb/examples/init-skeleton. + + -- Chris Lawrence , Sun, 2 Mar 2008 02:20:47 -0600 + + LocalWords: LSB diff --git a/debian/TODO b/debian/TODO new file mode 100644 index 0000000..e22f632 --- /dev/null +++ b/debian/TODO @@ -0,0 +1,6 @@ +A quickie TODO list for lsb*: + +* Finish lsbinstall +* Move dynamic linker symlinks from postinst into package itself. (?) +* Only build lsb-* for LSB architectures in Debian. +* Make lsb stuff available in a Python package. diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..ec74ec1 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,1306 @@ +lsb (4.1+Debian8) unstable; urgency=low + + * Fix libqt3-mt missing epoch. + * Hide the stderr output of $(initctl version) in init_is_upstart. + (Closes: #682032) + + -- Didier Raboud Mon, 05 Nov 2012 12:03:33 +0100 + +lsb (4.1+Debian7) unstable; urgency=low + + * lsb-desktop: Demote Qt3 dependency to a Recommends. Closes: #604360 + - Add a README.Debian to lsb-desktop to document the possibility to + install Qt3 from snapshot.debian.org; + - Add a NEWS.Debian to lsb-desktop to document the derogation to the + LSB 4.1 specification. + + * Accept utf-8 in `apt-cache policy` and `dpkg-query` outputs; add + test-case. (Closes: #675618) + + -- Didier Raboud Sun, 10 Jun 2012 23:18:07 +0200 + +lsb (4.1+Debian6) unstable; urgency=low + + * Revert "Allow FANCYTTY to be sourced from /etc/default/rcS." This + avoids one ugly `set +u` in the $() subshell and avoids the hijack + of /etc/default/rcS. (Reopens: #673207, Closes: #675162, #675197) + + -- Didier Raboud Wed, 30 May 2012 19:27:22 +0200 + +lsb (4.1+Debian5) unstable; urgency=low + + * lsb-base; init-functions: + - Correct comment about hooks. + - Enhance doc about files sourced from init-functions + - Allow FANCYTTY to be sourced from /etc/default/rcS. (Closes: #673207) + - Safe-guard calls to echo with `|| true`; this helps towards making + sure init.d scripts called with `set -e` continue to work, see + #661002. + + * lsb-release; python code: + - In guess_debian_release(), avoid calling guess_release_from_apt() + and hence the slow `apt-cache policy` if a codename is already + provided. Patch by Francois Gouget. (Closes: #674143) + - Add unittests for all lsb_release.py functions. + - Upgrade to python3-compatible syntax. + - Deprecate the lsb_release.compare_releases() function. + + * lsb-invalid-mta; + - Add the /usr/lib/sendmail symlink to /usr/sbin/sendmail. + (LP: #580914) + + -- Didier Raboud Tue, 29 May 2012 09:33:04 +0200 + +lsb (4.1+Debian4) unstable; urgency=low + + * In init-functions, include hooks from /lib/lsb/init-functions.d + - Source any file in there. + - Document that in lsb-base.README. + - Put the Ubuntu logging functions in there; remove the now-obsolete + configuration file with dpkg-maintscript-helper. + - Move the "Fancy output left info blocks" in there. + + * Python code: Add an initial (but incomplete) unittest framework for python + 2.7 and 3.2. + + * Properly document the first version with init_is_upstart. + * Avoid writing the now useless lsb-qt4.substvars file. + + -- Didier Raboud Fri, 18 May 2012 22:06:07 +0200 + +lsb (4.1+Debian3) unstable; urgency=low + + [ Didier Raboud ] + * Compress the orig source tarball with bzip2. + * Update LSB and packages versions in README.Debian. + * Fix typo in lsb-invalid-mta's Description. + * Drop empty directory in lsb-base. + Instead of moving lsb-base-logging.sh to /etc/lsb/, drop the empty /etc/lsb. + (Closes: #671730) + + [ Steve Langasek ] + * Add a new helper function: init_is_upstart(). + init_is_upstart() is to be used by init scripts of upstart-aware packages to + render the init script inert when upstart is present. + Signed-off-by: Didier Raboud (Closes: #661109) + + -- Didier Raboud Mon, 07 May 2012 19:21:36 +0200 + +lsb (4.1+Debian2) unstable; urgency=low + + * Fancy output: + - Avoid two superfluous calls to /bin/echo. + - Make the cursor invisible when printing the status block. + * Make sure OPTIND is marked local for each use. (Closes: #669909) + + -- Didier Raboud Tue, 24 Apr 2012 21:33:39 +0200 + +lsb (4.1+Debian1) unstable; urgency=low + + * lsb-base: Upload the new "Fancy output" to unstable: + - Move information from NEWS.Debian to README.Debian, enhance it. + + * pidofproc(): Make sure to try /bin/pidof when no pidfile is + specified. (Closes: #668958) + * In killproc(), make sure to exit 0 when the program is not running + and when no signal was specified. (Closes: #668416) + + -- Didier Raboud Thu, 19 Apr 2012 11:25:01 +0200 + +lsb (4.1+Debian0+fancy1) experimental; urgency=low + + * Fancy output: prepend [info] blocks to log_action_msg calls. + + -- Didier Raboud Thu, 12 Apr 2012 21:20:09 +0200 + +lsb (4.1+Debian0+fancy0) experimental; urgency=low + + * Make the init.d scripts messages fancier by prepending them a [....] + block that becomes [ ok ], [warn] or [FAIL] depending on the daemons + exit statuses (Closes: #416485). + - Update lsb-base' README.Debian and NEWS. + + -- Didier Raboud Sat, 31 Mar 2012 18:49:23 +0200 + +lsb (4.1+Debian0) unstable; urgency=low + + * Upload LSB 4.1 support to unstable. + * Add lsb-languages to lsb Depends. + * Drop lsb suggests, obsoleted by dependencies changes. + * Make init-functions' status_of_proc return the LSB-documented 3 on + inexistant pidfiles. (Closes: #664621) + + -- Didier Raboud Mon, 26 Mar 2012 22:54:40 +0200 + +lsb (4.1+Debian0~exp2) experimental; urgency=low + + * lsb-base.README.Debian: Document status_of_proc. (Closes: #565631) + * Tighten more dependencies between lsb packages. + * Update package relationships to match LSB 4.1: + - Add lsb-security to lsb-core Depends. + - Add lsb-multimedia to lsb-desktop Depends. + - Add libpod-plainer-perl to lsb-languages depends. + * Rewrite debian/copyright using the copyright-format 1.0. + * Bump Standards-Version to 3.9.3 without changes needed. + + -- Didier Raboud Thu, 15 Mar 2012 11:02:19 +0100 + +lsb (4.1+Debian0~exp1) experimental; urgency=low + + * Merge the lsb 3.2+Debian31 Debian release. + * Tighten dependencies between lsb-* packages. + * In killproc(), re-add a '--retry 5' to s-s-d when no signal is + specified. (Closes: #650584) + + -- Didier Raboud Sun, 11 Mar 2012 17:34:53 +0100 + +lsb (4.1+Debian0~exp0) experimental; urgency=low + + [ Till Kamppeter ] + * Add the "lsb-invalid-mta" package, with a fake sendmail. This allows + the installation of LSB packages to not pull in an MTA any more, + which once adds awkward configuration questions to the installation + process and second adds an often unnneeded daemon to the system. + (LP: #141641) + + [ Didier Raboud ] + * Upgrade to support LSB 4.1. (Closes: #586191, LP: #385606, #386128) + LSB changes: + - Bump Depends: + - on libglib2.0-0 to >= 2.12.13; + - on fontconfig to >= 2.6.0; + - on libglib2.0-0 to >= 2.12.13; + - on libatk1.0-0 to >= 1.10.3; + - on libpango1.0-0 to >= 1.10.4; + - on libgtk2.0-0 to >= 2.10.14; + - Add Depends: + - on libglu1; + - on libcairo2 to >= 1.2.0; + - on libxtst6; + - on ghostscript-cups; + - In lsb, bump lsb-printing from Suggests to Depends. + - Add the lsb-security package. + - Drop the now-obsolete lsb-qt4 package. + Debian changes: + - libgl1-mesa-glx is the first alternative for libgl1; + - Make sure all packages have ${misc:Depends}. + + -- Didier Raboud Mon, 05 Mar 2012 22:42:21 +0100 + +lsb (3.2+Debian31) unstable; urgency=low + + [ Didier Raboud ] + * Correct a bug number in the 3.2+Debian30 upload. + * Promote lsb-release to Priority: optional. + * Fix both unused and undeclared local variables in pidofproc. + (Closes: #663351) + + [ Peter Eisentraut ] + * Handle non-world-readable pid files. (Closes: #653598) + + -- Didier Raboud Sun, 11 Mar 2012 15:04:47 +0100 + +lsb (3.2+Debian30) unstable; urgency=low + + * Drop Depends on essentials sed & ncurses-bin. (Closes: #488237) + * Don't display Debian revision in lsb_release modules version output. + * Update Qt4 relationships to current packaging. (Closes: #661888) + * Remove /lib/ld-lsb-x86-64.so.* only on upgrade. (Closes: #642076) + + -- Didier Raboud Mon, 05 Mar 2012 20:15:43 +0100 + +lsb (3.2+Debian29) unstable; urgency=low + + [ Didier Raboud ] + * Wrap debian/control package relationship lines. + * Put under explicit debian-lsb@l.d.o team maintenance. + (Closes: #616131) + * Add myself as uploader. + * Drop Chris Lawrence from Uploaders with great thanks for his past + work. (Closes: #616131) + * Define source format as '3.0 (native)'. + * Reduce debian/rules using tiny dh7 style. + * Add initial lintian overrides files. + * Add explicit `set -e` to maintainer scripts. + * Drop Conflicts/Replaces for old package versions. + * Install lsb-base-logging.sh on Ubuntu. + * Update the Homepage field to point to the public URL. + (Closes: #653917) + * Depend on cron-daemon, with cron as first alternative. + (Closes: #638004) + * Add Vcs-* fields as this will now be maintained on collab-maint's + Git. + * Correct URLs to refspecs.{freestandards,linuxbase}.org. + * Recognise Debian Ports as `sid` too. (Closes: #624769) + + [ Michael Vogt ] + * Switch from python-central to dh_python2. (Closes: #606354) + + [ Colin Watson ] + * Ensure that files are closed promptly in lsb_release.py + * Mark lsb-base Multi-Arch: foreign. (LP: #904013) + + [ Steve Langasek ] + * Don't run apt-cache if /etc/lsb-release exists. + * Mark lsb-release Multi-Arch: foreign. + * Use $DPKG_MAINTSCRIPT_ARCH in maintainer scripts + + [ Simone Rossetto ] + * Fix for unsupported negative value in pin priorities. + (Closes: #540208) + + [ Michał Kułach ] + * Add the Debconf Polish translation. (Closes: #661251) + + [ Jeff Licquia ] + * Add me to Uploaders. + + -- Didier Raboud Thu, 01 Mar 2012 22:04:11 +0100 + +lsb (3.2-28.1) unstable; urgency=low + + * Non-maintainer upload. + * Fix pending l10n issues. Debconf translations: + - Korean (강민지). Closes: #632010,#632018 + - Catalan; (Innocent De Marchi). Closes: #641828 + + -- Christian Perrier Mon, 16 Jan 2012 07:21:11 +0100 + +lsb (3.2-28) unstable; urgency=low + + * Fix symlinks for AMD64. (Closes: #638450) + * Please note the RFA/ITA for this package (#616131). + + -- Chris Lawrence Fri, 26 Aug 2011 16:25:30 -0400 + +lsb (3.2-27) unstable; urgency=low + + * Track down another use of dpkg --print-installation-architecture. + (Closes: #610049) + * Various cleanups to init-functions, courtesy of Jari Aalto: + + Use /bin/echo when using options throughout. (Closes: #602038) + + Use $() command substitution. (Closes: #602035) + + Use && and || instead of -a and -o. (Closes: #602037) + + Break long lines. (Closes: #602039) + + Cleanup use of local. (Closes: #602042) + + Use single-line statements. (Closes: #602044) + + Use self-documenting values of variables. (Closes: #602048) + + -- Chris Lawrence Mon, 17 Jan 2011 14:24:35 -0600 + +lsb (3.2-26) unstable; urgency=low + + * Fix reversed assignment in compare_release. (Closes: #540208) + * Move lsb(8) to lsb-core package. (Closes: #589101) + * Update da translation of debconf templates; thanks to Joe Dalton. + (Closes: #599461) + + -- Chris Lawrence Wed, 06 Oct 2010 20:35:30 -0500 + +lsb (3.2-25) unstable; urgency=low + + * Improve release comparison function when 'suite' is missing from + sources.list. (Closes: #597667) + * return 3 in pidofproc() if we can't track down a running copy of + the process and the pidfile is missing. (Closes: #597628) + * Correct location of README.Debian.gz in lsb(8). (Closes: #589100) + * Add link to LSB specification in lsb(8). (Closes: #589102) + + -- Chris Lawrence Mon, 27 Sep 2010 01:15:49 -0500 + +lsb (3.2-24) unstable; urgency=low + + * Improve detection of Debian version when there is a "tie" in + APT's sources.list. Patch by Giovanni Mascellani. (Closes: #540208) + * Fix test for PID file in init-functions. Patch by Keith O'Brien. + (Closes: #545896) + * Fix reporting for more recent versions of Debian GNU/kFreeBSD. Patch + by Gonéri Le Bouder. (Closes: #595159) + * Use --print-architecture instead of --print-installation-architecture + in lsb-core postinst. (Closes: #542610) + * Fix formatting error in lsb_release(1). Patch by Adam Guthrie. + (Closes: #586575) + * Update pt_BR translation for debconf messages, thanks to Flamarion Jorge. + (Closes: #596438) + + -- Chris Lawrence Sat, 18 Sep 2010 17:08:17 -0500 + +lsb (3.2-23.1) unstable; urgency=low + + * Non-maintainer upload. + * Fix dependencies of lsb-core on kfreebsd-* and hurd-* to make the + package installable. Thanks to Aurelien Jarno for the patch and the + bugreport. (Closes: #539284) + * Set XS-Python-Version to all to make lsb-release available for all + supported Python versions. Thanks to Sandro Tosi for the bug report. + (Closes: #570586) + * Don't make lsb-core conflict with python (>= 2.6). + + -- Jakub Wilk Sun, 21 Mar 2010 15:39:47 +0100 + +lsb (3.2-23) unstable; urgency=low + + * Fix tests for $TERM in log_use_fancy_output(). (Closes: #537112, #536190) + * Add libnss3-1d and libqt4-sql-sqlite to lsb-desktop dependencies. + (Closes: #534277, #534452) + * Properly trap open() failures in lsb_release. (Closes: #521462) + * Ignore empty arguments in /etc/lsb-release. (Closes: #485565) + May also fix #514041. + * Better test for existant but unreadable PID file. (Closes: #527890) + * Add some punctuation to log_{warning,failure}_msg. (Closes: #525684) + * lsb-core depends on cups-bsd | lpr, since it is more likely that + someone in 2009 will have CUPS installed already than want to use lpr + instead. (Closes: #512098) + + -- Chris Lawrence Tue, 21 Jul 2009 04:03:41 -0500 + +lsb (3.2-22) unstable; urgency=low + + * Fix quoting of $PWD in start-stop-daemon call. (Closes: #520499) + + -- Chris Lawrence Fri, 20 Mar 2009 11:40:50 -0500 + +lsb (3.2-21) unstable; urgency=low + + * Provide lsb_release module for Python applications. (Closes: #486262) + * Change working directory to $PWD in start-stop-daemon, for better + compatibility with LSB applications. (Closes: #519817) + * return 3 rather than 4 in pidofproc if a PID file is specified and + the daemon is not found. (Closes: #494623) + * Improve handling of future testing versions unknown to lsb-release. + Patch by Jan Muszynski (Closes: #517594). + * Fix DeprecationWarning with Python 2.6; patch from Colin Watson and + Anders Kaseorg. (Closes: #517819) + * Bypass guess_debian_release() if /etc/lsb-release is complete. + Patch from Scott James Remnant. (Closes: #511952) + * 'time' was missing from lsb-core dependencies. (Closes: #510488) + * Demote lsb to a suggestion by lsb-release. (Closes: #509611) + + -- Chris Lawrence Thu, 19 Mar 2009 16:29:25 -0500 + +lsb (3.2-20) unstable; urgency=low + + * Revert change in 3.2-16 that broke killproc due to my misunderstanding + of the spec. (Closes: #495587) + * pidofproc now also checks for /var/run/$base.pid if -p is not specified, + fixing conformance with the spec. + + -- Chris Lawrence Mon, 18 Aug 2008 16:34:24 -0500 + +lsb (3.2-19) unstable; urgency=low + + * Return 0 in log_failure_msg too. + + -- Chris Lawrence Mon, 04 Aug 2008 20:29:54 -0500 + +lsb (3.2-18) unstable; urgency=low + + * Also fix case where stdout isn't color-capable. (Closes: #493505, again) + + -- Chris Lawrence Mon, 04 Aug 2008 02:31:03 -0500 + +lsb (3.2-17) unstable; urgency=low + + * log_{success,failure,warning}_msg suck, please don't use them for + Debian scripts. Nonetheless, breakage fixed. (Closes: #493505) + + -- Chris Lawrence Sun, 03 Aug 2008 10:15:45 -0500 + +lsb (3.2-16) unstable; urgency=low + + * Add a bugscript to lsb-release to help figure out why people keep + getting very strange results. + * Lenny will be Debian 5.0, not Debian 4.1; fix accordingly. + * Improve output of lsb-specified logging functions; deal with + in-the-wild variations that omit messages. + * No longer use --retry in start-stop-daemon calls. (Closes: #451529) + * Fix behavior of killproc and pidofproc when no pidfile is passed in. + * Call pidof with -x to include scripts that may be daemonized. + * Change dependencies *cupsys* -> *cups*. (Closes: #490381) + + -- Chris Lawrence Fri, 01 Aug 2008 16:39:43 -0500 + +lsb (3.2-15) unstable; urgency=low + + * Add Basque [eu] translation. (Closes: #491005) + * Fix log_action_end_msg_pre function definition (_post was defined twice). + (Closes: #491087) + + -- Chris Lawrence Wed, 16 Jul 2008 14:24:44 -0500 + +lsb (3.2-14) unstable; urgency=low + + * Update pidofproc(), status_of_proc() to sync with Ubuntu. + Thanks to Dustin Kirkland. (Closes: #490095) + * Add hooks to init-functions, thanks to Miroslav Jezbera. + These are documented in README.Debian in lsb-base. + (Closes: #490408) + + -- Chris Lawrence Mon, 14 Jul 2008 11:30:52 -0500 + +lsb (3.2-13) unstable; urgency=low + + * Include status_of_proc() function from Ubuntu's lsb-base. + Thanks to Dustin Kirkland. (Closes: #483285) + * This patch also allows pidofproc to work on other users' processes. + (Closes: #452992) + * Fix output of lsb_release -h to properly describe what -s does. + (Closes: #479542) + * Add Slovak translation. (Closes: #489265) + * Fix dependencies to not use >>. (Closes: #461340) + * Document init-functions license in debian/copyright. + (Closes: #481281) + * Also fix text of init-functions license to remove the reference to + "the Regents," who didn't author any of init-functions. + + -- Chris Lawrence Tue, 08 Jul 2008 22:03:10 -0500 + +lsb (3.2-12) unstable; urgency=medium + + * Fix reversed test in killproc(). (Closes: #478871) + + -- Chris Lawrence Thu, 01 May 2008 10:08:49 -0500 + +lsb (3.2-11) unstable; urgency=low + + * Depend on gs | ghostscript to help with Python transition. + + -- Chris Lawrence Sat, 26 Apr 2008 15:47:00 -0500 + +lsb (3.2-10) unstable; urgency=low + + * Fix typo in lsb_release. (Closes: #476969) + + -- Chris Lawrence Sun, 20 Apr 2008 09:28:20 -0500 + +lsb (3.2-9) unstable; urgency=low + + * Fix lsb_release detection when apt-cache policy identifies no Debian + sources. (Closes: #476288) + * Only use fancy TTY output if TERM is set and FD 1 is a terminal. + (Closes: #470993) + * Do not use eval in start_daemon(). (Closes: #406059) + + -- Chris Lawrence Thu, 17 Apr 2008 20:38:23 -0500 + +lsb (3.2-8) unstable; urgency=medium + + * Bump conflicts to python < 2.6. (Closes: #475953) + * init-functions: In killproc(), return 0 if program is not running + (instead of 3). (Closes: #475258) + * lsb_release: Due to popular demand, report pinned release rather than + "unstable" on systems with multiple releases in sources.list. + (Closes: #459257) + + -- Chris Lawrence Mon, 14 Apr 2008 01:00:50 -0500 + +lsb (3.2-7) unstable; urgency=low + + * Remove libstdc++5 dependency on all architectures, since it's only + needed before LSB 3.0. + * Revoke provision of lsb-cxx < 3.0 according to lsb_release. + + -- Chris Lawrence Sat, 05 Apr 2008 16:32:13 -0500 + +lsb (3.2-6) unstable; urgency=low + + * Kill old versions of /etc/lsb-release deader. (Closes: #467219) + * Fix debian/rules: + + Change DEB_BUILD_ARCH_CPU -> DEB_HOST_ARCH_CPU + ("host" is what we're building for) + + Detect armel using DEB_HOST_GNU_CPU_TYPE=arm-linux-gnueabi + * Remove duplicate LSB modules from lsb_release -v output. + + -- Chris Lawrence Sun, 30 Mar 2008 17:36:18 -0500 + +lsb (3.2-5) unstable; urgency=low + + * Fix init-functions with set -e. (Closes: #472794) + Patch from Matthias Klose. + * Downgrade optional LSB modules to suggestions from main "lsb" package + (core LSB dependency for LSB 1.x); remove obsolete lsb-qt4 from its + dependencies. + * lsb-desktop now provides lsb-qt4*, essentially making lsb-qt4 a dummy + package. + * lsb-cxx: Don't depend on libstdc++5 on armel. + + -- Chris Lawrence Wed, 26 Mar 2008 10:26:53 -0500 + +lsb (3.2-4) unstable; urgency=high + + * Reverse test in killproc(). (Closes: #469404) + + -- Chris Lawrence Wed, 05 Mar 2008 13:01:08 -0600 + +lsb (3.2-3) unstable; urgency=medium + + * Handle missing $sig in killproc() properly. (Closes: #469167) + + -- Chris Lawrence Mon, 03 Mar 2008 09:01:07 -0600 + +lsb (3.2-2) unstable; urgency=low + + * lsb_release -v now detects the lsb-qt4 version(s) installed correctly. + + -- Chris Lawrence Sun, 02 Mar 2008 18:22:22 -0600 + +lsb (3.2-1) unstable; urgency=low + + * New LSB version. + + Add libpam0g, libncurses5 to lsb-base. + + Add libqt4-gui, libfreetype6, libxrender1, libxft2 to lsb-desktop. + + lsb-qt4 appears to be deprecated by the new lsb-desktop requirements. + + Add new printing, multimedia, and languages modules. + * More killproc() fixes. (Closes: #453636) + * Use /etc/debian_version in preference to apt autodetection. + (Closes: #427221) + * Handle non-zero status from start-stop-daemon better. (Closes: #451532) + * All fancy output uses /bin/echo -e now. (Closes: #463082) + * Add/update translations: + fi (Closes: #447184) + ro (Closes: #468670) + ja (Closes: #462757) + pt (Closes: #439402) + * Ignore invalid lines in /etc/lsb-release. (Closes: #454352) + + -- Chris Lawrence Sun, 02 Mar 2008 02:13:58 -0600 + +lsb (3.1-24) unstable; urgency=low + + * Acknowledge NMU by Christian Perrier. + * Apply patch from Javier Fernández-Sanguino Peña to improve release + detection. (Closes: #425627, #405993) + * lsb-release no longer recommends lsb. (Closes: #426807) + * Update debconf templates per Smith project. (Closes: #422973) + * Add/update translations: + Vietnamese (Closes: #426834) + Galician (Closes: #423685) + Swedish (Closes: #423904) + Czech (Closes: #425154) + Italian (Closes: #425258) + Dutch (Closes: #425710) + French (Closes: #426105) + Malay (Closes: #426237) + German (Closes: #426599) + Russian (Closes: #426741) + Arabic (Closes: #423616) + Spanish (Closes: #423815) + * Don't remove the pidfile in killproc if a signal is specified; the + specification does not specify this behavior, and it can cause + problems with signals like HUP. (Closes: #416559) + * And then, only remove the pidfile if the process is actually dead. + (Closes: #410622) + * Update codename for testing. (Closes: #425646) + + -- Chris Lawrence Wed, 25 Jul 2007 08:56:44 -0500 + +lsb (3.1-23.1) unstable; urgency=low + + * Non-maintainer upload to fix pending l10n issues. + * Debconf translations: + - Portuguese. Closes: #408177 + - Convert PO files to UTF-8, except Japanese + + -- Christian Perrier Sat, 3 Mar 2007 13:12:58 +0100 + +lsb (3.1-23) unstable; urgency=low + + * Remove the pidfile in killproc() if successful. (Closes: #400261) + * Recommend apt in lsb-release; lsb-release can work without it, so + no need to make it a hard dependency. (Closes: #399991) + * Fix missing paragraph break in lsb_release(1). (Closes: #399989) + Above two fixes courtesy of Julian Gibney. + * Add Romanian and Spanish translations of debconf templates. + (Closes: #403421, #403527) + + -- Chris Lawrence Sat, 20 Jan 2007 21:58:36 -0600 + +lsb (3.1-22) unstable; urgency=low + + * Fix crash when the Debian release is identified from + /etc/debian_version and there is no corresponding codename (reported + by Riku Voipio as a result of buildd failures). + * log_use_fancy_output() had unintended behavior under set -e. + (Thanks to Steve Langesek for the heads-up.) + + -- Chris Lawrence Sun, 19 Nov 2006 20:27:59 -0600 + +lsb (3.1-21) unstable; urgency=low + + * lsb_release changes: Improve parsing of apt-cache policy output to be + more flexible; deal with stable revisions in the codename lookup. + + -- Chris Lawrence Sun, 19 Nov 2006 02:12:34 -0600 + +lsb (3.1-20) unstable; urgency=low + + * The "hopefully we can push this into testing now that the bugs are all + shaken out, maybe" release. + * Don't use --name in killproc() when a pidfile is provided; thanks to + Timo Reimann for the patch. (Closes: #397977) + * Give lsb_release's heuristics priority over whatever is in + /etc/debian_version; note that /etc/lsb-release will override both and + should be supplied by derived distributions. (Closes: #396853) + + -- Chris Lawrence Wed, 15 Nov 2006 18:09:02 -0600 + +lsb (3.1-19) unstable; urgency=low + + * Now try the eval hack in start-stop-daemon, since nothing else seems + to work. (Closes: #388836) + + -- Chris Lawrence Mon, 30 Oct 2006 19:08:26 -0600 + +lsb (3.1-18) unstable; urgency=low + + * etch will be Debian 4.0, not Debian 3.2. (Closes: #395004) + * Don't quote $@ in start-stop-daemon calls, which should resolve issues + with multiple/quoted arguments to the daemon in start_daemon(). + (Closes: #388836) + * Revert to testing for a fancy TTY before trying to call tput and friends, + to avoid crap spewage on shutdown. (Closes: #390363, #391981) + + -- Chris Lawrence Fri, 27 Oct 2006 01:18:56 -0500 + +lsb (3.1-17) unstable; urgency=low + + * Set FANCYTTY to a null string to cope with init scripts that for some + reason seem to use set -u. (Closes: #390085) + + -- Chris Lawrence Fri, 29 Sep 2006 01:50:51 -0500 + +lsb (3.1-16) unstable; urgency=low + + * Improve documentation of killproc(). (Closes: #384814) + * Also improve documentation of pidofproc() in the same vein. + * Move lsb_release to /usr. (Closes: #389380) + * Modify log_use_fancy_output() to only test once for a fancy TTY; patch + by Brendan O'Dea. (Closes: #389497) + * Fix semantics of killproc() to behave properly when $sig is specified. + (Closes: #389403) + + -- Chris Lawrence Wed, 27 Sep 2006 18:10:12 -0500 + +lsb (3.1-15) unstable; urgency=low + + * Fix assignment to $opt in pidofproc(). (Closes: #384540) + + -- Chris Lawrence Thu, 24 Aug 2006 19:08:02 -0500 + +lsb (3.1-14) unstable; urgency=low + + * Document LSB init functions more thoroughly in lsb-base's README.Debian. + (Closes: #382597) + + -- Chris Lawrence Fri, 11 Aug 2006 23:41:53 -0500 + +lsb (3.1-13) unstable; urgency=low + + * More tweaks to the getopts calls, to ensure that OPTIND is reset on + each call. (See #381822) + + -- Chris Lawrence Wed, 9 Aug 2006 22:09:42 -0500 + +lsb (3.1-12) unstable; urgency=low + + * Revert log_end_msg() change. (Closes: #381814) + * killproc() returns 0 if a signal is not specified and the program + is not running. (Closes: #379387) + * Divert output in pidofproc test to /dev/null. (Closes: #381821) + * Test tput setaf 1 in log_use_fancy_output(). (Closes: #375644) + * Fix call to getopts in start_daemon to properly work with command + options. (Closes: #381822) + + -- Chris Lawrence Mon, 7 Aug 2006 13:17:40 -0500 + +lsb (3.1-11) unstable; urgency=low + + * Patch for other architectures from Martin Habets + (closes: #375457) + * Stop using basename: patch from Tore Anderson + (closes: #354028) + * Move return code evaluation out of if $specified block in killproc, so + that evaluation is dependant on whether or not process is running, not on + whether a pidfile was specified (closes: #379387) + * log_end_msg no longer returns non-zero. It's a log function, after all + (closes: #381687) + * log_use_fancy_output is now overridable by admin (closes: #374780) + * pidofproc actually checks if process is running (closes: #381684) + (probably closes: #167757) + * Use shell built-in getopts instead of /usr/bin/getopt (closes: #335216) + * Remove reference to /usr/share/doc/lsb-core/html/ (closes: #380045) + * Ru translation (thanks: Yuri Kozlov ) + (closes: #380430) + * Above changes prepared by Stephen Gran . + * Update debian/TODO, which was a wee bit out of date. + * Accomplish Python policy transition. (Closes: #380858) + + -- Chris Lawrence Sun, 6 Aug 2006 18:18:08 -0500 + +lsb (3.1-10) unstable; urgency=low + + * Quote tests of $specified. (Closes: #370256) + + -- Chris Lawrence Mon, 5 Jun 2006 16:00:17 -0400 + +lsb (3.1-9) unstable; urgency=high + + * Add missing < "$pidfile" to read in pidofproc(). (Closes: #370155) + + -- Chris Lawrence Sun, 4 Jun 2006 04:08:31 -0400 + +lsb (3.1-8) unstable; urgency=low + + * Fix killproc() to work if signal isn't specified; also fix the + pidfile check in both killproc() and pidofproc(). (Closes: #370075) + + -- Chris Lawrence Sat, 3 Jun 2006 02:45:55 -0400 + +lsb (3.1-7) unstable; urgency=low + + * lsb-graphics: Depend on libx11-6 | xlibs. (Closes: #369955) + + -- Chris Lawrence Fri, 2 Jun 2006 15:47:52 -0400 + +lsb (3.1-6) unstable; urgency=low + + * Replace uses of $n with ${n:-} where $n could be unbound. + (Closes: #369193) + * Use pidof only if pid file is not specified. (Closes: #365736) + + -- Chris Lawrence Thu, 1 Jun 2006 14:20:24 -0400 + +lsb (3.1-5) unstable; urgency=high + + * Remove /usr/X11R6/bin from lsb-core, since I'm pretty sure it's not + strictly necessary for LSB compliance and it breaks x.org 7.0. + (Closes: #365264) + + -- Chris Lawrence Fri, 28 Apr 2006 17:33:15 -0400 + +lsb (3.1-4) unstable; urgency=high + + * Bump priority since (a) these changes are trivial and (b) 3.1-3 was + two days from testing. + * lsb-desktop: also depend on fontconfig (for fc-* binaries). + * Add Galician debconf translation. (Closes: #361938) + + -- Chris Lawrence Thu, 20 Apr 2006 02:17:12 -0400 + +lsb (3.1-3) unstable; urgency=low + + * Fix dependency on libgtk2. (Closes: #361879) + + -- Chris Lawrence Mon, 10 Apr 2006 22:27:46 -0400 + +lsb (3.1-2) unstable; urgency=low + + * Upload lsb 3.1 support for unstable. + * Really create ld-lsb-x86-64.so.3 symlink. (Closes: #355959) + + -- Chris Lawrence Mon, 10 Apr 2006 14:22:14 -0400 + +lsb (3.1-1) experimental; urgency=low + + * First crack at a package for LSB 3.1. + * Add -desktop and -qt4 metapackages. + * Update README.Debian and control file for 3.1. + * Update lsb_release to recognize lsb-desktop and lsb-qt4 modules. + * Update FSF address in debian/copyright. + * Fix debian/control to allow sarge build. + + -- Chris Lawrence Wed, 29 Mar 2006 16:11:45 -0500 + +lsb (3.0-16) unstable; urgency=low + + * Add ld-linux-x64-64.so.3 symlink on AMD64. (Closes: #355959) + * Depends: ia32-libs -> libc6-i386, lib32z1 on AMD64. (Closes: #355388) + * On purge or upgrade from < lsb-release 3.0-8, remove /etc/lsb-release + if its md5sum is the same as that shipped in sarge. (Closes: #355377) + + -- Chris Lawrence Thu, 9 Mar 2006 01:14:05 -0500 + +lsb (3.0-15) unstable; urgency=low + + * Test $TERM in log_use_fancy_output; if it is "dumb" we don't have a + fancy TTY. (Closes: #350291) + * Better heuristics in lsb_release to guess whether we're running on + testing or unstable. (Closes: #95824, #341231) + Note that /etc/lsb-release, if present, will override these results, + and /etc/debian_version has priority. + * Fix lsb_release to allow multiple fields to be displayed (i.e. + lsb_release --id --codename). + + -- Chris Lawrence Sat, 28 Jan 2006 18:24:49 -0500 + +lsb (3.0-14) unstable; urgency=low + + * Allow lsb-base to be built on sarge. (Closes: #345984) + + -- Chris Lawrence Sun, 8 Jan 2006 20:09:52 -0500 + +lsb (3.0-13) unstable; urgency=medium + + * The "answer all the questions in the changelog" release. + * Skip empty headers when parsing RFC822 headers for init scripts. + (Closes: #343310) + * The versioned dependency on dpkg-dev is due to the use of + DEB_*_ARCH_CPU in debian/rules, which only became available in dpkg + 1.13.2. Feel free to submit a patch to facilitate a sarge backport. + (Closes: #344392) + * Since the lsb family of packages track an upstream specification with + "non-native" version numbering, the use of a hyphenated version number + for these native packages is justified. (Closes: #344384) + (Note that although it does violate policy for a non-native package to + lack a hyphen in its version number, the contrapositive case does not + violate policy.) + * Deal with missing /etc/debian_version. (Closes: #341719) + + -- Chris Lawrence Thu, 29 Dec 2005 03:50:44 -0500 + +lsb (3.0-12) unstable; urgency=low + + * Remove the pidfile in killproc(). (Closes: #321271) + * Declare $i local where it was previously omitted. (Closes: #340667) + * Fix syntax errors in init-skeleton. (Closes: #302009) + * Add sv.po. (Closes: #333595) + + -- Chris Lawrence Tue, 29 Nov 2005 23:01:38 -0500 + +lsb (3.0-11) unstable; urgency=low + + * Use the basename in killproc when calling start-stop-daemon. + (Closes: #332744) + * lsb-base conflicts/replaces lsb-core (<< 2.0-6). (Closes: #335798) + + -- Chris Lawrence Thu, 27 Oct 2005 05:29:07 -0400 + +lsb (3.0-10) unstable; urgency=low + + * Use --name instead of --exec in killproc(). (Closes: #332744) + + -- Chris Lawrence Sun, 16 Oct 2005 15:35:38 -0400 + +lsb (3.0-9) unstable; urgency=low + + * Fix silly Pythonic else in init-functions. (Closes: #329936) + * s/log_action_start_msg/log_action_begin_msg/ in README.Debian. + (Thanks to Marco d'Itri for pointing these two out.) + * If bits of /etc/lsb-release are missing (but not the whole file), use + detected information in its place. + + -- Chris Lawrence Sat, 24 Sep 2005 19:16:00 -0400 + +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: + ed (for /bin/ed) + bsdutils (for /usr/bin/logger) + cupsys-client | lprng (for /usr/bin/lp) + mailutils | mailx (for /usr/bin/mailx) + These are required in the final LSB 3.0 spec. + + -- Chris Lawrence Mon, 19 Sep 2005 18:08:33 -0400 + +lsb (3.0-6) unstable; urgency=low + + * Add ld-lsb.so.3 symlinks. (Closes: #326609) + * Use cat $pidfile instead of read. (Closes: #327405) + If someone knows why the convoluted read was used instead... let me know. + * Test for TPUT and friends as needed. (Closes: #327388, #327825) + * Add log_action_*(). (Closes: #324983) + * Edit README.Debian; fork off a README.Debian for lsb-base. + (Closes: #327525) + * The log_* functions can be overridden in /etc/lsb-base-logging.sh. + (Closes: #321963) + + -- Chris Lawrence Fri, 16 Sep 2005 19:32:29 -0400 + +lsb (3.0-5) unstable; urgency=low + + * Use --exec in calls to start-stop-daemon in killproc(). (Closes: #322770) + + -- Chris Lawrence Fri, 12 Aug 2005 15:18:39 -0500 + +lsb (3.0-4) unstable; urgency=medium + + * Fix LIBC setting; add Alpha support. (Closes: #322316) + * Add support for PPC64. (Closes: #322293) + * Document usage of log_*_msg in README.Debian. + + -- Chris Lawrence Wed, 10 Aug 2005 12:00:57 -0500 + +lsb (3.0-3) unstable; urgency=low + + * Upload to unstable, since glibc 2.3.5 is now in. + * lsb-base is now Priority: important. + * Fix $FANCYTTY tests in a more POSIXly-correct way. (Closes: #322022) + * Get rid of the html/* stuff and references to it in README.Debian. + (Closes: #321260) + * Maintainers who are using the lsb-base logging facilities should + *strongly* consider using log_daemon_msg() instead of log_start_msg(); + the new log_daemon_msg() is designed to meet both Debian and Ubuntu + logging requirements. Customization should come in a subsequent 3.0-x + release. + + -- Chris Lawrence Mon, 8 Aug 2005 15:58:45 -0500 + +lsb (3.0-2) experimental; urgency=low + + * Uploaded to experimental since glibc 2.3.5 is not in sid yet. + * Add /usr/lib/lsb/lsbinstall. + Note: the inetd stuff isn't implemented yet. + * Require glibc >> 2.3.5, since some interfaces in LSB 3.0 were + introduced by glibc 2.3.5. + * Require Python 2.3 or later, so we can use optparse. + * Fix test in pidofproc in /lib/lsb/init-functions. (Closes: #315067) + * Document /etc/profile.d lossage in README.Debian. + * Remove stale link in README.Debian. (Closes: #316064) + * Update German translation. (Closes: #313979) + * Add Vietnamese translation. (Closes: #312606) + * Updated description. (Closes: #318224) + * Use DEB_BUILD_ARCH_CPU instead of DEB_BUILD_ARCH. + * Call /bin/echo when using -e. (Closes: #320709) + * Kludge log_*_msg into being more policy-compliant and (in the case of + the LSB functions) more Debian-like. + * Add log_progress_msg. See spiffy example adapted from the Policy + Manual in init-functions. (Closes: #319739) + + -- Chris Lawrence Mon, 1 Aug 2005 22:45:41 -0500 + +lsb (3.0-1) unstable; urgency=low + + * lsb-cxx now depends on libstdc++6 as well as libstdc++5, necessitated + by LSB 3.0. + * Don't create /lib64 on AMD64. (Closes: #308220) + + -- Chris Lawrence Sun, 8 May 2005 19:11:45 -0500 + +lsb (2.0-7) unstable; urgency=high + + * Fix Replaces line to use the correct version in lsb-base. + (Closes: #301694, RC; Closes: #301747) + + -- Chris Lawrence Sun, 27 Mar 2005 21:42:24 -0600 + +lsb (2.0-6) unstable; urgency=low + + * Create lsb package in binary-indep step. (Closes: #297788) + * Merge /lib/lsb/init-functions from Ubuntu. + * Split /lib/lsb/init-functions into arch-all lsb-base package; this + functionality is thus available for use by other, non-LSB packages. + * Update README.Debian. + + -- Chris Lawrence Fri, 4 Mar 2005 17:42:11 -0600 + +lsb (2.0-5) unstable; urgency=low + + * Upload to unstable. (Closes: #278093) + * Ignore empty headers in init files. (Closes: #292835) + * Add Czech translation of the debconf messages. (Closes: #288015) + + -- Chris Lawrence Sun, 30 Jan 2005 08:01:29 -0600 + +lsb (2.0-4) experimental; urgency=low + + * Fix path of HTML docs in debian/doc-base.lsb-core (Closes: #278357) + + -- Chris Lawrence Tue, 26 Oct 2004 09:16:46 -0500 + +lsb (2.0-3) experimental; urgency=low + + * Fix x86-64 ls-lsb symlink. (Closes: #278093) + + -- Chris Lawrence Sun, 24 Oct 2004 19:50:00 -0500 + +lsb (2.0-2) experimental; urgency=low + + * Upload to experimental so we don't break lsb 2.0-1 in unstable as it + tries to migrate to sarge. + * Split into lsb-core, lsb-graphics, and lsb-cxx packages, leaving lsb + as a metapackage (lsb-graphics and lsb-cxx are also metapackages). + * Include /lib64 in the AMD64 package rather than running mkdir in the + postinst. + * Revise README.Debian for LSB 2.0 and the package split; ensure LSB + package install instructions are in the first page of text. + + -- Chris Lawrence Mon, 20 Sep 2004 21:38:36 -0500 + +lsb (2.0-1) unstable; urgency=high + + * Add lsb-core-{noarch,[arch]} Provides. + * Symlink ld-lsb.so.2 to appropriate dynamic linker. + * Add Japanese translation of debconf template. (Closes: #270926) + * Depend on ia32-libs on amd64. (Closes: #259976) + + -- Chris Lawrence Sun, 19 Sep 2004 18:01:07 -0500 + +lsb (1.3-9) unstable; urgency=low + + * Added Danish po file. (Closes: #234406) + + -- Chris Lawrence Mon, 23 Feb 2004 15:04:37 -0600 + +lsb (1.3-8) unstable; urgency=low + + * Added German po file. (Closes: #223120) + * Depend on exim4 | m-t-a instead of exim | m-t-a. (Closes: #228588) + + -- Chris Lawrence Sat, 31 Jan 2004 20:49:47 -0600 + +lsb (1.3-7) unstable; urgency=medium + + * Conflict with libutahglx1 instead of depending on xlibmesa3-gl. + This will allow XFree86 4.3.0's libgl1 to be installed on the system. + * Move conflicts with Python to 2.5, since 2.4 is not expected to be + backwards incompatible with anything in the lsb package. + + -- Chris Lawrence Tue, 18 Nov 2003 12:02:01 -0600 + +lsb (1.3-6) unstable; urgency=medium + + * Depend on alien 8.36 or later. (Closes: #220177) + * Depend on xlibmesa3-gl instead of libgl1. (Closes: #220523) + * If the pathname supplied to install_initd or remove_initd exists + relative to the cwd, use it rather than prepending /etc/init.d. + (Closes: #207851) + * Added notes for backporting to woody to README.Debian. + + -- Chris Lawrence Mon, 17 Nov 2003 10:05:29 -0600 + +lsb (1.3-5) unstable; urgency=low + + * Note in README.Debian that the --lsbsysinit option in /etc/crontab is + required for strict LSB compliance. (Closes: #214896) + * Re-enable $netdaemons facility in the "internal registry" again, as + gLSB 1.1 included it and some packages appear to still use it. + (Closes: #210578) + * Use ld.so.1 symlink instead of the glibc-version-dependent location + for s390. (Closes: #216824) + + -- Chris Lawrence Wed, 22 Oct 2003 13:17:25 -0500 + +lsb (1.3-4) unstable; urgency=low + + "cobaco": + * Add Dutch translation of debconf template. (Closes: #204921) + Matt Taggart: + * Add ia64 to description. (Closes: #207694) + Tobias Burnus: + * Provide a skeleton LSB init script. (Closes: #207715) + * Numerous improvements to init-functions. (Closes: #207639) + Me: + * Support broken uses of install_initd and remove_initd. + (See #207851; still pondering on start_daemon's behavior.) + + -- Chris Lawrence Wed, 10 Sep 2003 17:40:24 -0500 + +lsb (1.3-3) unstable; urgency=low + + * Depend on pax. (Closes: #203545) + * Add ld.so symlink for ia64. (Closes: #203541) + * Improved French translation. (Closes: #202692) + + -- Chris Lawrence Fri, 8 Aug 2003 18:13:08 -0400 + +lsb (1.3-2) unstable; urgency=low + + * Use iteritems instead of the default iterator when saving the + init script dependency dictionary. (Closes: #202012) + * Add a link to Matt Taggart's DebConf2 talk to README.Debian. + (Closes: #198600) + * Add French translation of debconf prompts. (Closes: #201626) + + -- Chris Lawrence Mon, 21 Jul 2003 12:19:34 -0400 + +lsb (1.3-1) unstable; urgency=low + + * First release of LSB 1.3 for Debian. + * Convert everything to Python 2.2+ style. + * Clean up the parsing of header lines to be fully compliant. + * Add po-debconf patch. (Closes: #186853) + * Don't retry if a signal specified in killproc. (Closes: #167759) + * Revise pidofproc to return a failure code if no pid found. + (Closes: #190719) + * Properly treat Required-Start and Required-Stop as strict dependencies + (install_initd will now fail if they cannot be fulfilled.) + * remove_initd will now fail if removing the init script would cause + another LSB package to be missing a dependency. (However, the + tracking for these dependencies was not done in the past. As this is + part of gLSB 1.9, this should not be a problem.) + * The previous two items were in a single report. (Closes: #198293) + * Support Should-Start and Should-Stop from gLSB 1.9. (Closes: #198277) + (A warning message will be output if a facility requested is unavailable.) + * Support -p argument to killproc, pidofproc and start_daemon, per gLSB 1.9. + (Closes: #197794) + * Set up the ld-lsb symlink in the postinst, so it can vary between + architectures, and remove in the prerm. (Closes: #183617) + Currently only defined for IA32 (i386), PPC32 (powerpc) and S390 + (s390); please let me know the correct link for IA64 (ia64) and any + other ports that may be floating out there. (I'm only interested in + architectures that appear at http://www.linuxbase.org/spec/.) + * Purge the lsb registry on package removal. + * Depend on mawk | gawk; original-awk may not be SUS-compliant. + (See http://www.linuxbase.org/spec/refspecs/LSB_1.3.0/gLSB/gLSB/awk.html) + + -- Chris Lawrence Tue, 24 Jun 2003 03:06:37 -0500 + +lsb (1.2-6) unstable; urgency=medium + + * Fix call to shadowconfig in postinst. (Closes: #166041) + * Add text to the debconf template that lets the user know that shadow + passwords are not needed by most LSB applications. + + -- Chris Lawrence Sat, 26 Oct 2002 07:20:54 -0500 + +lsb (1.2-5) unstable; urgency=medium + + * Remove duplicate --retry 5 from start-stop-daemon call. (Closes: #165395) + * Fix bugs in the init script registry code. (Closes: #165038) + + -- Chris Lawrence Tue, 22 Oct 2002 06:23:03 -0500 + +lsb (1.2-4) unstable; urgency=low + + * Support more specifications for the signal in "killproc". + (Closes: #163109) + + -- Chris Lawrence Fri, 4 Oct 2002 07:09:22 -0500 + +lsb (1.2-3) unstable; urgency=low + + * Return non-zero exit status if "pidofproc" can't find the process. + (Closes: #157314) + + -- Chris Lawrence Wed, 21 Aug 2002 13:20:09 -0500 + +lsb (1.2-2) unstable; urgency=low + + * Fix silly typos in install_initd. (Closes: #152544) + * Fix duplicated --retry 5. (Closes: #152552) + + -- Chris Lawrence Wed, 10 Jul 2002 15:48:10 -0500 + +lsb (1.2-1) unstable; urgency=low + + * ADV: Matt Taggart will be giving a presentation on LSB in Debian at + Debconf2 on Sunday afternoon; your attendence and attentiveness is + strongly encouraged :-) + + * First release of LSB 1.2 (hopefully-)compliant package. + * Added link to joeyh's LSB testing page to README.Debian. + * Revised README.Debian in light of LSB 1.2's improved verbiage. + * Added support for facilities introduced in gLSB 1.2. (Closes: #148568) + - $time: start >= S24, stop <= K21 + - $portmap: start >= S19, stop <= K34 + * Removed support for the $netdaemons facility, which vanished from the + specification. Hopefully nobody is using it... + * Call pidof if it's available and /var/run/$1.pid doesn't exist. + + -- Chris Lawrence Tue, 2 Jul 2002 19:48:35 -0500 + +lsb (1.1.0-11) unstable; urgency=low + + * Note that Debian's run-parts ignores certain lsb cron.* scripts, in + violation of the LSB specification. See #118646. + (If necessary, run-parts may be diverted by this package to conform.) + + -- Chris Lawrence Mon, 15 Apr 2002 02:25:51 -0500 + +lsb (1.1.0-10) unstable; urgency=low + + * Force removal of rc.d links in remove_initd. (Closes: #139400) + + -- Chris Lawrence Thu, 21 Mar 2002 22:43:01 -0600 + +lsb (1.1.0-9) unstable; urgency=low + + * Improve error handing in {install,remove}_initd when no argument is + specified. + * Fix minor syntax error in outputing the facilities file. + * Move facilities file handling into the initdutils module. + * Changed facilities file format to allow multiple init scripts to + provide the same facility w/o crashing. + * These changes should solve all the init script handing bugs; thanks to + Tobias Burnus for his testing. + + -- Chris Lawrence Tue, 19 Mar 2002 20:40:50 -0600 + +lsb (1.1.0-8) unstable; urgency=low + + * Fix typo in debian/rules. (Closes: #138945) + * Rewrite the init script handling to improve modularity. + * Fix typos in regexes in init script handling. (Closes: #138946) + + -- Chris Lawrence Tue, 19 Mar 2002 14:47:43 -0600 + +lsb (1.1.0-7) unstable; urgency=low + + * Fix remove_initd in line with the changes to install_initd. + + -- Chris Lawrence Sun, 17 Mar 2002 19:46:21 -0600 + +lsb (1.1.0-6) unstable; urgency=medium + + * Fix typos in init functions. (Closes: #138766) + * Move init-functions to /lib/lsb. (Closes: #138762) + * Fix logic errors in start_daemon. (Closes: #138771) + * Fix init script header processing to accomodate minor deviations from + the LSB spec. (Closes: #138789) + + -- Chris Lawrence Sun, 17 Mar 2002 18:27:42 -0600 + +lsb (1.1.0-5) unstable; urgency=low + + * Include /usr/X11R6/bin to make the LSB test suite happy. Document + LSB's lack of specification of an X server or any clients as required + for compliance (hence making it odd that /usr/X11R6/bin would be + needed, as it could conceivably be empty). (Closes: #136713) + * Prompt on installation if shadow passwords appear to be disabled, and + enable them if requested. (Closes: #136806) + * Fix the spelling of Matt Taggart's name in README.Debian. + + -- Chris Lawrence Fri, 8 Mar 2002 23:19:39 -0600 + +lsb (1.1.0-4) unstable; urgency=low + + * Clean up directories to omit those present in current base-files. + * Rearrange README.Debian to put installation discussion near the top. + + -- Chris Lawrence Sun, 24 Feb 2002 23:51:05 -0600 + +lsb (1.1.0-3) unstable; urgency=low + + * Release candidate. + * Include HTML files from Matt Taggart comparing + the LSB spec to Debian. + * Clean up dependency list. + * Convert to arch-independent package. + * Add lsb(8) manpage. + + -- Chris Lawrence Sun, 24 Feb 2002 21:42:26 -0600 + +lsb (1.1.0-2) unstable; urgency=low + + * Update README.Debian and install_initd to implement a few changes: + - uid/gid for bin is documented. + - treat RL 2-5 as the same, because nothing else sensible seems + available. + + -- Chris Lawrence Mon, 18 Feb 2002 20:08:23 -0600 + +lsb (1.1.0-1) unstable; urgency=low + + * Initial Release. (Closes: #134658) + + -- Chris Lawrence Sun, 17 Feb 2002 14:07:32 -0600 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7f8f011 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +7 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..884a05e --- /dev/null +++ b/debian/control @@ -0,0 +1,364 @@ +Source: lsb +Section: misc +Priority: extra +Maintainer: Debian LSB Team +Uploaders: Didier Raboud , Jeff Licquia +Build-Depends: debhelper (>> 7.0.50~), + po-debconf (>= 0.5.0), + dpkg-dev (>= 1.10), + python-all-dev (>= 2.6.6-6~), +X-Python-Version: >= 2.6 +Standards-Version: 3.9.3 +Homepage: http://www.linuxfoundation.org/collaborate/workgroups/lsb +Vcs-Git: git://anonscm.debian.org/collab-maint/lsb.git +Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/lsb.git + +Package: lsb-core +Architecture: any +Depends: lsb-release (>= ${source:Version}), + ${glibc}, + libz1, + libncurses5, + libpam0g, + lsb-invalid-mta (>= ${source:Version}) | mail-transport-agent, + at, + bc, + binutils, + bsdmainutils, + bsdutils, + cpio, + cron | cron-daemon, + ed, + file, + libc6-dev | libc-dev, + locales, + cups-bsd | lpr, + lprng | cups-client, + m4, + mailutils | mailx, + make, + man-db, + mawk | gawk, + ncurses-term, + passwd, + patch, + pax, + procps, + psmisc, + rsync, + alien (>= 8.36), + ${python:Depends}, + ${misc:Depends}, + ${depends}, + lsb-base (>= ${source:Version}), + lsb-security (>= ${source:Version}), + time +Provides: lsb-core-noarch, ${provides} +Description: Linux Standard Base 4.1 core support package + The Linux Standard Base (http://www.linuxbase.org/) is a standard + core system that third-party applications written for Linux can + depend upon. + . + This package provides an implementation of the core of version 4.1 of + the Linux Standard Base for Debian on the Intel x86, Intel ia64 + (Itanium), IBM S390, and PowerPC 32-bit architectures with the Linux + kernel. Future revisions of the specification and this package may + support the LSB on additional architectures and kernels. + . + The intent of this package is to provide a best current practice way + of installing and running LSB packages on Debian GNU/Linux. Its + presence does not imply that Debian fully complies + with the Linux Standard Base, and should not be construed as a + statement that Debian is LSB-compliant. + +Package: lsb-graphics +Architecture: any +Depends: lsb-core (>= ${source:Version}), + libgl1-mesa-glx | libgl1, + libglu1-mesa | libglu1, + libx11-6 | xlibs, + ${misc:Depends} +Provides: lsb-graphics-noarch, ${provides} +Description: Linux Standard Base 4.1 graphics support package + The Linux Standard Base (http://www.linuxbase.org/) is a standard + core system that third-party applications written for Linux can + depend upon. + . + This package provides an implementation of version 4.1 of the Linux + Standard Base graphics specification for Debian on the Intel x86, + Intel ia64 (Itanium), IBM S390, and PowerPC 32-bit architectures with + the Linux kernel. Future revisions of the specification and this + package may support the LSB on additional architectures and kernels. + . + The intent of this package is to provide a best current practice way + of installing and running LSB packages on Debian GNU/Linux. Its + presence does not imply that Debian fully complies + with the Linux Standard Base, and should not be construed as a + statement that Debian is LSB-compliant. + +Package: lsb-cxx +Architecture: any +Depends: lsb-core (>= ${source:Version}), + libstdc++6, + ${misc:Depends} +Provides: lsb-cxx-noarch, + ${provides} +Description: Linux Standard Base 4.1 C++ support package + The Linux Standard Base (http://www.linuxbase.org/) is a standard + core system that third-party applications written for Linux can + depend upon. + . + This package provides an implementation of version 4.1 of the Linux + Standard Base C++ (CXX) specification for Debian on the Intel x86, + Intel ia64 (Itanium), IBM S390, and PowerPC 32-bit architectures with + the Linux kernel. Future revisions of the specification and this + package may support the LSB on additional architectures and kernels. + . + The intent of this package is to provide a best current practice way + of installing and running LSB packages on Debian GNU/Linux. Its + presence does not imply that Debian fully complies + with the Linux Standard Base, and should not be construed as a + statement that Debian is LSB-compliant. + +Package: lsb-desktop +Architecture: any +Depends: lsb-graphics (>= ${source:Version}), + lsb-multimedia (>= ${source:Version}), + fontconfig (>= 2.6.0), + libfontconfig1 (>= 2.6.0), + libpng12-0, + libjpeg62, + libglib2.0-0 (>= 2.12.13), + libatk1.0-0 (>= 1.10.3), + libpango1.0-0 (>= 1.10.4), + libgtk2.0-0 (>= 2.10.14), + libcairo2 (>= 1.2.0), + libqtcore4, + libqtgui4, + libqt4-xml, + libqt4-opengl, + libqt4-sql, + libqt4-svg, + libqt4-network, + libqt4-sql-sqlite, + libxml2, + libfreetype6, + libxrender1, + libxtst6, + libxft2, + xdg-utils, + libnss3-1d, + ${misc:Depends} +# libqt4-sql-sqlite is Not strictly needed by LSB, but the tests want a valid database handler +Recommends: libqt3-mt (>= 3:3.3.6) +Provides: lsb-desktop-noarch, lsb-qt4, lsb-qt4-noarch, ${provides} +Description: Linux Standard Base 4.1 Desktop support package + The Linux Standard Base (http://www.linuxbase.org/) is a standard + core system that third-party applications written for Linux can + depend upon. + . + This package provides an implementation of version 4.1 of the Linux + Standard Base Desktop specification for Debian on the Intel x86, + Intel ia64 (Itanium), IBM S390, and PowerPC 32-bit architectures with + the Linux kernel. Future revisions of the specification and this + package may support the LSB on additional architectures and kernels. + . + The intent of this package is to provide a best current practice way + of installing and running LSB packages on Debian GNU/Linux. Its + presence does not imply that Debian fully complies with the Linux + Standard Base, and should not be construed as a statement that Debian + is LSB-compliant. + +Package: lsb-languages +Architecture: any +Depends: lsb-core (>= ${source:Version}), + python (>= 2.4), + perl (>= 5.8.8), + perl (<< 6), +# Already deprecated in LSB4.1, but still required. + libpod-plainer-perl, + ${misc:Depends} +Provides: lsb-languages-noarch, ${provides} +Description: Linux Standard Base 4.1 Runtime Languages package + The Linux Standard Base (http://www.linuxbase.org/) is a standard + core system that third-party applications written for Linux can + depend upon. + . + This package provides an implementation of version 4.1 of the Linux + Standard Base Languages specification for Debian on the Intel x86, + Intel ia64 (Itanium), IBM S390, and PowerPC 32-bit architectures with + the Linux kernel. Future revisions of the specification and this + package may support the LSB on additional architectures and kernels. + . + The intent of this package is to provide a best current practice way + of installing and running LSB packages on Debian GNU/Linux. Its + presence does not imply that Debian fully complies + with the Linux Standard Base, and should not be construed as a + statement that Debian is LSB-compliant. + +Package: lsb-multimedia +Architecture: any +Depends: lsb-core (>= ${source:Version}), + libasound2, + ${misc:Depends} +Provides: lsb-multimedia-noarch, + ${provides} +Description: Linux Standard Base 4.1 Multimedia package + The Linux Standard Base (http://www.linuxbase.org/) is a standard + core system that third-party applications written for Linux can + depend upon. + . + This package provides an implementation of version 4.1 of the Linux + Standard Base Multimedia specification for Debian on the Intel x86, + Intel ia64 (Itanium), IBM S390, and PowerPC 32-bit architectures with + the Linux kernel. Future revisions of the specification and this + package may support the LSB on additional architectures and kernels. + . + The intent of this package is to provide a best current practice way + of installing and running LSB packages on Debian GNU/Linux. Its + presence does not imply that Debian fully complies + with the Linux Standard Base, and should not be construed as a + statement that Debian is LSB-compliant. + +Package: lsb-printing +Architecture: any +Depends: lsb-core (>= ${source:Version}), + libcups2, + libcupsimage2, + foomatic-filters, + ghostscript, + ghostscript-cups, + ${misc:Depends} +Provides: lsb-printing-noarch, ${provides} +Description: Linux Standard Base 4.1 Printing package + The Linux Standard Base (http://www.linuxbase.org/) is a standard + core system that third-party applications written for Linux can + depend upon. + . + This package provides an implementation of version 4.1 of the Linux + Standard Base Printing specification for Debian on the Intel x86, + Intel ia64 (Itanium), IBM S390, and PowerPC 32-bit architectures with + the Linux kernel. Future revisions of the specification and this + package may support the LSB on additional architectures and kernels. + . + The intent of this package is to provide a best current practice way + of installing and running LSB packages on Debian GNU/Linux. Its + presence does not imply that Debian fully complies + with the Linux Standard Base, and should not be construed as a + statement that Debian is LSB-compliant. + +Package: lsb-security +Architecture: any +Depends: libnss3-1d, + libnspr4-0d, + ${misc:Depends} +Recommends: lsb-core (>= ${source:Version}), +Provides: lsb-security-noarch, + ${provides} +Description: Linux Standard Base 4.1 Security package + The Linux Standard Base (http://www.linuxbase.org/) is a standard + core system that third-party applications written for Linux can + depend upon. + . + This package provides an implementation of version 4.1 of the Linux + Standard Base Security specification for Debian on the Intel x86, + Intel ia64 (Itanium), IBM S390, and PowerPC 32-bit architectures with + the Linux kernel. Future revisions of the specification and this + package may support the LSB on additional architectures and kernels. + . + The intent of this package is to provide a best current practice way + of installing and running LSB packages on Debian GNU/Linux. Its + presence does not imply that Debian fully complies + with the Linux Standard Base, and should not be construed as a + statement that Debian is LSB-compliant. + +Package: lsb +Architecture: all +Depends: lsb-core (>= ${source:Version}), + lsb-graphics (>= ${source:Version}), + lsb-cxx (>= ${source:Version}), + lsb-desktop (>= ${source:Version}), + lsb-printing (>= ${source:Version}), + lsb-languages (>= ${source:Version}), + ${misc:Depends} +Description: Linux Standard Base 4.1 support package + The Linux Standard Base (http://www.linuxbase.org/) is a standard + core system that third-party applications written for Linux can + depend upon. + . + This package provides an implementation of all modules of version 4.1 + of the Linux Standard Base for Debian on the Intel x86, Intel ia64 + (Itanium), IBM S390, and PowerPC 32-bit architectures with the Linux + kernel. Future revisions of the specification and this package may + support the LSB on additional architectures and kernels. + . + The intent of this package is to provide a best current practice way + of installing and running LSB packages on Debian GNU/Linux. Its + presence does not imply that Debian fully complies + with the Linux Standard Base, and should not be construed as a + statement that Debian is LSB-compliant. + +Package: lsb-base +Architecture: all +Multi-Arch: foreign +Depends: ${misc:Depends} +Pre-Depends: ${misc:Pre-Depends} +Priority: required +Description: Linux Standard Base 4.1 init script functionality + The Linux Standard Base (http://www.linuxbase.org/) is a standard + core system that third-party applications written for Linux can + depend upon. + . + 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 +Priority: optional +Multi-Arch: foreign +Depends: ${python:Depends}, + ${misc:Depends} +Recommends: apt +Suggests: lsb +Description: Linux Standard Base version reporting utility + The Linux Standard Base (http://www.linuxbase.org/) 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 + installed. + . + 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. + +Package: lsb-invalid-mta +Architecture: all +Depends: ${misc:Depends} +Suggests: lsb +Provides: mail-transport-agent +Conflicts: mail-transport-agent +Description: Linux Standard Base sendmail dummy + The Linux Standard Base (http://www.linuxbase.org/) is a standard + core system that third-party applications written for Linux can + depend upon. + . + This package contains nothing else than a fake /usr/sbin/sendmail + command to fulfill the LSB's requirement of providing this command without + requiring an MTA to get installed, which once introduces a daemon which + can cause security problems and second, users get asked questions about + how they want their MTA configured when in reality they simply wanted to + install a desktop application or a printer driver, but the dependency on + LSB compliance pulls in an MTA with the installation. + . + The LSB requirement on /usr/sbin/sendmail comes from old times where Linux + and Unix machines had all fixed IPs and did server tasks in data centers. + Today's typical desktop Linux machines do not do local e-mail any more as + users use external e-mail services. + . + The /usr/sbin/sendmail always exits with exit status -1 (255) and sends a + warning message to stderr, so that if a program actually tries to send e-mail + via the sendmail command the user gets note. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..9828901 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,59 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: LSB implementation package + +Files: * +Copyright: 2002-2010, Chris Lawrence +License: GPL-2 + +Files: lsb-base-logging-ubuntu.sh +Copyright: 2005, Colin Watson + 2011, Stéphane Graber +License: GPL-2 + +Files: init-functions +Copyright: 2002-2009, Chris Lawrence +License: BSD-3-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the author nor the names of other contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS + BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: GPL-2 + This program 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 program is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the 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., 51 Franklin St, Fifth Floor, + Boston, MA 02110-1301 USA + . + On Debian systems, the full text of the GNU General Public + License version 2 can be found in the file + `/usr/share/common-licenses/GPL-2'. diff --git a/debian/lsb-base.NEWS b/debian/lsb-base.NEWS new file mode 100644 index 0000000..476ddc6 --- /dev/null +++ b/debian/lsb-base.NEWS @@ -0,0 +1,17 @@ +lsb (4.1+Debian1) unstable; urgency=low + + This version implements a new "Fancy output" in the form of "[....] " + blocks prepended to the daemon status messages: + + Before: + Starting/stopping long daemon name: daemond daemon2d + After: + [....] Starting/stopping long daemon name: daemond daemon2d + + This block will become either a green [ ok ], a yellow [warn] + or a red [FAIL] depending on the daemon exit status. + + The "Fancy output" can be disabled by setting the FANCYTTY variable to 0 + in the /etc/lsb-base-logging.sh configuration file. + + -- Didier Raboud Thu, 19 Apr 2012 11:25:01 +0200 diff --git a/debian/lsb-base.README.Debian b/debian/lsb-base.README.Debian new file mode 100644 index 0000000..3f86d93 --- /dev/null +++ b/debian/lsb-base.README.Debian @@ -0,0 +1,234 @@ +lsb-base for Debian +------------------- + +The Debian lsb-base package provides a series of logging functions to +permit simplified logging of init script actions. These functions are +specific to Debian and (in some cases) other derived distributions. + + - log_daemon_msg "Starting/stopping long daemon name" "daemond" + + Log starting/stopping of daemons. On Debian, outputs: + + "Starting/stopping long daemon name: daemond" + + and leaves the cursor at the end of the line. If "Fancy output" is + enabled, outputs: + + "[....] Starting/stopping long daemon name: daemond" + + and leaves the cursor at the end of the line. + + - log_progress_msg "daemon2d" + + Log startup of a second daemon (e.g. sysklogd, nfs init scripts). + On Debian, outputs " daemon2d" and leaves the cursor at the EOL. + + - log_end_msg 0/1 + + Log successful startup. On Debian, outputs "." followed by newline. + A non-zero code may also be specified, which indicates failure; + currently implemented as outputting "failed!" (in red on a color + TTY) followed by newline. + + Unsucessful startup will cause the specified failure code to be + returned by this function; unless trapped, this may end your init + script depending on whether or not set -e is used. + + If "Fancy output" is enabled, it will store the cursor position, + move it to the start of the line, write a colored "[ ok ]", "[FAIL]" + or "[warn]" and restore the cursor position. This has the effect of + updating the "[....]" printed by log_daemon_msg. + + - log_action_msg "Setting VARIABLE to VALUE" + + Log an atomic action by your init script. Typically, this is the + setting of a kernel variable, but it might be something else that is + not expected to take any time (or fail). + + On Debian, a trailing period will be added to the message, followed by + a newline. If "Fancy output" is enabled, the message will get prepended + with a blue [info]. + + - log_action_begin_msg "Configuring network interfaces" + + Log the start of an action that is expected to take some time. On + Debian, an elipsis (...) will follow the message, and the cursor will + stay at EOL. + + If "Fancy output" is enabled, it will get the same [....] block as + log_daemon_msg. + + - log_action_cont_msg "flushing ARP cache" + + Log an action as part of a process started by log_action_start_msg(). + On Debian, this message will receive a trailing elipsis, and the cursor + will stay at EOL. + + - log_action_end_msg {0|1} ["message"] + + Log the end of the action started by log_action_start_msg(). If one + argument is supplied, either "done." (0) or "failed." (1) will be output, + followed by a newline. If a second argument is supplied, the message + will appear as follows: + + "done (your message here)." --- if first argument is 0 + "failed (your message here)." --- if first argument is 1 + + This argument must be quoted, or otherwise only the first word will + be output. + + On color TTYs, the failure messages will be red. + + Note that unlike log_end_msg(), this function does not return the + first argument as its exit code. + + - status_of_proc [-p pidfile] pathname "Daemon_name" + + Log the status of a process and return an LSB-compliant exit status + code: + + 0 program is running or service is OK + 1 program is dead and /var/run pid file exists + 2 program is dead and /var/lock lock file exists + 3 program is not running + 4 program or service status is unknown + 5-99 reserved for future LSB use + 100-149 reserved for distribution use + 150-199 reserved for application use + 200-254 reserved + + On Debian, outputs: + "Daemon_name is running.". + "Daemon_name is not running ... failed!" + + The pidfile path will be used as argument for pidofproc and must be + provided if the pidfile is not /var/run/$daemon_basename.pid. + + status_of_proc can be used to easily implement the "status" argument + of init scripts: + + status) + status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? + ;; + + - init_is_upstart + + If the currently running init daemon is upstart, return zero; if the + calling init script belongs to a package which also provides a native + upstart job, it should generally exit non-zero in this case. + + init_is_upstart is available since lsb-base 4.1+Debian3. + +To use these functions, source /lib/lsb/init-functions at the +beginning of your (Bourne sh or compatible) init script. + +Please depend on lsb-base to ensure all of these functions are available +for your init scripts. + +LSB LOGGING FUNCTIONS + +This package also includes the LSB-specified logging functions: + +log_success_msg message +log_failure_msg message +log_warning_msg message + +These functions *do not* comply with Debian policy and should only be used +by LSB packages. + +OTHER LSB FUNCTIONALITY + +start_daemon [-f] [-n nicelevel] [-p pidfile] pathname [args...] + Start "pathname" as a daemon. We call Debian's start-stop-daemon to + implement this functionality. + +killproc [-p pidfile] pathname [signal] + Stops "pathname" (using "pidfile", if specified, to find the process + ID). This is implemented using start-stop-daemon as well. + +pidofproc [-p pidfile] pathname + Find the process ID of pathname. If the pidfile is specified, we use the + first space-delimited word; otherwise, /bin/pidof is used from the + sysvinit package, if available. + +For full documentation, please refer to: + +http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html + +Note: Debian packages probably should use start-stop-daemon directly; +however, these functions may be useful in porting init scripts from +other distributions. Also, if you are developing software for wider +use, you should not expect these functions to be implemented +identically on other LSB-conforming distributions; the only guaranteed +behaviors are those in the specification above. + +CUSTOMIZING LOGGING OUTPUT + + - FOR PACKAGES AND DISTRIBUTIONS + +Since lsb-base 4.1+Debian4, init-functions will source all +correctly-named files under /lib/lsb/init-functions.d for the purpose of +allowing packages to alter or enhance the init-functions functions. + +By providing a file in there, any package or derivative distribution can +override the default behaviour of /lib/lsb/init-functions: logging init +script events, changing the logging messages format, etc. + +If supplied, these script fragments shall be compatible with any Debian +/bin/sh, as init scripts sourcing /lib/lsb/init-functions may be running +under any Bourne-style shell permitted by Debian policy (i.e. not just +bash). + + - FOR ADMINISTRATORS + +After those distribution-provided files, if it exists, +/etc/lsb-base-logging.sh will be sourced by /lib/lsb/init-functions. +This file is to be supplied by the administrator for machine-specific +overrides. This file may also be useful on systems where the console log +is not visible during startup. + +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). + + - FANCY OUTPUT + +"Fancy output" can be overridden by setting FANCYTTY=0 in +/etc/lsb-base-logging.sh . + + - OUTPUT FUNCTIONS + +From lsb-base 3.2-14, you can use the following hook functions which +are called by the appropriate functions, instead of supplying your own +logging functions: + +log_daemon_msg_pre +log_daemon_msg_post +log_begin_msg_pre (since 4.1+Debian1) +log_begin_msg_post (since 4.1+Debian1) +log_action_msg_pre (since 4.1+Debian1) +log_action_msg_post (since 4.1+Debian1) +log_action_begin_msg_pre (since 4.1+Debian1) +log_action_begin_msg_post (since 4.1+Debian1) +log_end_msg_pre +log_end_msg_post +log_action_end_msg_post +log_action_end_msg_post + +Each function receives all of the arguments sent to the parent +function; the "pre" functions operate before any output, while the +"post" functions operate after the output is produced. + +FANCY OUTPUT, KNOWN BUGS + + * Daemons writing too much information on the screen (hence getting + their output spawned on multiple lines) won't get their [....] + replaced by [ ok ] as the replacement will happen on the last input + line. + * The above has the side-effect of hiding 7 characters of potentially + useful output. + * init.d scripts not using the /lib/lsb/init-functions provided + functions will (obviously) not get the fancy output. + + -- Chris Lawrence , Sat, 18 Sep 2010 17:09:57 -0500 + -- Didier Raboud Mon, 21 May 2012 15:00:10 +0200 diff --git a/debian/lsb-base.dirs b/debian/lsb-base.dirs new file mode 100644 index 0000000..acead11 --- /dev/null +++ b/debian/lsb-base.dirs @@ -0,0 +1 @@ +/lib/lsb/init-functions.d diff --git a/debian/lsb-base.install b/debian/lsb-base.install new file mode 100644 index 0000000..66dc0df --- /dev/null +++ b/debian/lsb-base.install @@ -0,0 +1,2 @@ +init-functions /lib/lsb +init-functions.d/20-left-info-blocks /lib/lsb/init-functions.d diff --git a/debian/lsb-base.maintscript.Ubuntu b/debian/lsb-base.maintscript.Ubuntu new file mode 100644 index 0000000..efdcca8 --- /dev/null +++ b/debian/lsb-base.maintscript.Ubuntu @@ -0,0 +1 @@ +rm_conffile /etc/lsb-base-logging.sh 4.1+Debian4 lsb-base diff --git a/debian/lsb-core.config b/debian/lsb-core.config new file mode 100755 index 0000000..88952b5 --- /dev/null +++ b/debian/lsb-core.config @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +. /usr/share/debconf/confmodule + +if [ ! -e /etc/shadow ]; then + db_input medium lsb/shadowconfig || true +fi +db_go + +#DEBHELPER# diff --git a/debian/lsb-core.dirs b/debian/lsb-core.dirs new file mode 100644 index 0000000..d3d8c10 --- /dev/null +++ b/debian/lsb-core.dirs @@ -0,0 +1,3 @@ +usr/lib/lsb +var/lib/lsb +etc/profile.d diff --git a/debian/lsb-core.examples b/debian/lsb-core.examples new file mode 100644 index 0000000..3ef7215 --- /dev/null +++ b/debian/lsb-core.examples @@ -0,0 +1 @@ +test/init-skeleton diff --git a/debian/lsb-core.install b/debian/lsb-core.install new file mode 100644 index 0000000..eaee1e9 --- /dev/null +++ b/debian/lsb-core.install @@ -0,0 +1,4 @@ +initdutils.py /usr/lib/lsb +install_initd /usr/lib/lsb +remove_initd /usr/lib/lsb +lsbinstall /usr/lib/lsb diff --git a/debian/lsb-core.lintian-overrides b/debian/lsb-core.lintian-overrides new file mode 100644 index 0000000..64b2b9f --- /dev/null +++ b/debian/lsb-core.lintian-overrides @@ -0,0 +1,2 @@ +# The purpose of LSB is to ensure that those packages are present. Being explicit cannot hurt. +depends-on-essential-package-without-using-version depends: bsdutils diff --git a/debian/lsb-core.manpages b/debian/lsb-core.manpages new file mode 100644 index 0000000..44c423d --- /dev/null +++ b/debian/lsb-core.manpages @@ -0,0 +1 @@ +lsb.8 diff --git a/debian/lsb-core.postinst b/debian/lsb-core.postinst new file mode 100755 index 0000000..435d1e0 --- /dev/null +++ b/debian/lsb-core.postinst @@ -0,0 +1,71 @@ +#!/bin/sh + +set -e + +setup_ldso_symlink () { + ARCH=$DPKG_MAINTSCRIPT_ARCH + if [ -z "$ARCH" ]; then + ARCH=$(dpkg --print-architecture) + fi + case "$ARCH" in + s390|ppc64|sparc|sparc64|alpha|hppa|m68k|mipsel) + ln -sf ld.so.1 /lib/ld-lsb-$ARCH.so.1 + ln -sf ld.so.1 /lib/ld-lsb-$ARCH.so.2 + ln -sf ld.so.1 /lib/ld-lsb-$ARCH.so.3 + ;; + powerpc) + ln -sf ld.so.1 /lib/ld-lsb-ppc32.so.1 + ln -sf ld.so.1 /lib/ld-lsb-ppc32.so.2 + ln -sf ld.so.1 /lib/ld-lsb-ppc32.so.3 + ;; + i386) + ln -sf ld-linux.so.2 /lib/ld-lsb.so.1 + ln -sf ld-linux.so.2 /lib/ld-lsb.so.2 + ln -sf ld-linux.so.2 /lib/ld-lsb.so.3 + ;; + amd64) + ln -sf ld-linux.so.2 /lib/ld-lsb.so.1 + ln -sf ld-linux.so.2 /lib/ld-lsb.so.2 + ln -sf ld-linux.so.2 /lib/ld-lsb.so.3 + ln -sf ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.2 + ln -sf ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 + ;; + ia64) + ln -sf ld-linux-ia64.so.2 /lib/ld-lsb-ia64.so.1 + ln -sf ld-linux-ia64.so.2 /lib/ld-lsb-ia64.so.2 + ln -sf ld-linux-ia64.so.2 /lib/ld-lsb-ia64.so.3 + ;; + *) + echo "ld-lsb-*.so.1 symlink for $ARCH is unknown!" + ;; + esac +} + +PATH=/sbin:/usr/sbin:$PATH +export PATH + +. /usr/share/debconf/confmodule + +case "$1" in + configure) + if [ ! -e /etc/shadow ]; then + db_get lsb/shadowconfig + if [ "$RET" = "true" ]; then + shadowconfig on >&2 || true + fi + fi + if dpkg --compare-versions "$2" lt "3.2+Debian30" ; then + [ -L /lib/ld-lsb-x86-64.so.2 ] && rm /lib/ld-lsb-x86-64.so.2 || true + [ -L /lib/ld-lsb-x86-64.so.3 ] && rm /lib/ld-lsb-x86-64.so.3 || true + fi + setup_ldso_symlink + ;; + abort-upgrade|abort-remove|abort-deconfigure) + ;; + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# diff --git a/debian/lsb-core.prerm b/debian/lsb-core.prerm new file mode 100644 index 0000000..8b1f535 --- /dev/null +++ b/debian/lsb-core.prerm @@ -0,0 +1,47 @@ +#!/bin/sh + +set -e + +remove_ldso_symlink () { + ARCH=$DPKG_MAINTSCRIPT_ARCH + if [ -z "$ARCH" ]; then + ARCH=$(dpkg --print-architecture) + fi + case "$ARCH" in + s390|ia64|ppc64|sparc|sparc64|alpha|hppa|m68k|mipsel) + rm -f /lib/ld-lsb-$ARCH.so.[123] + ;; + powerpc) + rm -f /lib/ld-lsb-ppc32.so.[123] + ;; + i386) + rm -f /lib/ld-lsb.so.[123] + ;; + amd64) + rm -f /lib/ld-lsb.so.[123] /lib64/ld-lsb-x86-64.so.[23] + ;; + *) + echo "ld-lsb-*.so.1 symlink for $ARCH is unknown; not removed." + ;; + esac +} + +PATH=/sbin:/usr/sbin:$PATH +export PATH + +case "$1" in + remove) + remove_ldso_symlink + rm -f /var/lib/lsb/facilities + rm -f /var/lib/lsb/depends + ;; + failed-upgrade|upgrade|deconfigure) + ;; + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + + +#DEBHELPER# diff --git a/debian/lsb-core.templates b/debian/lsb-core.templates new file mode 100644 index 0000000..47b8c0f --- /dev/null +++ b/debian/lsb-core.templates @@ -0,0 +1,25 @@ +# These templates have been reviewed by the debian-l10n-english +# team +# +# If modifications/additions/rewording are needed, please ask +# for an advice to debian-l10n-english@lists.debian.org +# +# Even minor modifications require translation updates and such +# changes should be coordinated with translators and reviewers. + +Template: lsb/shadowconfig +Type: boolean +Default: true +_Description: Enable shadow passwords? + The Linux Standard Base requires that certain features of adduser(8) + be available to conforming applications (such as password + aging). These features are only provided when shadow passwords are + enabled, while this system has them disabled. + . + Most LSB applications will work fine with either setting, but complete + conformance requires shadow passwords to be enabled. + . + Generally speaking, it is considered good practice to enable shadow + passwords. However, there are some situations in which shadow passwords + may not work properly (most notably, if non-root users need to + check passwords against /etc/passwd). diff --git a/debian/lsb-cxx.lintian-overrides b/debian/lsb-cxx.lintian-overrides new file mode 100644 index 0000000..2e9065b --- /dev/null +++ b/debian/lsb-cxx.lintian-overrides @@ -0,0 +1,2 @@ +# LSB packages are empty on purpose +empty-binary-package diff --git a/debian/lsb-desktop.NEWS b/debian/lsb-desktop.NEWS new file mode 100644 index 0000000..8f95418 --- /dev/null +++ b/debian/lsb-desktop.NEWS @@ -0,0 +1,15 @@ +lsb (4.1+Debian7) unstable; urgency=low + +  From its 4.1+Debian7 version on, lsb-desktop doesn't depend on Qt3 anymore. + This is an explicit and Debian-specific derogation from the LSB 4.1 + specification. + +  Qt3 is superseeded by Qt4 since 2005 and has been considered "end of life" + since July 2007 by their upstream developers (Trolltech, then Nokia). Its + support is also marked deprecated in the LSB specification since its 3.2 + version (Jan 2008). As such, it is going to be removed from Debian soon. + +  Please refer to /usr/share/doc/lsb-desktop/README.Debian for instructions to + install Qt3 from unsupported sources. + + -- Didier Raboud Sun, 10 Jun 2012 23:18:07 +0200 diff --git a/debian/lsb-desktop.README.Debian b/debian/lsb-desktop.README.Debian new file mode 100644 index 0000000..575e16e --- /dev/null +++ b/debian/lsb-desktop.README.Debian @@ -0,0 +1,19 @@ +LSB-DESKTOP AND QT3 + +From its 4.1+Debian7 version, lsb-desktop doesn't depend on Qt3 +anymore. This is an explicit and Debian-specific derogation from the LSB +4.1 specification needed because Qt3 is going to be removed from Debian. + +In case it might still be needed, Qt3 can be installed on Debian from +the Debian Archive Snapshot service: + + http://snapshot.debian.org/ + +The instructions to get past packages installed on Debian are available +from its homepage. + +The full list of past Qt3 versions is available from: + + http://snapshot.debian.org/package/qt-x11-free/ + + -- Didier Raboud   Mon, 28 May 2012 11:31:12 +0200 diff --git a/debian/lsb-desktop.lintian-overrides b/debian/lsb-desktop.lintian-overrides new file mode 100644 index 0000000..2e9065b --- /dev/null +++ b/debian/lsb-desktop.lintian-overrides @@ -0,0 +1,2 @@ +# LSB packages are empty on purpose +empty-binary-package diff --git a/debian/lsb-graphics.lintian-overrides b/debian/lsb-graphics.lintian-overrides new file mode 100644 index 0000000..2e9065b --- /dev/null +++ b/debian/lsb-graphics.lintian-overrides @@ -0,0 +1,2 @@ +# LSB packages are empty on purpose +empty-binary-package diff --git a/debian/lsb-invalid-mta.install b/debian/lsb-invalid-mta.install new file mode 100644 index 0000000..68ee82e --- /dev/null +++ b/debian/lsb-invalid-mta.install @@ -0,0 +1 @@ +sendmail /usr/sbin/ diff --git a/debian/lsb-invalid-mta.links b/debian/lsb-invalid-mta.links new file mode 100644 index 0000000..4d0e823 --- /dev/null +++ b/debian/lsb-invalid-mta.links @@ -0,0 +1 @@ +usr/sbin/sendmail usr/lib/sendmail diff --git a/debian/lsb-invalid-mta.lintian-overrides b/debian/lsb-invalid-mta.lintian-overrides new file mode 100644 index 0000000..bd1b7cd --- /dev/null +++ b/debian/lsb-invalid-mta.lintian-overrides @@ -0,0 +1,2 @@ +# Dummy sendmail needs no manpage +binary-without-manpage usr/sbin/sendmail diff --git a/debian/lsb-languages.lintian-overrides b/debian/lsb-languages.lintian-overrides new file mode 100644 index 0000000..2e9065b --- /dev/null +++ b/debian/lsb-languages.lintian-overrides @@ -0,0 +1,2 @@ +# LSB packages are empty on purpose +empty-binary-package diff --git a/debian/lsb-multimedia.lintian-overrides b/debian/lsb-multimedia.lintian-overrides new file mode 100644 index 0000000..2e9065b --- /dev/null +++ b/debian/lsb-multimedia.lintian-overrides @@ -0,0 +1,2 @@ +# LSB packages are empty on purpose +empty-binary-package diff --git a/debian/lsb-printing.lintian-overrides b/debian/lsb-printing.lintian-overrides new file mode 100644 index 0000000..2e9065b --- /dev/null +++ b/debian/lsb-printing.lintian-overrides @@ -0,0 +1,2 @@ +# LSB packages are empty on purpose +empty-binary-package diff --git a/debian/lsb-release.README.Debian b/debian/lsb-release.README.Debian new file mode 100644 index 0000000..5054826 --- /dev/null +++ b/debian/lsb-release.README.Debian @@ -0,0 +1,38 @@ +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 +end-users. + +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 +7.0 (wheezy), it might have read: + +DISTRIB_ID=Debian +DISTRIB_DESCRIPTION="Debian GNU/Linux 7.0 (wheezy)" +DISTRIB_RELEASE=7.0 +DISTRIB_CODENAME=wheezy + + -- Chris Lawrence , Wed Sep 21 20:40:25 2005 diff --git a/debian/lsb-release.bug-script b/debian/lsb-release.bug-script new file mode 100755 index 0000000..151361b --- /dev/null +++ b/debian/lsb-release.bug-script @@ -0,0 +1,24 @@ +#!/bin/sh +echo 'lsb_release output' >& 3 +echo '-*- -*- -*- -*- -*-'>&3 +lsb_release -a >& 3 +echo '-*- -*- -*- -*- -*-'>&3 +echo ' Apt policy' >&3 +echo '-*- -*- -*- -*- -*-'>&3 +apt-cache policy >&3 +echo '-*- -*- -*- -*- -*-'>&3 +echo ' sources.list' >&3 +echo '-*- -*- -*- -*- -*-'>&3 +if [ -f /etc/apt/sources.list ]; then + cat /etc/apt/sources.list | grep -v '^\s*#' | grep -v '^\s*$' >&3 +else + echo '- none' >&3 +fi +echo '-*- -*- -*- -*- -*-'>&3 +echo ' /etc/lsb_release' >&3 +echo '-*- -*- -*- -*- -*-'>&3 +if [ -f /etc/lsb_release ]; then + cat /etc/lsb_release >&3 +else + echo '- none' >&3 +fi diff --git a/debian/lsb-release.install b/debian/lsb-release.install new file mode 100644 index 0000000..7cb506f --- /dev/null +++ b/debian/lsb-release.install @@ -0,0 +1,2 @@ +lsb_release /usr/bin +lsb_release.py /usr/share/pyshared/ diff --git a/debian/lsb-release.manpages b/debian/lsb-release.manpages new file mode 100644 index 0000000..c610296 --- /dev/null +++ b/debian/lsb-release.manpages @@ -0,0 +1 @@ +lsb_release.1 diff --git a/debian/lsb-release.postinst b/debian/lsb-release.postinst new file mode 100644 index 0000000..93862fd --- /dev/null +++ b/debian/lsb-release.postinst @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +case "$1" in + configure) + if [ -e /etc/lsb-release ]; then + MD5SUM=`md5sum /etc/lsb-release | cut -d" " -f1` + if [ "$MD5SUM" = "b5bfe10d9b02fb4e4a45337d1c4d88ab" ]; then + rm -f /etc/lsb-release + fi + fi + ;; +esac + +#DEBHELPER# diff --git a/debian/lsb-release.postrm b/debian/lsb-release.postrm new file mode 100644 index 0000000..29333f6 --- /dev/null +++ b/debian/lsb-release.postrm @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +case "$1" in + purge) + if [ -e /etc/lsb-release ]; then + MD5SUM=`md5sum /etc/lsb-release | cut -d" " -f1` + if [ "$MD5SUM" = "b5bfe10d9b02fb4e4a45337d1c4d88ab" ]; then + rm -f /etc/lsb-release + fi + fi + ;; +esac + +#DEBHELPER# diff --git a/debian/lsb-security.lintian-overrides b/debian/lsb-security.lintian-overrides new file mode 100644 index 0000000..2e9065b --- /dev/null +++ b/debian/lsb-security.lintian-overrides @@ -0,0 +1,2 @@ +# LSB packages are empty on purpose +empty-binary-package diff --git a/debian/lsb.lintian-overrides b/debian/lsb.lintian-overrides new file mode 100644 index 0000000..2e9065b --- /dev/null +++ b/debian/lsb.lintian-overrides @@ -0,0 +1,2 @@ +# LSB packages are empty on purpose +empty-binary-package diff --git a/debian/po/POTFILES.in b/debian/po/POTFILES.in new file mode 100644 index 0000000..6370349 --- /dev/null +++ b/debian/po/POTFILES.in @@ -0,0 +1 @@ +[type: gettext/rfc822deb] lsb-core.templates diff --git a/debian/po/ar.po b/debian/po/ar.po new file mode 100644 index 0000000..e43b5f4 --- /dev/null +++ b/debian/po/ar.po @@ -0,0 +1,62 @@ +# translation of lsb.po to Arabic +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Ossama M. Khayat , 2007. +msgid "" +msgstr "" +"Project-Id-Version: lsb\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2007-05-13 17:19+0300\n" +"Last-Translator: Ossama M. Khayat \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=6; plural=n==1 ? 0 : n==0 ? 1 : n==2 ? 2: n%100>=3 && " +"n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "تمكين shadow passwords؟" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"تتطلب Linux Standard Base أن تتوفر ميزات معينة من adduser(8) للتطبيقات " +"المماثلة لها (كتقادم كلمة المرور). وتتوفر هذه الميزات فقط عند تمكن shadow " +"passwords، إلا أن هذا النظام لا تتوفر فيه هذه الميزة." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"ستعمل معظم تطبيقات LSB بشكل جيد باستخدام أي من الإعدادات، ولكن التوافق " +"الكامل يتطلب تمكين shadow passwords." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"بشكل عام، من المستحسن تمكين shadow passwords. مع ذلك، فهناك بعض الحالات التي " +"قد لا تعمل معها هذه الميزة (وبالأخص، في حال حاجة المستخدمين العاديين التحقق " +"من كلمة السر الخاصة بهم ومطابقتها مع /etc/passwd)." diff --git a/debian/po/ca.po b/debian/po/ca.po new file mode 100644 index 0000000..68f38a7 --- /dev/null +++ b/debian/po/ca.po @@ -0,0 +1,64 @@ +# lsb po-debconf translation to Catalan. +# Copyright (C) 2006 Software in the Public Interest, Inc. +# This file is distributed under the same license as the lsb package. +# Innocent De Marchi , 2011 +# +msgid "" +msgstr "" +"Project-Id-Version: 3.2-28\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2011-09-06 16:49+0100\n" +"Last-Translator: Innocent De Marchi \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Catalan\n" +"X-Poedit-Country: Spain\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Voleu activar les contrasenyes xifrades («shadow passawords»)?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"El «Linux Standard Base» exigeix que algunes característiques d'«adduser" +"(8)» (com la caducitat de les contrasenyes) estiguin disponibles pels " +"programes que segueixen aquest estàndard. Actualment, aquestes " +"característiques només estan disponibles en activar les contrasenyes " +"xifrades, però en aquest sistema estan desactivades." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"La majoria de programes LSB funcionaran correctament en qualsevol dels " +"casos, però l'estàndard requereix l'activació de les contrasenyes xifrades." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"En general, es considera una bona pràctica l'activació de les contrasenyes " +"xifrades. Però hi pot haver algunes situacions en què no funcionin " +"correctament (p. ex. quan els usuaris sense privilegis d'administració han " +"de comprovar les contrasenyes en el fitxer «/etc/passwd»)." diff --git a/debian/po/cs.po b/debian/po/cs.po new file mode 100644 index 0000000..66a4ae8 --- /dev/null +++ b/debian/po/cs.po @@ -0,0 +1,68 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: lsb\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2007-05-19 17:18+0200\n" +"Last-Translator: Miroslav Kure \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Povolit stínová hesla?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"Linux Standard Base vyžaduje, aby byly určité vlastnosti programu adduser(8) " +"(např. stárnutí hesel) dostupné odpovídajícím aplikacím. Tyto vlastnosti " +"jsou k dispozici pouze při zapnutých stínových heslech, ovšem zdá se, že váš " +"systém má podporu stínových hesel vypnutu." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"Většina LSB aplikací bude pracovat s oběma nastaveními, ale úplné " +"kompatibility dosáhnete pouze se zapnutou podporou stínových hesel." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"Obecně jsou stínová hesla doporučena, avšak existují situace, kdy nemusí " +"fungovat (například pokud si neprivilegovaní uživatelé potřebují kontrolovat " +"hesla oproti /etc/passwd)." diff --git a/debian/po/da.po b/debian/po/da.po new file mode 100644 index 0000000..14adc22 --- /dev/null +++ b/debian/po/da.po @@ -0,0 +1,61 @@ +# Danish translation lsb. +# Copyright (C) 2010 lsb & nedenstående oversættere. +# This file is distributed under the same license as the lsb package. +# Claus Hindsgaul , 2004. +# Joe Hansen , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: lsb_1.3-8-da\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2010-10-07 05:26+0100\n" +"Last-Translator: Joe Hansen \n" +"Language-Team: Danish \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Aktiver skyggeadgangskoder?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"Linux Standardbasis kræver at visse af adduser(8)'s funktioner (såsom " +"tidsudløb for adgangskoder) gøres tilgængelige til programmer. Disse " +"funktioner tilbydes kun hvis skyggeadgangskoder aktiveres. Det er de dog " +"ikke på dit system." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"De fleste LSB-programmer vil fungere udmærket med begge indstillinger, men " +"100 % tilpasning kræver, at skyggeadgangskoder bliver aktiveret." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"Generelt er det en god ide at aktivere skyggeadgangskoder. Der kan dog være " +"situationer, hvor de ikke fungerer ordentligt (f.eks. hvis ikke-root brugere " +"skal autentificere adgangskoder ved hjælp af /etc/passwd)." diff --git a/debian/po/de.po b/debian/po/de.po new file mode 100644 index 0000000..21fe8f8 --- /dev/null +++ b/debian/po/de.po @@ -0,0 +1,70 @@ +# German translation of lsb templates +# Patrick Willam , 2003. +# Helge Kreutzmann , 2007. +# This file is distributed under the same license as the lsb package. +# +msgid "" +msgstr "" +"Project-Id-Version: lsb\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2007-05-29 22:59+0200\n" +"Last-Translator: Helge Kreutzmann \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Schatten-Passworte (»shadow passwords«) aktivieren?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"Die LSB (»Linux Standard Base«) verlangt, dass bestimmte Funktionen von " +"adduser(8) für LSB-konforme Anwendungen verfügbar sind (z.B. Passwort-" +"Alterung). Diese Funktionen werden nur zur Verfügung gestellt, wenn Schatten-" +"Passworte aktiviert werden; während in diesem System Schatten-Passworte " +"derzeit nicht aktiviert sind." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"Die meisten LSB-Anwendungen werden mit jeder Einstellung prima " +"funktionieren, aber vollständige Konformität verlangt, dass Schatten-" +"Passworte aktiviert werden." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"Es ist generell das Richtige, Schatten-Passworte zu benutzen. Es gibt jedoch " +"einige Situationen, in denen Schatten-Passworte nicht richtig funktionieren " +"(insbesondere falls Nicht-Root-Benutzer Passworte in /etc/passwd überprüfen " +"müssen)." + +#~ msgid "" +#~ "If you answer in the affirmative, the command 'shadowconfig on' will be " +#~ "run to enable shadow passwords." +#~ msgstr "" +#~ "Wenn Sie zustimmen, dann wird das Kommando \"shadowconfig on\" " +#~ "ausgeführt, um die Benutzung von Schatten-Passworten zu aktivieren." diff --git a/debian/po/es.po b/debian/po/es.po new file mode 100644 index 0000000..59f47a9 --- /dev/null +++ b/debian/po/es.po @@ -0,0 +1,95 @@ +# lsb po-debconf translation to Spanish +# Copyright (C) 2006 Software in the Public Interest +# This file is distributed under the same license as the lsb package. +# +# Changes: +# - Initial translation +# César Gómez Martín +# - Revision +# Javier Fernandez-Sanguino Peña , 2005-2006 +# +# +# Traductores, si no conoce el formato PO, merece la pena leer la +# documentación de gettext, especialmente las secciones dedicadas a este +# formato, por ejemplo ejecutando: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Equipo de traducción al español, por favor, lean antes de traducir +# los siguientes documentos: +# +# - El proyecto de traducción de Debian al español +# http://www.debian.org/intl/spanish/ +# especialmente las notas de traducción en +# http://www.debian.org/intl/spanish/notas +# +# - La guía de traducción de po's de debconf: +# /usr/share/doc/po-debconf/README-trans +# o http://www.debian.org/intl/l10n/po-debconf/README-trans +# +msgid "" +msgstr "" +"Project-Id-Version: lsb\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2007-05-14 12:53+0200\n" +"Last-Translator: Javier Fernandez-Sanguino \n" +"Language-Team: Debian l10n spanish \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "¿Activar las contraseñas ocultas?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"El estándar base de Linux (LSB, «Linux Standard Base») exige que ciertas " +"características de adduser(8) (como pueda ser el envejecimiento de " +"contraseñas) estén disponibles para las aplicaciones que siguen dicho " +"estándar. Actualmente sólo se proporciona esas características cuando están " +"activas las contraseñas ocultas («shadow») pero está desactivadas en su " +"sistema." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"La mayoría de las aplicaciones LSB funcionarán correctamente en cualquiera " +"de las dos configuraciones posibles. Sin embargo, para cumplir el estándar " +"es necesario activar el uso de contraseñas ocultas." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"La activación de las contraseñas ocultas se considera una buena práctica. " +"Pero hay algunas situaciones en las que éstas pueden no funcionar " +"correctamente. El caso más notable es cuando es necesario que los usuarios " +"que no son administradores tengan que comprobar las contraseñas utilizando " +"el fichero «/etc/passwd»." + +#~ msgid "" +#~ "If you answer in the affirmative, the command 'shadowconfig on' will be " +#~ "run to enable shadow passwords." +#~ msgstr "" +#~ "Se ejecutará la orden «shadowconfig on» para activar las contraseñas " +#~ "ocultas si contesta afirmativamente." diff --git a/debian/po/eu.po b/debian/po/eu.po new file mode 100644 index 0000000..05b4707 --- /dev/null +++ b/debian/po/eu.po @@ -0,0 +1,63 @@ +# translation of lsb debconf template to Euskara +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Xabier Bilbao , 2008. +# Piarres Beobide , 2008. +msgid "" +msgstr "" +"Project-Id-Version: lsb-eu\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2008-07-15 11:07+0200\n" +"Last-Translator: Piarres Beobide \n" +"Language-Team: Euskara \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Gaitu itzalpeko pasahitzak?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"Linux Standard Base-k (Linuxen Oinarri Estandarrak) beharrezkoak ditu adduser" +"(8)-en zenbait ezaugarri (hala nola pasahitzen zahartzea) LSB aplikazioen " +"eskura egotea. Ezaugarri hauek itzalpeko pasahitzak gaituta daudenean soilik " +"daude eskura, baina sistema honek desgaiturik ditu une honetan." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"LSB aplikazio gehienek ondo funtzionatuko dute ezarpen biekin, baina LSB " +"bateragarritasun osorako beharrezkoa da itzalpeko pasahitzak gaituta egotea. " + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"Oro har, jokabide egokitzat hartzen da itzalpeko pasahitzak gaitzea. " +"Alabaina, egoera jakin batzuetan itzalpeko pasahitzek zuzen ez funtzionatzea " +"gerta daiteke (adibide argiena, pribilegiorik gabeko erabiltzaileek " +"pasahitzak egiaztatzeko /etc/password begiratzen dutenean)." diff --git a/debian/po/fi.po b/debian/po/fi.po new file mode 100644 index 0000000..4dd914d --- /dev/null +++ b/debian/po/fi.po @@ -0,0 +1,58 @@ +msgid "" +msgstr "" +"Project-Id-Version: lsb\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2007-10-18 21:11+0200\n" +"Last-Translator: Esko Arajärvi \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Finnish\n" +"X-Poedit-Country: FINLAND\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Otetaanko varjosalasanat käyttöön?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"Linux Standard Base vaatii, että tietyt ohjelman adduser(8) ominaisuudet " +"(kuten salasanojen vanheneminen) ovat yhteensopivien ohjelmien " +"käytettävissä. Nämä ominaisuudet ovat saatavilla vain, kun varjosalasanat " +"ovat käytössä, mutta tässä järjestelmässä ne eivät ole käytössä." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"Useimmat LSB-ohjelmat toimivat hyvin kummallakin valinnalla, mutta " +"täydellinen yhteensopivuus vaatii, että varjosalasanat ovat käytössä." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"Yleisesti ottaen varjosalasanojen käyttöä pidetään hyvänä tapana. On " +"kuitenkin joitain tilanteita, joissa varjosalasanat eivät välttämättä toimi " +"oikein (eritysesti, jos ei-pääkäyttäjien tarvitsee tarkistaa salasanoja " +"tiedoston /etc/passwd avulla)." diff --git a/debian/po/fr.po b/debian/po/fr.po new file mode 100644 index 0000000..605afd5 --- /dev/null +++ b/debian/po/fr.po @@ -0,0 +1,74 @@ +# translation of fr.po to French +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# Christian Perrier , 2007. +msgid "" +msgstr "" +"Project-Id-Version: fr\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2007-05-13 09:46+0200\n" +"Last-Translator: Christian Perrier \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Faut-il activer les mots de passe cachés (« shadow passwords ») ?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"La base normalisée de Linux (LSB : «  Linux Standard Base ») impose que " +"certaines fonctionnalités de adduser(8) (p. ex. l'expiration des mots de " +"passe) soient disponibles pour les applications. Ces possibilités ne sont " +"disponibles que lorsque les mots de passe cachés sont activés ; or, ils sont " +"actuellement désactivés sur ce système." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"La plupart des applications conformes à la LSB fonctionnent correctement " +"dans tous les cas, mais la conformité complète n'est possible qu'avec " +"l'activation des mots de passe cachés." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"En général, l'activation des mots de passe cachés est plutôt un choix " +"judicieux. Cependant, leur utilisation peut créer des difficultés dans " +"certains cas (typiquement, lorsqu'un utilisateur non privilégié cherche à " +"utiliser /etc/passwd pour contrôler les mots de passe)." diff --git a/debian/po/gl.po b/debian/po/gl.po new file mode 100644 index 0000000..8036972 --- /dev/null +++ b/debian/po/gl.po @@ -0,0 +1,62 @@ +# Galician translation of lsb's debconf templates. +# This file is distributed under the same license as the lsb package. +# Jacobo Tarrio , 2006, 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: lsb\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2007-05-13 23:36+0200\n" +"Last-Translator: Jacobo Tarrio \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "¿Activar os contrasinais \"shadow\"?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"Linux Standard Base require que algunhas características de adduser(8), coma " +"o avellentamento dos contrasinais, estean dispoñibles para as aplicacións " +"que cumpran con LSB. Estas características só están dispoñibles cando os " +"contrasinais \"shadow\" están activados, mentres que este sistema os ten " +"desactivados." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"A maioría das aplicacións LSB han funcionar correctamente de calquera " +"maneira, pero para conseguir unha total compatibilidade hai que activar os " +"contrasinais \"shadow\"." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"Xeralmente considérase unha boa práctica activar os contrasinais \"shadow\". " +"Nembargantes hai algunhas situacións nas que os contrasinais \"shadow\" " +"poden non funcionar correctamente (por exemplo, se algún usuario que non " +"sexa \"root\" ten que comprobar contrasinais contra /etc/passwd)." diff --git a/debian/po/it.po b/debian/po/it.po new file mode 100644 index 0000000..cbadbd2 --- /dev/null +++ b/debian/po/it.po @@ -0,0 +1,62 @@ +# Italian (it) translation of debconf templates for lsb +# Copyright (C) 2007 Software in the Public Interest +# This file is distributed under the same license as the lsb package. +# Luca Monducci , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: lsb italian debconf templates\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2007-05-13 14:19+0200\n" +"Last-Translator: Luca Monducci \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Abilitare le password shadow?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"Il Linux Standard Base richiede che le applicazioni conformi possano " +"disporre di alcune funzionalità di adduser(8) (per esempio la scadenza delle " +"password). Queste funzionalità sono disponibili solo quando sono abilitate " +"le password shadow; su questo sistema sono attualmente disabilitate." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"La maggior parte delle applicazioni LSB funzionano correttamente con " +"entrambe le impostazioni, ma per essere completamente conformi è necessario " +"abilitare le password shadow." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"In generale l'abilitazione delle password shadow è considerata una buona " +"pratica. Purtroppo ci sono dei casi in cui le password shadow potrebbero non " +"funzionare correttamente (il caso più comune quando gli utenti non-root " +"hanno la necessità di verificare le password con /etc/passwd)." diff --git a/debian/po/ja.po b/debian/po/ja.po new file mode 100644 index 0000000..1ecd0f6 --- /dev/null +++ b/debian/po/ja.po @@ -0,0 +1,71 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# +msgid "" +msgstr "" +"Project-Id-Version: lsb 3.1-24\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2008-01-27 19:52+0900\n" +"Last-Translator: Hideki Yamane (Debian-JP) \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "shadow パスワードを有効にしますか?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"Linux Standard Base では、適合アプリケーションになるために adduser(8) の特定" +"の機能 (パスワード有効期限など) が利用できる必要があります。これらの機能は、" +"shadow パスワードが有効になった時のみに提供されますが、このシステムでは無効に" +"なっています。" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"どちらの設定であっても、ほとんどの LSB アプリケーションは問題なく動作します" +"が、LSB に完全に適合するには shadow パスワードが有効になっている必要がありま" +"す。" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"一般的に言って、shadow パスワードを有効にするのは良い選択だと考えられていま" +"す。しかしながら、shadow パスワードが正しく動作しないような場合もあります (特" +"に root ではないユーザが /etc/passwd を使ってパスワード認証をする必要がある場" +"合など)。" diff --git a/debian/po/ko.po b/debian/po/ko.po new file mode 100644 index 0000000..d94a27d --- /dev/null +++ b/debian/po/ko.po @@ -0,0 +1,62 @@ +# Korean translation of lsb debconf templates. +# Copyright (C) 2011 - 2012 min-ji Kang(justminji@gmail.com) +# This file is distributed under the same license as the lsb package. +# min-ji Kang , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: debconf template\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2011-06-24 18:38+0900\n" +"Last-Translator: 강민지 \n" +"Language-Team: opensource \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Korean\n" +"X-Poedit-Country: KOREA, REPUBLIC OF\n" +"X-Poedit-SourceCharset: utf-8\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "섀도우 암호를 사용하십니까?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"리눅스 스탠다드베이스는 adduser(8)의 특정기능이 응용프로그램(암호 에이징과 같" +"은)과 같게 사용할 수 있도록 요구할 수 있습니다. 이 시스템은 그들이 사용할 수 " +"없는 동안 섀도우 암호가 활성화될 때 기능들이 제공됩니다." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"대부분의 LSB 응용프로그램은 각각의 설정이 잘 동작하지만, 완전한 적합은 섀도" +"우 비밀번호가 사용되어 있어야합니다." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"일반적으로 섀도우 암호를 사용하는 것은 좋은습관으로 간주됩니다. 그러나 섀도" +"우 암호가 제대로 작동하지 않을 수 있는 몇가지 상황이 있습니다.(특히, 비 루트 " +"사용자의 etc/passwd의 대한 암호를 확인하기 위해 필요한 경우)" diff --git a/debian/po/ml.po b/debian/po/ml.po new file mode 100644 index 0000000..b078b15 --- /dev/null +++ b/debian/po/ml.po @@ -0,0 +1,64 @@ +# Malayalam translation of lsb's debconf template. +# Copyright (C) 2007 THE lsb'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Mobin|മോബിന്‍ M|എം ,Praveen|പ്രവീണ്‍ A|എ 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: lsb3.1\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2007-05-27 05:02-0500\n" +"Last-Translator: Mobin|മോബിന്‍ M|എം \n" +"Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Country: INDIA\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "ഷാഡോ (shadow) അടയാളവാക്ക് പ്രാവര്‍ത്തികമാക്കട്ടെ?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"അനുസരിക്കുന്ന (അടയാളവാക്കിന്റെ കാലാവധിപോലുളള) പ്രയോഗങ്ങള്‍ക്കായി ആഡ്‌യുസറിന്റെ(adduser)(8) " +"ചില ഗുണങ്ങള്‍ ലഭ്യമായിരിയ്ക്കേണ്ടത് ലിനക്സ് സ്റ്റാന്‍ഡേര്‍ഡ് ബേസിന് (Linux Standard Base) " +"ആവശ്യമുണ്ട്. ഷാഡോ (shadow) അടയാളവാക്കുകള്‍ പ്രാവര്‍ത്തികമാക്കുമ്പോള്‍ മാത്രമാണ് ഈ ഗുണങ്ങള്‍ " +"നല്‍കുന്നത്, പക്ഷേ ഈ സിസ്റ്റത്തില്‍ അവ തടഞ്ഞിരിക്കുന്നു. " + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"ഒട്ടുമിക്ക എല്എസ്ബി (LSB) പ്രയോഗങ്ങളും രണ്ടിലേത് സജ്ജീകരണങ്ങിലും നന്നായി പ്രവര്‍ത്തിക്കും. പക്ഷേ " +"പൂര്‍ണ്ണ അനുസരണത്തിനു (complete conformance) ഷാഡോ (shadow) അടയാളവാക്കുകള്‍ " +"പ്രാവര്‍ത്തികമാക്കേണ്ടതുണ്ട്." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"പൊതുവേ പറഞ്ഞാല്‍, ഷാഡോ (shadow) അടയാളവാക്കുകള്‍ പ്രാവര്‍ത്തികമാക്കുന്നത് ഒരു നല്ല രീതിയായി " +"കരുുതപ്പെടുന്നു. എന്നിരുന്നാലും ഷാഡോ (shadow) അടയാളവാക്കുകള്‍ നന്നായി പ്രവര്‍ത്തിക്കാത്ത ചില " +"സാഹചര്യങ്ങളുണ്ട് (റൂട്ടല്ലാത്ത ഉപയോക്താക്കള്‍ക്ക് അടയാളവാക്കുകള്‍ /etc/passwd ല്‍ " +"പരിശോദിയ്ക്കുേണ്ടി വരുന്നതാണ് ഏറ്റവും പ്രസക്തം)." diff --git a/debian/po/nl.po b/debian/po/nl.po new file mode 100644 index 0000000..21e24b3 --- /dev/null +++ b/debian/po/nl.po @@ -0,0 +1,77 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: lsb\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2007-05-16 19:44+0100\n" +"Last-Translator: Bart Cornelis \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Wilt u schaduwwachtwoorden activeren?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"De Linux Standard Base (LSB) vereist dat adduser(8) bepaalde opties " +"beschikbaar maakt (zoals wachtwoordveroudering). Deze opties zijn enkel " +"beschikbaar wanneer schaduwwachtwoorden geactiveerd zijn, op dit systeem " +"zijn deze momenteel gedeactiveerd." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"De meeste LSB-applicaties werken prima ongeacht of schaduwwachtwoorden wel " +"of niet geactiveerd zijn, maar om volledig aan de LSB-standaard te voldoen " +"dienen ze geactiveerd te zijn." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"In het algemeen wordt het als 'goede gewoonte' beschouwd om " +"schaduwwachtwoorden te activeren. Wel zijn er bepaalde situaties waarin " +"schaduwwachtwoorden mogelijk niet goed werken (met name, wanneer niet-root " +"gebruikers wachtwoorden dienen te controleren via /etc/passwd)." + +#~ msgid "" +#~ "If you answer in the affirmative, the command 'shadowconfig on' will be " +#~ "run to enable shadow passwords." +#~ msgstr "" +#~ "Indien u positief antwoord zal ik schaduwwachtwoorden activeren met het " +#~ "commando 'shadowconfig on'." diff --git a/debian/po/pl.po b/debian/po/pl.po new file mode 100644 index 0000000..9a7da0a --- /dev/null +++ b/debian/po/pl.po @@ -0,0 +1,64 @@ +# Translation of lsb debconf templates to Polish. +# Copyright (C) 2007 +# This file is distributed under the same license as the lsb package. +# +# Michał Kułach , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2012-02-15 18:35+0100\n" +"Last-Translator: Michał Kułach \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Włączyć przesłanianie haseł?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"Linux Standard Base wymaga, aby określone funkcje adduser(8) były dostępne " +"dla zgodnych aplikacji (np. datowanie hasła). W tym celu wymagane jest jednak " +"włączenie przesłaniania haseł (ang. shadow passwords), które jest aktualnie " +"wyłączone." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"Większość aplikacji LSB będzie działało poprawnie niezależnie od wybranego " +"ustawienia, ale całkowita zgodność z LSB wymaga włączenia przesłaniania haseł." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"Włączenie przesłaniania haseł jest generalnie dobrym rozwiązaniem, ale w " +"niektórych sytuacjach może nie działać poprawnie (np. jeśli użytkownicy " +"nieuprzywilejowani muszą sprawdzać hasła z plikiem /etc/passwd)." + diff --git a/debian/po/pt.po b/debian/po/pt.po new file mode 100644 index 0000000..014a4df --- /dev/null +++ b/debian/po/pt.po @@ -0,0 +1,62 @@ +# Portuguese translation for lsb's debconf messages +# Copyright (C) 2007 Carlos Lisboa +# This file is distributed under the same license as the lsb package. +# Carlos Lisboa , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: lsb\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2007-08-24 21:23+0100\n" +"Last-Translator: Carlos Lisboa \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Activar as passwords 'shadow'?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"O Linux Standard Base requere que determinadas funcionalidades do adduser(8) " +"estejam disponíveis a aplicações conformes (tal como o envelhecimento da " +"password). Estas funcionalidades só estão disponíveis quando as passwords " +"'shadow' estão activadas, no entanto, no seu sistema estão desactivadas." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"A maioria das aplicações LSB irão funcionar correctamente com qualquer " +"opção, no entanto para haver completa conformidade as passwords 'shadow' " +"devem estar activadas." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"Por norma, é considerada boa prática activar as passwords 'shadow'. No " +"entanto, existem algumas situações em que as passwords 'shadow' podem não " +"funcionar correctamente (mais notavelmente, se utilizadores não-root " +"precisam de autenticar passwords com o /etc/passwd)." diff --git a/debian/po/pt_BR.po b/debian/po/pt_BR.po new file mode 100644 index 0000000..27b0877 --- /dev/null +++ b/debian/po/pt_BR.po @@ -0,0 +1,73 @@ +# Debconf translations for lsb. +# Copyright (C) 2010 THE lsb'S COPYRIGHT HOLDER +# This file is distributed under the same license as the lsb package. +# +# Flamarion Jorge , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: lsb 3.2_23-1\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2010-09-04 14:29-0300\n" +"Last-Translator: Flamarion Jorge \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"pt_BR utf-8\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Habilitar senhas \"shadow\"?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"A Linux Standard Base requer que certas funcionalidades do adduser(8) " +"estejam disponíveis para aplicações em conformidade (como expiração de " +"senhas). Estas funcionalidades somente são fornecidas quando senhas \"shadow" +"\" estão habilitadas, e neste sistema estão desabilitadas." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"A maioria das aplicações LSB funcionarão bem com qualquer uma das " +"configurações, mas a conformidade completa requer que senhas \"shadow\" " +"estejam habilitadas." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"Genericamente falando, é considerado boa prática habilitar senhas \"shadow" +"\". No entanto, existem algumas situações nas quais senhas \"shadow\" podem " +"não funcionar corretamente (notavelmente se usuários não-root precisam " +"verificar senhas no /etc/passwd)." + +#~ msgid "" +#~ "If you answer in the affirmative, the command 'shadowconfig on' will be " +#~ "run to enable shadow passwords." +#~ msgstr "" +#~ "Caso você responda afirmativamente, o comando 'shadowconfig on' será " +#~ "executado para habilitar senhas shadow." diff --git a/debian/po/ro.po b/debian/po/ro.po new file mode 100644 index 0000000..bfb77f1 --- /dev/null +++ b/debian/po/ro.po @@ -0,0 +1,63 @@ +# Romanian translation of lsb. +# Copyright (C) 2006 THE lsb'S COPYRIGHT HOLDER +# This file is distributed under the same license as the lsb package. +# +# Stan Ioan-Eugen , 2006. +# stan ioan-eugen , 2008. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2008-02-29 22:53+0200\n" +"Last-Translator: stan ioan-eugen \n" +"Language-Team: romanian \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Se activează parolele ascunse?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"Linux Standard Base cere ca anumite facilităţi ale lui adduser(8) să fie " +"conforme standardului (faciltăţi precum expirarea parolelor). Debian oferă " +"aceste facilităţi doar atunci când sunt activate parolele ascunse; totuşi, " +"în prezent, parolele ascunse sunt dezactivate pe sistemul dumneavoastră." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"Majoritatea aplicaţiilor LSB vor funcţiona cu ambele setări, dar pentru " +"conformitate deplină este necesară activarea parolelor ascunse." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"În general, este bine să activaţi parolele ascunse. Totuşi, există unele " +"situaţii în care parolele ascunse nu vor funcţiona corespunzător (cazul cel " +"mai evident, atunci când utilizatorii obişnuiţi trebuie să autentifice " +"parolele faţă de cele din /etc/passwd)." diff --git a/debian/po/ru.po b/debian/po/ru.po new file mode 100644 index 0000000..9f45d07 --- /dev/null +++ b/debian/po/ru.po @@ -0,0 +1,65 @@ +# translation of lsb_3.1-23.2_debconf-ru.po to Russian +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. +# +# Yuri Kozlov , 2006, 2007. +msgid "" +msgstr "" +"Project-Id-Version: lsb_3.1-23.2\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2007-05-15 20:37+0400\n" +"Last-Translator: Yuri Kozlov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Включить механизм теневых паролей?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"Согласно Linux Standard Base требуется, чтобы для соответствующих стандарту " +"приложений были доступны определённые (например, устаревание паролей) " +"возможности adduser(8). Эти возможности предоставляются при включённом " +"механизме теневых паролей, но в вашей системе он отключён." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"Большинство приложений, удовлетворяющих LSB, будут правильно работать при " +"любой настройке, но для полного соответствия требуется включить механизм " +"теневых паролей." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"В большинстве вариантов установок рекомендуется включать механизм теневых " +"паролей. Однако возможны ситуации, при которых использование механизма " +"теневых паролей невозможно (в частности, если пользователям с обычными " +"правами требуется проверка паролей из файла /etc/passwd)." diff --git a/debian/po/sk.po b/debian/po/sk.po new file mode 100644 index 0000000..f6cba3e --- /dev/null +++ b/debian/po/sk.po @@ -0,0 +1,60 @@ +# Slovak translation of lsb. +# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the lsb package. +# Ivan Masár , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: lsb\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2008-07-04 17:08+0100\n" +"Last-Translator: Ivan Masár \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Zapnúť tieňové heslá?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"Linux Standard Base požaduje dostupnosť istých vlastnosti adduser(8) (napr. " +"zastaranie hesiel) pre aplikácie zodpovedajúce štandardu. Tieto vlastnosti " +"budú poskytnuté iba ak je podpora tieňových hesiel zapnutá, tento systém ju " +"však má vypnutú." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"Väčšina LSB aplikácií bude fungovať správne s oboma voľbami, no na úplné " +"splnenie štandardu musia byť tieňové heslá zapnuté." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"Vo všeobecnosti sa považuje za vhodné zapnúť tieňové heslá. Existujú však " +"určité situácie, kedy tieňové heslá nemusia fungovať správne (predovšetkým " +"ak kontrolu hesiel voči /etc/passwd požadujú iní používatelia ako root)." diff --git a/debian/po/sv.po b/debian/po/sv.po new file mode 100644 index 0000000..c7c2dff --- /dev/null +++ b/debian/po/sv.po @@ -0,0 +1,74 @@ +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# Developers do not need to manually edit POT or PO files. +# , fuzzy +# +# +msgid "" +msgstr "" +"Project-Id-Version: lsb 3.0-9\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2007-05-14 22:31+0100\n" +"Last-Translator: Daniel Nylander \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Aktivera skugglösenord?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"Linux Standard Base kräver att vissa funktioner av adduser(8) ska finnas " +"tillgängliga till giltiga program (såsom lösenordföråldring). Dessa " +"funktioner tillhandahålls endast när skugglösenord är aktiverade, men ditt " +"system har dem för närvarande inaktiverade." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"De flesta LSB-program fungerar fint med båda inställningarna men fullständig " +"giltighet kräver att skugglösenord är aktiverade." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"Vanligtvis anses det som korrekt att aktivera skugglösenord. Dock finns det " +"vissa situationer där skugglösenord kanske inte fungerar som de ska (till " +"exempel om icke-rootanvändare behöver kontrollera lösenord mot /etc/passwd)." + +#~ msgid "" +#~ "If you answer in the affirmative, the command 'shadowconfig on' will be " +#~ "run to enable shadow passwords." +#~ msgstr "" +#~ "Om du svarar ja kommer kommandot 'shadowconfig on' att köras för att " +#~ "aktivera shadow-lösenord." diff --git a/debian/po/templates.pot b/debian/po/templates.pot new file mode 100644 index 0000000..a9d69b9 --- /dev/null +++ b/debian/po/templates.pot @@ -0,0 +1,51 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" diff --git a/debian/po/vi.po b/debian/po/vi.po new file mode 100644 index 0000000..a91a08b --- /dev/null +++ b/debian/po/vi.po @@ -0,0 +1,82 @@ +# Vietnamese Translation for lsb. +# Copyright © 2007 Free Software Foundation, Inc. +# Clytie Siddall , 2005-2007. +# +msgid "" +msgstr "" +"Project-Id-Version: lsb 3.0-1\n" +"Report-Msgid-Bugs-To: lawrencc@debian.org\n" +"POT-Creation-Date: 2007-05-13 09:16+0200\n" +"PO-Revision-Date: 2007-05-31 17:02+0930\n" +"Last-Translator: Clytie Siddall \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: LocFactoryEditor 1.6.3b1\n" + +# msgid "Should shadow passwords be enabled?" +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Enable shadow passwords?" +msgstr "Bật mật khẩu bóng không?" + +# msgid "" +# The Linux Standard Base requires that certain features of adduser(8) be +# available to conforming applications (such as password aging). Debian +# only provides these features when shadow passwords are enabled; however, +# your system currently has shadow passwords disabled. +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"The Linux Standard Base requires that certain features of adduser(8) be " +"available to conforming applications (such as password aging). These " +"features are only provided when shadow passwords are enabled, while this " +"system has them disabled." +msgstr "" +"Cơ bản chuẩn Linux (Linux Standard Base: lsb) cần đến một số tính năng của " +"adduser(8) có phải sẵn sàng cho những ứng dụng thích hợp (như khả năng làm " +"cho mật khẩu cũ hơn). Chỉ cung cấp những tính năng này khi mật khẩu bóng " +"được bật; hệ thống này đã tắt mật khẩu bóng." + +# msgid "" +# Most LSB applications will work fine with either setting, but 100% +# conformance requires shadow passwords to be enabled. +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Most LSB applications will work fine with either setting, but complete " +"conformance requires shadow passwords to be enabled." +msgstr "" +"Phần lớn ứng dụng LSB sẽ hoạt động được với mỗi thiết lập, nhưng mà độ phù " +"hợp hoàn toàn cần đến bạn bật mật khẩu bóng." + +# msgid "" +# Generally speaking, it is considered good practice to enable shadow +# passwords. However, there are some situations in which shadow passwords +# may not work properly (most notably, if non-root users need to +# authenticate passwords against /etc/passwd). +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Generally speaking, it is considered good practice to enable shadow " +"passwords. However, there are some situations in which shadow passwords may " +"not work properly (most notably, if non-root users need to check passwords " +"against /etc/passwd)." +msgstr "" +"Nói chung, tốt để bật mật khẩu bóng. Tuy nhiên, cũng có một số trường hợp " +"không có mật khẩu bóng hoạt động được (nhất là nếu người dùng khác người chủ " +"cần so sánh mật khẩu với « /etc/passwd »)." + +#~ msgid "" +#~ "If you answer in the affirmative, the command 'shadowconfig on' will be " +#~ "run to enable shadow passwords." +#~ msgstr "" +#~ "Nếu bạn trả lời «Có» thì sẽ chạy lệnh «shadowconfig on» (bật cấu hình " +#~ "bóng) để hiệu lực mật khẩu bóng." diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..b5690dd --- /dev/null +++ b/debian/rules @@ -0,0 +1,87 @@ +#!/usr/bin/make -f + +derives_from_ubuntu := $(shell (dpkg-vendor --derives-from Ubuntu && echo "yes") || echo "no") + +PY2VERSIONS=$(shell pyversions -vr) +PY3VERSIONS=$(shell [ -x /usr/bin/py3versions ] && py3versions -vr) + +%: + dh --with python2 $@ + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) + +# Map Debian architectures to LSB architectures +lsbarch=${DEB_HOST_ARCH} +ifeq (${lsbarch}, i386) +lsbarch=ia32 +endif +ifeq (${lsbarch}, powerpc) +lsbarch=ppc32 +endif + +LIBC=libc6 (>> 2.3.5) +ifeq (${lsbarch}, amd64) +LIBC=libc6 (>= 2.13-17) +endif +ifeq (${lsbarch}, hurd-i386) +LIBC=libc0.3 (>> 2.3.5) +endif +ifeq (${lsbarch}, kfreebsd-amd64) +LIBC=libc0.1 (>> 2.3.5) +endif +ifeq (${lsbarch}, kfreebsd-i386) +LIBC=libc0.1 (>> 2.3.5) +endif +ifeq (${lsbarch}, ia64) +LIBC=libc6.1 (>> 2.3.5) +endif +ifeq (${lsbarch}, alpha) +LIBC=libc6.1 (>> 2.3.5) +endif + +override_dh_clean: + dh_clean + rm -f *.py[co] + rm -f debian/lsb-base.maintscript + +override_dh_auto_test: $(PY2VERSIONS:%=test-python%) $(PY3VERSIONS:%=test-python%) + +test-python2.6: + # Tests are not backported to python2.6, sorry. + +test-python%: + PATH=test/:$${PATH} PYTHONPATH=. python$* test/test_lsb_release.py -vv + PYTHONPATH=. python$* test/test_initdutils.py -vv + +override_dh_python2: + dh_python2 + dh_python2 /usr/lib/lsb + +override_dh_install: + dh_install +ifeq ($(derives_from_ubuntu),yes) + cp -p init-functions.d/50-ubuntu-logging debian/lsb-base/lib/lsb/init-functions.d/ + +override_dh_installdeb: + cp debian/lsb-base.maintscript.Ubuntu debian/lsb-base.maintscript + dh_installdeb +endif + +override_dh_gencontrol: + @echo >> debian/lsb-core.substvars "glibc=${LIBC}" +# @[ ${DEB_HOST_GNU_TYPE} != 'arm-linux-gnueabi' ] && echo >> debian/lsb-cxx.substvars "depends=libstdc++5" || true + @echo >> debian/lsb-core.substvars "provides=lsb-core-${lsbarch}" + @echo >> debian/lsb-cxx.substvars "provides=lsb-cxx-${lsbarch}" + @echo >> debian/lsb-graphics.substvars "provides=lsb-graphics-${lsbarch}" + @echo >> debian/lsb-desktop.substvars "provides=lsb-qt4-${lsbarch}, lsb-desktop-${lsbarch}" + @echo >> debian/lsb-multimedia.substvars "provides=lsb-multimedia-${lsbarch}" + @echo >> debian/lsb-languages.substvars "provides=lsb-languages-${lsbarch}" + @echo >> debian/lsb-printing.substvars "provides=lsb-printing-${lsbarch}" + @echo >> debian/lsb-security.substvars "provides=lsb-security-${lsbarch}" + @[ ${DEB_HOST_ARCH} = 'amd64' ] && echo >> debian/lsb-core.substvars "depends=libc6-i386, lib32z1" || true + @[ ${DEB_HOST_ARCH} = 'kfreebsd-amd64' ] && echo >> debian/lsb-core.substvars "depends=libc0.1-i386, lib32z1" || true + dh_gencontrol diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/debian/source/options b/debian/source/options new file mode 100644 index 0000000..8f04d6d --- /dev/null +++ b/debian/source/options @@ -0,0 +1 @@ +compression = "bzip2" diff --git a/init-functions b/init-functions new file mode 100644 index 0000000..5cb28dc --- /dev/null +++ b/init-functions @@ -0,0 +1,429 @@ +# /lib/lsb/init-functions for Debian -*- shell-script -*- +# +#Copyright (c) 2002-08 Chris Lawrence +#All rights reserved. +# +#Redistribution and use in source and binary forms, with or without +#modification, are permitted provided that the following conditions +#are met: +#1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +#2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +#3. Neither the name of the author nor the names of other contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +#THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +#IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +#WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +#ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE +#LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +#CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +#SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +#BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +#WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +#OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +#EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +start_daemon () { + local force nice pidfile exec args OPTIND + force="" + nice=0 + pidfile=/dev/null + + OPTIND=1 + while getopts fn:p: opt ; do + case "$opt" in + f) force="force";; + n) nice="$OPTARG";; + p) pidfile="$OPTARG";; + esac + done + + shift $(($OPTIND - 1)) + if [ "$1" = '--' ]; then + shift + fi + + exec="$1"; shift + + args="--start --nicelevel $nice --quiet --oknodo" + if [ "$force" ]; then + /sbin/start-stop-daemon $args \ + --chdir "$PWD" --startas $exec --pidfile /dev/null -- "$@" + elif [ $pidfile ]; then + /sbin/start-stop-daemon $args \ + --chdir "$PWD" --exec $exec --oknodo --pidfile "$pidfile" -- "$@" + else + /sbin/start-stop-daemon $args --chdir "$PWD" --exec $exec -- "$@" + fi +} + +pidofproc () { + local pidfile base status specified pid OPTIND + pidfile= + specified= + + OPTIND=1 + while getopts p: opt ; do + case "$opt" in + p) pidfile="$OPTARG" + specified="specified" + ;; + esac + done + shift $(($OPTIND - 1)) + + base=${1##*/} + if [ ! "$specified" ]; then + pidfile="/var/run/$base.pid" + fi + + if [ -n "${pidfile:-}" ]; then + if [ -e "$pidfile" ]; then + if [ -r "$pidfile" ]; then + read pid < "$pidfile" + if [ -n "${pid:-}" ]; then + if $(kill -0 "${pid:-}" 2> /dev/null); then + echo "$pid" || true + return 0 + elif ps "${pid:-}" >/dev/null 2>&1; then + echo "$pid" || true + return 0 # program is running, but not owned by this user + else + return 1 # program is dead and /var/run pid file exists + fi + fi + else + return 4 # pid file not readable, hence status is unknown. + fi + else + # pid file doesn't exist, try to find the pid nevertheless + if [ -x /bin/pidof ] && [ ! "$specified" ]; then + status="0" + /bin/pidof -o %PPID -x $1 || status="$?" + if [ "$status" = 1 ]; then + return 3 # program is not running + fi + return 0 + fi + return 3 # specified pid file doesn't exist, program probably stopped + fi + fi + if [ "$specified" ]; then + return 3 # almost certain it's not running + fi + return 4 # Unable to determine status +} + +# start-stop-daemon uses the same algorithm as "pidofproc" above. +killproc () { + local pidfile sig status base name_param is_term_sig OPTIND + pidfile= + name_param= + is_term_sig= + + OPTIND=1 + while getopts p: opt ; do + case "$opt" in + p) pidfile="$OPTARG";; + esac + done + shift $(($OPTIND - 1)) + + base=${1##*/} + if [ ! $pidfile ]; then + name_param="--name $base --pidfile /var/run/$base.pid" + else + name_param="--pidfile $pidfile" + fi + + sig=$(echo ${2:-} | sed -e 's/^-\(.*\)/\1/') + sig=$(echo $sig | sed -e 's/^SIG\(.*\)/\1/') + if [ "$sig" = 15 ] || [ "$sig" = TERM ]; then + is_term_sig="terminate_signal" + fi + status=0 + if [ ! "$is_term_sig" ]; then + if [ -n "$sig" ]; then + /sbin/start-stop-daemon --stop --signal "$sig" \ + --quiet $name_param || status="$?" + else + /sbin/start-stop-daemon --stop \ + --retry 5 \ + --quiet $name_param || status="$?" + fi + else + /sbin/start-stop-daemon --stop --quiet \ + --oknodo $name_param || status="$?" + fi + if [ "$status" = 1 ]; then + if [ -z "$sig" ]; then + return 0 + fi + return 3 # program is not running + fi + + if [ "$status" = 0 ] && [ "$is_term_sig" ] && [ "$pidfile" ]; then + pidofproc -p "$pidfile" "$1" >/dev/null || rm -f "$pidfile" + fi + return 0 +} + +# Return LSB status +status_of_proc () { + local pidfile daemon name status OPTIND + + pidfile= + OPTIND=1 + while getopts p: opt ; do + case "$opt" in + p) pidfile="$OPTARG";; + esac + done + shift $(($OPTIND - 1)) + + if [ -n "$pidfile" ]; then + pidfile="-p $pidfile" + fi + daemon="$1" + name="$2" + + status="0" + pidofproc $pidfile $daemon >/dev/null || status="$?" + if [ "$status" = 0 ]; then + log_success_msg "$name is running" + return 0 + elif [ "$status" = 4 ]; then + log_failure_msg "could not access PID file for $name" + return $status + else + log_failure_msg "$name is not running" + return $status + fi +} + +log_use_fancy_output () { + TPUT=/usr/bin/tput + EXPR=/usr/bin/expr + if [ -t 1 ] && + [ "x${TERM:-}" != "x" ] && + [ "x${TERM:-}" != "xdumb" ] && + [ -x $TPUT ] && [ -x $EXPR ] && + $TPUT hpa 60 >/dev/null 2>&1 && + $TPUT setaf 1 >/dev/null 2>&1 + then + [ -z $FANCYTTY ] && FANCYTTY=1 || true + else + FANCYTTY=0 + fi + case "$FANCYTTY" in + 1|Y|yes|true) true;; + *) false;; + esac +} + +log_success_msg () { + if [ -n "${1:-}" ]; then + log_begin_msg $@ + fi + log_end_msg 0 +} + +log_failure_msg () { + if [ -n "${1:-}" ]; then + log_begin_msg $@ "..." + fi + log_end_msg 1 || true +} + +log_warning_msg () { + if [ -n "${1:-}" ]; then + log_begin_msg $@ "..." + fi + log_end_msg 255 || true +} + +# +# NON-LSB HELPER FUNCTIONS +# +# int get_lsb_header_val (char *scriptpathname, char *key) +get_lsb_header_val () { + if [ ! -f "$1" ] || [ -z "${2:-}" ]; then + return 1 + fi + LSB_S="### BEGIN INIT INFO" + LSB_E="### END INIT INFO" + sed -n "/$LSB_S/,/$LSB_E/ s/# $2: \(.*\)/\1/p" $1 +} + +# If the currently running init daemon is upstart, return zero; if the +# calling init script belongs to a package which also provides a native +# upstart job, it should generally exit non-zero in this case. +init_is_upstart() +{ + if [ -x /sbin/initctl ] && /sbin/initctl version 2>/dev/null | /bin/grep -q upstart; then + return 0 + fi + return 1 +} + +# int log_begin_message (char *message) +log_begin_msg () { + log_begin_msg_pre "$@" + if [ -z "${1:-}" ]; then + return 1 + fi + /bin/echo -n "$@" || true + log_begin_msg_post "$@" +} + +# Sample usage: +# log_daemon_msg "Starting GNOME Login Manager" "gdm" +# +# On Debian, would output "Starting GNOME Login Manager: gdm" +# On Ubuntu, would output " * Starting GNOME Login Manager..." +# +# If the second argument is omitted, logging suitable for use with +# log_progress_msg() is used: +# +# log_daemon_msg "Starting remote filesystem services" +# +# On Debian, would output "Starting remote filesystem services:" +# On Ubuntu, would output " * Starting remote filesystem services..." + +log_daemon_msg () { + if [ -z "${1:-}" ]; then + return 1 + fi + log_daemon_msg_pre "$@" + + if [ -z "${2:-}" ]; then + /bin/echo -n "$1:" || true + return + fi + + /bin/echo -n "$1: $2" || true + log_daemon_msg_post "$@" +} + +# #319739 +# +# Per policy docs: +# +# log_daemon_msg "Starting remote file system services" +# log_progress_msg "nfsd"; start-stop-daemon --start --quiet nfsd +# log_progress_msg "mountd"; start-stop-daemon --start --quiet mountd +# log_progress_msg "ugidd"; start-stop-daemon --start --quiet ugidd +# log_end_msg 0 +# +# You could also do something fancy with log_end_msg here based on the +# return values of start-stop-daemon; this is left as an exercise for +# the reader... +# +# On Ubuntu, one would expect log_progress_msg to be a no-op. +log_progress_msg () { + if [ -z "${1:-}" ]; then + return 1 + fi + /bin/echo -n " $@" || true +} + + +# int log_end_message (int exitstatus) +log_end_msg () { + # If no arguments were passed, return + if [ -z "${1:-}" ]; then + return 1 + fi + + local retval + retval=$1 + + log_end_msg_pre "$@" + + # Only do the fancy stuff if we have an appropriate terminal + # and if /usr is already mounted + if log_use_fancy_output; then + RED=$( $TPUT setaf 1) + YELLOW=$( $TPUT setaf 3) + NORMAL=$( $TPUT op) + else + RED='' + YELLOW='' + NORMAL='' + fi + + if [ $1 -eq 0 ]; then + echo "." || true + elif [ $1 -eq 255 ]; then + /bin/echo -e " ${YELLOW}(warning).${NORMAL}" || true + else + /bin/echo -e " ${RED}failed!${NORMAL}" || true + fi + log_end_msg_post "$@" + return $retval +} + +log_action_msg () { + log_action_msg_pre "$@" + echo "$@." || true + log_action_msg_post "$@" +} + +log_action_begin_msg () { + log_action_begin_msg_pre "$@" + /bin/echo -n "$@..." || true + log_action_begin_msg_post "$@" +} + +log_action_cont_msg () { + /bin/echo -n "$@..." || true +} + +log_action_end_msg () { + local end + log_action_end_msg_pre "$@" + if [ -z "${2:-}" ]; then + end="." + else + end=" ($2)." + fi + + if [ $1 -eq 0 ]; then + echo "done${end}" || true + else + if log_use_fancy_output; then + RED=$( $TPUT setaf 1) + NORMAL=$( $TPUT op) + /bin/echo -e "${RED}failed${end}${NORMAL}" || true + else + echo "failed${end}" || true + fi + fi + log_action_end_msg_post "$@" +} + +# Pre&Post empty function declaration, to be overriden from /lib/lsb/init-functions.d/* +log_daemon_msg_pre () { :; } +log_daemon_msg_post () { :; } +log_begin_msg_pre () { :; } +log_begin_msg_post () { :; } +log_end_msg_pre () { :; } +log_end_msg_post () { :; } +log_action_msg_pre () { :; } +log_action_msg_post () { :; } +log_action_begin_msg_pre () { :; } +log_action_begin_msg_post () { :; } +log_action_end_msg_pre () { :; } +log_action_end_msg_post () { :; } + +# Include hooks from other packages in /lib/lsb/init-functions.d +for hook in $(run-parts --lsbsysinit --list /lib/lsb/init-functions.d 2>/dev/null); do + [ -r $hook ] && . $hook || true +done + +FANCYTTY= +[ -e /etc/lsb-base-logging.sh ] && . /etc/lsb-base-logging.sh || true diff --git a/init-functions.d/20-left-info-blocks b/init-functions.d/20-left-info-blocks new file mode 100644 index 0000000..9b9f3b1 --- /dev/null +++ b/init-functions.d/20-left-info-blocks @@ -0,0 +1,43 @@ +# Default info blocks put to the left of the screen +log_daemon_msg_pre () { + if log_use_fancy_output; then + /bin/echo -n "[....] " || true + fi +} +log_begin_msg_pre () { + log_daemon_msg_pre "$@" +} +log_end_msg_pre () { + if log_use_fancy_output; then + RED=$( $TPUT setaf 1) + GREEN=$( $TPUT setaf 2) + YELLOW=$( $TPUT setaf 3) + NORMAL=$( $TPUT op) + + $TPUT civis || true + $TPUT sc && \ + $TPUT hpa 0 && \ + if [ $1 -eq 0 ]; then + /bin/echo -ne "[${GREEN} ok ${NORMAL}" || true + elif [ $1 -eq 255 ]; then + /bin/echo -ne "[${YELLOW}warn${NORMAL}" || true + else + /bin/echo -ne "[${RED}FAIL${NORMAL}" || true + fi && \ + $TPUT rc || true + $TPUT cnorm || true + fi +} +log_action_msg_pre () { + if log_use_fancy_output; then + CYAN=$( $TPUT setaf 6) + NORMAL=$( $TPUT op) + /bin/echo -ne "[${CYAN}info${NORMAL}] " || true + fi +} +log_action_begin_msg_pre () { + log_daemon_msg_pre "$@" +} +log_action_end_msg_pre () { + log_end_msg_pre "$@" +} diff --git a/init-functions.d/50-ubuntu-logging b/init-functions.d/50-ubuntu-logging new file mode 100644 index 0000000..4fdadcf --- /dev/null +++ b/init-functions.d/50-ubuntu-logging @@ -0,0 +1,141 @@ +# Default init script logging functions suitable for Ubuntu. +# See /lib/lsb/init-functions for usage help. +LOG_DAEMON_MSG="" + +log_use_plymouth () { + if [ "${loop:-n}" = y ]; then + return 1 + fi + plymouth --ping >/dev/null 2>&1 +} + +log_success_msg () { + echo " * $@" || true +} + +log_failure_msg () { + if log_use_fancy_output; then + RED=`$TPUT setaf 1` + NORMAL=`$TPUT op` + echo " $RED*$NORMAL $@" || true + else + echo " * $@" || true + fi +} + +log_warning_msg () { + if log_use_fancy_output; then + YELLOW=`$TPUT setaf 3` + NORMAL=`$TPUT op` + echo " $YELLOW*$NORMAL $@" || true + else + echo " * $@" || true + fi +} + +log_begin_msg () { + log_daemon_msg "$1" +} + +log_daemon_msg () { + if [ -z "$1" ]; then + return 1 + fi + + if log_use_fancy_output && $TPUT xenl >/dev/null 2>&1; then + COLS=`$TPUT cols` + if [ "$COLS" ] && [ "$COLS" -gt 6 ]; then + COL=`$EXPR $COLS - 7` + else + COLS=80 + COL=73 + fi + + if log_use_plymouth; then + # If plymouth is running, don't output anything at this time + # to avoid buffering problems (LP: #752393) + if [ -z "$LOG_DAEMON_MSG" ]; then + LOG_DAEMON_MSG=$* + return + fi + fi + + # We leave the cursor `hanging' about-to-wrap (see terminfo(5) + # xenl, which is approximately right). That way if the script + # prints anything then we will be on the next line and not + # overwrite part of the message. + + # Previous versions of this code attempted to colour-code the + # asterisk but this can't be done reliably because in practice + # init scripts sometimes print messages even when they succeed + # and we won't be able to reliably know where the colourful + # asterisk ought to go. + + printf " * $* " || true + # Enough trailing spaces for ` [fail]' to fit in; if the message + # is too long it wraps here rather than later, which is what we + # want. + $TPUT hpa `$EXPR $COLS - 1` || true + printf ' ' || true + else + echo " * $@" || true + COL= + fi +} + +log_progress_msg () { + : +} + +log_end_msg () { + if [ -z "$1" ]; then + return 1 + fi + + if [ "$COL" ] && [ -x "$TPUT" ]; then + # If plymouth is running, print previously stored output + # to avoid buffering problems (LP: #752393) + if log_use_plymouth; then + if [ -n "$LOG_DAEMON_MSG" ]; then + log_daemon_msg $LOG_DAEMON_MSG + LOG_DAEMON_MSG="" + fi + fi + + printf "\r" || true + $TPUT hpa $COL + if [ "$1" -eq 0 ]; then + echo "[ OK ]" || true + else + printf '[' || true + $TPUT setaf 1 || true # red + printf fail || true + $TPUT op || true # normal + echo ']' || true + fi + else + if [ "$1" -eq 0 ]; then + echo " ...done." || true + else + echo " ...fail!" || true + fi + fi + return $1 +} + +log_action_msg () { + echo " * $@" || true +} + +log_action_begin_msg () { + log_daemon_msg "$@..." || true +} + +log_action_cont_msg () { + log_daemon_msg "$@..." || true +} + +log_action_end_msg () { + # In the future this may do something with $2 as well. + log_end_msg "$1" || true +} diff --git a/initdutils.py b/initdutils.py new file mode 100644 index 0000000..3b5bb10 --- /dev/null +++ b/initdutils.py @@ -0,0 +1,177 @@ +# Support for scanning init scripts for LSB info + +import re, sys, os, cStringIO +import cPickle + +try: + assert True +except: + True = 1 + False = 0 + +class RFC822Parser(dict): + "A dictionary-like object." + __linere = re.compile(r'([^:]+):\s*(.*)$') + + def __init__(self, fileob=None, strob=None, startcol=0, basedict=None): + if not fileob and not strob: + raise ValueError, 'need a file or string' + if not basedict: + basedict = {} + + super(RFC822Parser, self).__init__(basedict) + + if not fileob: + fileob = cStringIO.StringIO(strob) + + key = None + for line in fileob: + if startcol: + line = line[startcol:] + + if not line.strip(): + continue + + # Continuation line + if line[0].isspace(): + if not key: + continue + self[key] += '\n' + line.strip() + continue + + m = self.__linere.match(line) + if not m: + # Not a valid RFC822 header + continue + key, value = m.groups() + self[key] = value.strip() + +# End of RFC882Parser + +LSBLIB = '/var/lib/lsb' +FACILITIES = os.path.join(LSBLIB, 'facilities') +DEPENDS = os.path.join(LSBLIB, 'depends') +LSBINSTALL = os.path.join(LSBLIB, 'lsbinstall') + +beginre = re.compile(re.escape('### BEGIN INIT INFO')) +endre = re.compile(re.escape('### END INIT INFO')) +#linere = re.compile(r'\#\s+([^:]+):\s*(.*)') + +def scan_initfile(initfile): + headerlines = '' + scanning = False + + for line in file(initfile): + line = line.rstrip() + if beginre.match(line): + scanning = True + continue + elif scanning and endre.match(line): + scanning = False + continue + elif not scanning: + continue + + if line.startswith('# '): + headerlines += line[2:] + '\n' + elif line.startswith('#\t'): + headerlines += line[1:] + '\n' + + inheaders = RFC822Parser(strob=headerlines) + headers = {} + for header, body in inheaders.iteritems(): + # Ignore empty headers + if not body.strip(): + continue + + if header in ('Default-Start', 'Default-Stop'): + headers[header] = map(int, body.split()) + elif header in ('Required-Start', 'Required-Stop', 'Provides', + 'Should-Start', 'Should-Stop'): + headers[header] = body.split() + else: + headers[header] = body + + return headers + +def save_facilities(facilities): + if not facilities: + try: + os.unlink(FACILITIES) + except OSError: + pass + return + + fh = file(FACILITIES, 'w') + for facility, entries in facilities.items(): + # Ignore system facilities + if facility.startswith('$'): continue + for (scriptname, pri) in entries.items(): + start, stop = pri + print >> fh, "%(scriptname)s %(facility)s %(start)d %(stop)d" % locals() + fh.close() + +def load_facilities(): + facilities = {} + if os.path.exists(FACILITIES): + for line in open(FACILITIES).xreadlines(): + try: + scriptname, name, start, stop = line.strip().split() + facilities.setdefault(name, {})[scriptname] = (int(start), + int(stop)) + except ValueError, x: + print >> sys.stderr, 'Invalid facility line', line + + return facilities + +def load_depends(): + depends = {} + + if os.path.exists(DEPENDS): + independs = RFC822Parser(fileob=file(DEPENDS)) + for initfile, facilities in independs.iteritems(): + depends[initfile] = facilities.split() + return depends + +def save_depends(depends): + if not depends: + try: + os.unlink(DEPENDS) + except OSError: + pass + return + + fh = file(DEPENDS, 'w') + for initfile, facilities in depends.iteritems(): + print >> fh, '%s: %s' % (initfile, ' '.join(facilities)) + fh.close() + +# filemap entries are mappings, { (package, filename) : instloc } +def load_lsbinstall_info(): + if not os.path.exists(LSBINSTALL): + return {} + + fh = open(LSBINSTALL, 'rb') + filemap = cPickle.load(fh) + fh.close() + + # Just in case it's corrupted somehow + if not isinstance(filemap, dict): + return {} + + return filemap + +def save_lsbinstall_info(filemap): + if not filemap: + try: + os.unlink(LSBINSTALL) + except OSError: + pass + return + + fh = open(LSBINSTALL, 'wb') + cPickle.dump(fh, filemap) + fh.close() + +if __name__ == '__main__': + print scan_initfile('init-fragment') diff --git a/install_initd b/install_initd new file mode 100755 index 0000000..4ec8452 --- /dev/null +++ b/install_initd @@ -0,0 +1,138 @@ +#!/usr/bin/python + +import sys, re, os, initdutils + +if len(sys.argv) > 1: + initfile = sys.argv[1] + # If the absolute path isn't specified, assume it's relative to + # cwd; if that doesn't exist, try /etc/init.d + ap = os.path.abspath(initfile) + if os.path.exists(ap): + initfile = ap + else: + initfile = os.path.join('/etc/init.d', initfile) +else: + print >> sys.stderr, 'Usage: %s /etc/init.d/' % sys.argv[0] + sys.exit(1) + +# Default priorities +startpri = stoppri = 20 +defstart = [2, 3, 4, 5] +defstop = [0, 1, 6] + +# Estimated priorities of these facilities in Debian +os_facilities = { + "$local_fs" : {'lsb' : (0, 100)}, + "$network" : {'lsb' : (10, 50)}, + "$remote_fs" : {'lsb': (19, 20)}, + "$named" : {'lsb': (19, 19)}, + "$syslog" : {'lsb' : (10, 89)}, + # No longer present in gLSB 1.2; however, required for gLSB 1.1 + # compat. Note that these are looser than $portmap and $time; + # anything specifying $netdaemons will be run later, which may not + # be what you want... + "$netdaemons" : {'lsb': (80, 19)}, + # gLSB 1.2 + "$portmap" : {'lsb' : (19, 34)}, + "$time" : {'lsb' : (24, 21)}, + } + +facilities = initdutils.load_facilities() +facilities.update(os_facilities) + +depends = initdutils.load_depends() +depends[initfile] = [] + +headers = initdutils.scan_initfile(initfile) + +reqstart = headers.get('Required-Start', []) +shouldstart = headers.get('Should-Start', []) +if reqstart or shouldstart: + startpri = 5 + for facility in reqstart: + if facility not in facilities: + print >> sys.stderr, 'Missing required start facility', facility + sys.exit(1) + else: + for script, pri in facilities[facility].iteritems(): + if script != initfile: + start, stop = pri + startpri = max(startpri, start+1) + if facility not in depends[initfile]: + depends[initfile].append(facility) + + for facility in shouldstart: + if facility not in facilities: + print >> sys.stderr, 'Missing should-start facility', facility, '(ignored)' + else: + for script, pri in facilities[facility].iteritems(): + if script != initfile: + start, stop = pri + startpri = max(startpri, start+1) + startpri = min(max(startpri, 1), 99) + +reqstop = headers.get('Required-Stop', []) +shouldstop = headers.get('Should-Stop', []) +if reqstop or shouldstop: + stoppri = 95 + for facility in reqstop: + if facility not in facilities: + print >> sys.stderr, 'Missing required stop facility', facility + sys.exit(1) + else: + for script, pri in facilities[facility].iteritems(): + if script != initfile: + start, stop = pri + stoppri = min(stoppri, stop-1) + if facility not in depends[initfile]: + depends[initfile].append(facility) + + for facility in shouldstop: + if facility not in facilities: + print >> sys.stderr, 'Missing should-stop facility', facility, '(ignored)' + else: + for script, pri in facilities[facility].iteritems(): + if script != initfile: + start, stop = pri + stoppri = min(stoppri, stop-1) + + stoppri = min(max(stoppri, 1), 99) + +if depends[initfile]: + initdutils.save_depends(depends) + +provides = headers.get('Provides', []) +if provides: + for facility in provides: + if facility[0] == '$': + print >> sys.stderr, 'Ignoring system-provided facility', facility + continue + if not facilities.has_key(facility): + facilities[facility] = {} + + facilities[facility][initfile] = (startpri, stoppri) + initdutils.save_facilities(facilities) + +defstart = headers.get('Default-Start', defstart) +defstop = headers.get('Default-Stop', defstop) + +# A set type would be nice... [range(2,6) = 2..5] +for level in range(2,6): + if level in defstart: + for i in range(2,6): + if i not in defstart: + defstart.append(i) + if level in defstop: + for i in range(2,6): + if i not in defstop: + defstop.append(i) + +defstart.sort() +defstop.sort() + +start_runlevels = " ".join(map(str, defstart)) +stop_runlevels = " ".join(map(str, defstop)) + +initfile = initfile.replace('/etc/init.d/', '') + +os.system("/usr/sbin/update-rc.d %(initfile)s start %(startpri)d %(start_runlevels)s . stop %(stoppri)d %(stop_runlevels)s ." % locals()) diff --git a/lsb.8 b/lsb.8 new file mode 100644 index 0000000..12a1494 --- /dev/null +++ b/lsb.8 @@ -0,0 +1,35 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH lsb 8 "2002-02-24" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +lsb \- Linux Standard Base support for Debian +.SH DESCRIPTION +The \fBlsb\fP package provides infrastructure for installing Linux +Standard Base applications on Debian. This manual page is designed to +refer system adminstrators and others to the documentation available. +.PP +The Linux Standard Base is a common runtime environment for +third-party packages. The goal of the LSB is to make it easy to +create binary packages that will run on any Linux distribution. For +more information on the standard, please see the LSB web site. +.SH SEE ALSO +.BR /usr/share/doc/lsb-core/README.Debian.gz +.BR http://www.linuxbase.org/ +.BR http://refspecs.linuxbase.org/lsb.shtml +.SH AUTHOR +This manual page was written by Chris Lawrence +for the Debian system (but may be used by others). diff --git a/lsb_release b/lsb_release new file mode 100755 index 0000000..abb201f --- /dev/null +++ b/lsb_release @@ -0,0 +1,98 @@ +#!/usr/bin/python + +# lsb_release command for Debian +# (C) 2005-10 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 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# 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., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA + +# Python3-compatible print() function +from __future__ import print_function + +from optparse import OptionParser +import sys +import os +import re + +import lsb_release + +def main(): + parser = OptionParser() + parser.add_option('-v', '--version', dest='version', action='store_true', + default=False, + help="show LSB modules this system supports") + parser.add_option('-i', '--id', dest='id', action='store_true', + default=False, + help="show distributor ID") + parser.add_option('-d', '--description', dest='description', + default=False, action='store_true', + help="show description of this distribution") + parser.add_option('-r', '--release', dest='release', + default=False, action='store_true', + help="show release number of this distribution") + parser.add_option('-c', '--codename', dest='codename', + default=False, action='store_true', + help="show code name of this distribution") + parser.add_option('-a', '--all', dest='all', + default=False, action='store_true', + help="show all of the above information") + parser.add_option('-s', '--short', dest='short', + action='store_true', default=False, + help="show requested information in short format") + + (options, args) = parser.parse_args() + if args: + parser.error("No arguments are permitted") + + short = (options.short) + none = not (options.all or options.version or options.id or + options.description or options.codename or options.release) + + distinfo = lsb_release.get_distro_information() + + if none or options.all or options.version: + verinfo = lsb_release.check_modules_installed() + if not verinfo: + print("No LSB modules are available.", file=sys.stderr) + elif short: + print(':'.join(verinfo)) + else: + print('LSB Version:\t' + ':'.join(verinfo)) + + if options.id or options.all: + if short: + print(distinfo.get('ID', 'n/a')) + else: + print('Distributor ID:\t%s' % distinfo.get('ID', 'n/a')) + + if options.description or options.all: + if short: + print(distinfo.get('DESCRIPTION', 'n/a')) + else: + print('Description:\t%s' % distinfo.get('DESCRIPTION', 'n/a')) + + if options.release or options.all: + if short: + print(distinfo.get('RELEASE', 'n/a')) + else: + print('Release:\t%s' % distinfo.get('RELEASE', 'n/a')) + + if options.codename or options.all: + if short: + print(distinfo.get('CODENAME', 'n/a')) + else: + print('Codename:\t%s' % distinfo.get('CODENAME', 'n/a')) + +if __name__ == '__main__': + main() diff --git a/lsb_release.1 b/lsb_release.1 new file mode 100644 index 0000000..b75ecb5 --- /dev/null +++ b/lsb_release.1 @@ -0,0 +1,60 @@ +.TH lsb_release 1 +.SH NAME +lsb_release \- print distribution-specific information +.SH SYNOPSIS +.B lsb_release +.I "[options]" +.SH DESCRIPTION +The +.B lsb_release +command provides certain LSB (Linux Standard Base) and +distribution-specific information. +.PP +If no options are given, the \fI\-v\fP option is assumed. +.SH OPTIONS +The program follows the usual GNU command line syntax, with long +options starting with two dashes (`\-\-'). +A summary of options are included below. +.TP +.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. +.TP +.B \-i, \-\-id +Display the distributor's ID. +.TP +.B \-d, \-\-description +Display a description of the currently installed distribution. +.TP +.B \-r, \-\-release +Display the release number of the currently installed distribution. +.TP +.B \-c, \-\-codename +Display the code name of the currently installed distribution. +.TP +.B \-a, \-\-all +Display all of the above information. +.TP +.B \-s, \-\-short +Use the short output format for any information displayed. This +format omits the leading header(s). +.TP +.B \-h, \-\-help +Show summary of options. +.SH NOTES +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. + +Detection of systems using a mix of packages from various distributions +or releases is something of a black art; the current heuristic tends +to assume that the installation is of the earliest distribution which +is still being used by +.B apt +but that heuristic is subject to error. +.SH "SEE ALSO" +lsb(8) +.SH AUTHOR +Chris Lawrence . diff --git a/lsb_release.py b/lsb_release.py new file mode 100644 index 0000000..0727c1f --- /dev/null +++ b/lsb_release.py @@ -0,0 +1,367 @@ +#!/usr/bin/python + +# LSB release detection module for Debian +# (C) 2005-10 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 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# 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., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA + +# Python3-compatible print() function +from __future__ import print_function + +import sys +import subprocess +import os +import re +import warnings + +# XXX: Update as needed +# This should really be included in apt-cache policy output... it is already +# in the Release file... +RELEASE_CODENAME_LOOKUP = { + '1.1' : 'buzz', + '1.2' : 'rex', + '1.3' : 'bo', + '2.0' : 'hamm', + '2.1' : 'slink', + '2.2' : 'potato', + '3.0' : 'woody', + '3.1' : 'sarge', + '4.0' : 'etch', + '5.0' : 'lenny', + '6.0' : 'squeeze', + '7.0' : 'wheezy', + } + +TESTING_CODENAME = 'unknown.new.testing' + +RELEASES_ORDER = list(RELEASE_CODENAME_LOOKUP.items()) +RELEASES_ORDER.sort() +RELEASES_ORDER = list(list(zip(*RELEASES_ORDER))[1]) +RELEASES_ORDER.extend(['stable', 'testing', 'unstable', 'sid']) + +def lookup_codename(release, unknown=None): + m = re.match(r'(\d+)\.(\d+)(r(\d+))?', release) + if not m: + return unknown + + shortrelease = '%s.%s' % m.group(1,2) + return RELEASE_CODENAME_LOOKUP.get(shortrelease, unknown) + +# LSB compliance packages... may grow eventually +PACKAGES = 'lsb-core lsb-cxx lsb-graphics lsb-desktop lsb-languages lsb-multimedia lsb-printing lsb-security' + +modnamere = re.compile(r'lsb-(?P[a-z0-9]+)-(?P[^ ]+)(?: \(= (?P[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'] + elif version == '3.1': + if module in ('desktop', 'qt4'): + return ['3.1'] + elif module == 'cxx': + return ['3.0', '3.1'] + else: + return ['2.0', '3.0', '3.1'] + elif version == '3.2': + if module == 'desktop': + return ['3.1', '3.2'] + elif module == 'qt4': + return ['3.1'] + elif module in ('printing', 'languages', 'multimedia'): + return ['3.2'] + elif module == 'cxx': + return ['3.0', '3.1', '3.2'] + else: + return ['2.0', '3.0', '3.1', '3.2'] + elif version == '4.0': + if module == 'desktop': + return ['3.1', '3.2', '4.0'] + elif module == 'qt4': + return ['3.1'] + elif module in ('printing', 'languages', 'multimedia'): + return ['3.2', '4.0'] + elif module == 'security': + return ['4.0'] + elif module == 'cxx': + return ['3.0', '3.1', '3.2', '4.0'] + else: + return ['2.0', '3.0', '3.1', '3.2', '4.0'] + elif version == '4.1': + if module == 'desktop': + return ['3.1', '3.2', '4.0', '4.1'] + elif module == 'qt4': + return ['3.1'] + elif module in ('printing', 'languages', 'multimedia'): + return ['3.2', '4.0', '4.1'] + elif module == 'security': + return ['4.0', '4.1'] + elif module == 'cxx': + return ['3.0', '3.1', '3.2', '4.0', '4.1'] + else: + return ['2.0', '3.0', '3.1', '3.2', '4.0', '4.1'] + + + return [version] + +try: + set # introduced in 2.4 +except NameError: + import sets + set = sets.Set + +# This is Debian-specific at present +def check_modules_installed(): + # Find which LSB modules are installed on this system + C_env = os.environ.copy(); C_env['LC_ALL'] = 'C' + output = subprocess.Popen(['dpkg-query','-f',"${Version} ${Provides}\n",'-W'] + PACKAGES.split(), + env=C_env, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + close_fds=True).communicate()[0].decode('utf-8') + + if not output: + return [] + + modules = set() + for line in output.split(os.linesep): + if not line: + break + version, provides = line.split(' ', 1) + # Debian package versions can be 3.2-$REV, 3.2+$REV or 3.2~$REV. + version = re.split('[-+~]', version, 1)[0] + for pkg in provides.split(','): + mob = modnamere.search(pkg) + if not mob: + continue + + mgroups = mob.groupdict() + # If no versioned provides... + if mgroups.get('version'): + module = '%(module)s-%(version)s-%(arch)s' % mgroups + modules.add(module) + else: + module = mgroups['module'] + for v in valid_lsb_versions(version, module): + mgroups['version'] = v + module = '%(module)s-%(version)s-%(arch)s' % mgroups + modules.add(module) + + modules = list(modules) + modules.sort() + return modules + +longnames = {'v' : 'version', 'o': 'origin', 'a': 'suite', + 'c' : 'component', 'l': 'label'} + +def parse_policy_line(data): + retval = {} + bits = data.split(',') + for bit in bits: + kv = bit.split('=', 1) + if len(kv) > 1: + k, v = kv[:2] + if k in longnames: + retval[longnames[k]] = v + return retval + +def release_index(x): + suite = x[1].get('suite') + if suite: + if suite in RELEASES_ORDER: + return int(len(RELEASES_ORDER) - RELEASES_ORDER.index(suite)) + else: + return suite + return 0 + +def compare_release(x, y): + warnings.warn('compare_release(x,y) is deprecated; please use the release_index(x) as key for sort() instead.', DeprecationWarning, stacklevel=2) + suite_x_i = release_index(x) + suite_y_i = release_index(y) + + try: + return suite_x_i - suite_y_i + except TypeError: + return (suite_x_i > suite_y_i) - (suite_x_i < suite_y_i) + +def parse_apt_policy(): + data = [] + + C_env = os.environ.copy(); C_env['LC_ALL'] = 'C' + policy = subprocess.Popen(['apt-cache','policy'], + env=C_env, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + close_fds=True).communicate()[0].decode('utf-8') + for line in policy.split('\n'): + line = line.strip() + m = re.match(r'(-?\d+)', line) + if m: + priority = int(m.group(1)) + if line.startswith('release'): + bits = line.split(' ', 1) + if len(bits) > 1: + data.append( (priority, parse_policy_line(bits[1])) ) + + return data + +def guess_release_from_apt(origin='Debian', component='main', + ignoresuites=('experimental'), + label='Debian', + alternate_olabels={'Debian Ports':'ftp.debian-ports.org'}): + releases = parse_apt_policy() + + if not releases: + return None + + # We only care about the specified origin, component, and label + releases = [x for x in releases if ( + x[1].get('origin', '') == origin and + x[1].get('component', '') == component and + x[1].get('label', '') == label) or ( + x[1].get('origin', '') in alternate_olabels and + x[1].get('label', '') == alternate_olabels.get(x[1].get('origin', '')))] + + # Check again to make sure we didn't wipe out all of the releases + if not releases: + return None + + releases.sort(key=lambda tuple: tuple[0],reverse=True) + + # We've sorted the list by descending priority, so the first entry should + # be the "main" release in use on the system + + max_priority = releases[0][0] + releases = [x for x in releases if x[0] == max_priority] + releases.sort(key=release_index) + + return releases[0][1] + +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 + elif kern in ('GNU/Linux', 'GNU/kFreeBSD'): + distinfo['OS'] = kern + else: + distinfo['OS'] = 'GNU' + + distinfo['DESCRIPTION'] = '%(ID)s %(OS)s' % distinfo + + etc_debian_version = os.environ.get('LSB_ETC_DEBIAN_VERSION','/etc/debian_version') + if os.path.exists(etc_debian_version): + try: + with open(etc_debian_version) as debian_version: + release = debian_version.read().strip() + except IOError as msg: + print('Unable to open ' + etc_debian_version + ':', str(msg), file=sys.stderr) + release = 'unknown' + + if not release[0:1].isalpha(): + # /etc/debian_version should be numeric + codename = lookup_codename(release, 'n/a') + distinfo.update({ 'RELEASE' : release, 'CODENAME' : codename }) + elif release.endswith('/sid'): + if release.rstrip('/sid').lower().isalpha() != 'testing': + global TESTING_CODENAME + TESTING_CODENAME = release.rstrip('/sid') + distinfo['RELEASE'] = 'testing/unstable' + else: + distinfo['RELEASE'] = release + + # Only use apt information if we did not get the proper information + # from /etc/debian_version or if we don't have a codename + # (which will happen if /etc/debian_version does not contain a + # number but some text like 'testing/unstable' or 'lenny/sid') + # + # This is slightly faster and less error prone in case the user + # has an entry in his /etc/apt/sources.list but has not actually + # upgraded the system. + if not distinfo.get('CODENAME'): + rinfo = guess_release_from_apt() + if rinfo: + release = rinfo.get('version') + + # Special case Debian-Ports as their Release file has 'version': '1.0' + if release == '1.0' and rinfo.get('origin') == 'Debian Ports' and rinfo.get('label') == 'ftp.debian-ports.org': + release = None + rinfo.update({'suite': 'unstable'}) + + if release: + codename = lookup_codename(release, 'n/a') + else: + release = rinfo.get('suite', 'unstable') + if release == 'testing': + # Would be nice if I didn't have to hardcode this. + codename = TESTING_CODENAME + else: + codename = 'sid' + distinfo.update({ 'RELEASE' : release, 'CODENAME' : codename }) + + if distinfo.get('RELEASE'): + distinfo['DESCRIPTION'] += ' %(RELEASE)s' % distinfo + if distinfo.get('CODENAME'): + distinfo['DESCRIPTION'] += ' (%(CODENAME)s)' % distinfo + + return distinfo + +# Whatever is guessed above can be overridden in /etc/lsb-release +def get_lsb_information(): + distinfo = {} + etc_lsb_release = os.environ.get('LSB_ETC_LSB_RELEASE','/etc/lsb-release') + if os.path.exists(etc_lsb_release): + try: + with open(etc_lsb_release) as lsb_release_file: + for line in lsb_release_file: + line = line.strip() + if not line: + continue + # Skip invalid lines + if not '=' in line: + continue + var, arg = line.split('=', 1) + if var.startswith('DISTRIB_'): + var = var[8:] + if arg.startswith('"') and arg.endswith('"'): + arg = arg[1:-1] + if arg: # Ignore empty arguments + distinfo[var] = arg.strip() + except IOError as msg: + print('Unable to open ' + etc_lsb_release + ':', str(msg), file=sys.stderr) + + return distinfo + +def get_distro_information(): + lsbinfo = get_lsb_information() + # OS is only used inside guess_debian_release anyway + for key in ('ID', 'RELEASE', 'CODENAME', 'DESCRIPTION',): + if key not in lsbinfo: + distinfo = guess_debian_release() + distinfo.update(lsbinfo) + return distinfo + else: + return lsbinfo + +def test(): + print(get_distro_information()) + print(check_modules_installed()) + +if __name__ == '__main__': + test() diff --git a/lsbinstall b/lsbinstall new file mode 100755 index 0000000..f007517 --- /dev/null +++ b/lsbinstall @@ -0,0 +1,271 @@ +#!/usr/bin/python + +import sys +import os +import shutil +import socket +import commands +from tempfile import NamedTemporaryFile +from initdutils import load_lsbinstall_info, save_lsbinstall_info + +# These keep getting revised... *sigh* +objecttypes = ( + #'init', + 'profile', + 'service', + 'inet', # XXX - reenable when implemented + #'crontab', + #'man' + ) + +def installed_message(objectname): + print objectname, 'is installed' + +def handle_generic_install(options, args, location, showinstloc=False): + filename = args[0] + basename = os.path.basename(filename) + instloc = os.path.join(location, basename) + package = args.package + + filemap = load_lsbinstall_info() + fileinfo = filemap.get((package, filename)) + + if options.check: + if fileinfo and os.path.exists(fileinfo): + installed_message(fileinfo) + return + else: + sys.exit(1) + elif options.remove: + if os.path.exists(fileinfo): + try: + os.unlink(fileinfo) + except (IOError, OSError, os.error), why: + print >> sys.stderr, 'Removal of %s failed: %s' % ( + instloc, str(why)) + sys.exit(1) + + # Remove it from the database, even if it was previously removed + del filemap[(package, filename)] + save_lsbinstall_info(filemap) + return + + if os.path.exists(instloc) and options.package: + instloc = os.path.join(location, '%s.%s' % (options.package, basename)) + + if os.path.exists(instloc): + print >> sys.stderr, 'Unable to install %s: %s exists' % ( + filename, instloc) + sys.exit(1) + + if not os.path.exists(location): + try: + os.makedirs(location) + except (IOError, OSError, os.error), why: + print >> sys.stderr, 'Unable to create %s to install %s: %s' % ( + location, filename, str(why)) + sys.exit(1) + + try: + shutil.copy2(filename, instloc) + except (IOError, os.error), why: + print >> sys.stderr, 'Installation of %s as %s failed: %s' % ( + filename, instloc, str(why)) + sys.exit(1) + + if showinstloc: + print instloc + + filemap[(package, filename)] = instloc + save_lsbinstall_info(filemap) + +def handle_service(options, args): + # LSB says we don't actually have to remove these things... + if options.remove: + sys.exit(0) + + pkg = options.package or '' + + try: + pproto = args[0] + port, proto = pproto.split('/', 1) + port = int(port) + except: + print >> sys.stderr, 'You must specify a port/protocol pair as the first argument.' + sys.exit(2) + + if options.check: + try: + serv = socket.getservbyport(port, proto) + except socket.error: + sys.exit(1) + + print '%d/%s corresponds to service %s' % (port, proto, serv) + return + + sname = args[1] + saliases = args[2:] + + try: + serv = socket.getservbyport(port, proto) + except socket.error: + serv = None + + if serv: + # Editing existing service + fpin = open('/etc/services') + fpout = NamedTemporaryFile('w', prefix='services-', dir='/etc') + newfname = fpout.name + + for line in fpin: + line = line.rstrip() + if not line.startswith('#'): + lcomment = '' + if '#' in line: + line, lcomment = line.split('#', 1) + + bits = line.split(None, 2) + lname, lpproto = bits[:2] + laliases = [] + if len(bits) > 2: + laliases = bits[2].split() + + lport, lproto = lpproto.split('/') + lport = int(lport) + + if lport == port and lproto == proto: + # We've found the right line + if name != lname: + aliases += [name] + + for a in aliases: + if a != lname and a not in laliases: + laliases += [a] + elif name == lname or name in laliases: + # name shows up, but in wrong protocol/port + print >> sys.stderr, 'Conflict between specified addition and /etc/services; aborting.' + fpout.close() + os.unlink(newfname) + sys.exit(1) + + endbits = '' + if laliases: + endbits = ' '.join(laliases) + ' ' + if lcomment: + endbits += '#'+lcomment + + line = '%15s %15s %s' % lname, lpproto, endbits + line = line.rstrip() + + print >> fpout, line + + fpin.close() + fpout.close() + # Make sure /etc/services is always available + shutil.copy2('/etc/services', '/etc/services~') + os.rename(newfname, '/etc/services') + return + + fp = open('/etc/services', 'a') + print >> fp, '%15s %15s %s # Added by lsbinstall for %s' % ( + sname, pproto, ' '.join(saliases), pkg) + fp.close() + +def handle_inet(options, args, parser): + cmd = 'update-inetd --group LSB ' + + alist = list(args[0].split(':')) + if len(alist) < 2: + parser.error("The operand must include a service and protocol.") + return + + if not alist[1]: + alist[1] = 'tcp' + + if options.remove: + parts = r'%s\s+.*\s+%s\s+.*' % (re.escape(alist[0], alist[1])) + cmd += '--remove '+commands.mkarg(parts) + elif options.check: + return + else: + if len(alist) != 6: + parser.error('The operand must have six colon-separated arguments.') + return + newalist = [alist[0], alist[2], alist[1]] + alist[3:] + cmd += '--add '+commands.mkarg('\t'.join(newalist)) + + os.system(cmd) + pass + +def handle_man(options, args): + # Try to figure out the man page section + section = 1 + + location = '/usr/local/share/man/man%d/' % section + + handle_generic_install(options, args, location) + + +def main(): + from optparse import OptionParser + + parser = OptionParser('usage: %prog [-r|-c] -t TYPE arguments...') + parser.add_option('-c', '--check', dest="check", default=False, + action="store_true", help='check whether or not an ' + 'object of this type is already installed') + parser.add_option('-r', '--remove', action="store_true", + dest="remove", default=False, + help='remove the named object') + parser.add_option('-t', '--type', dest="type", type='choice', + default=None, choices=objecttypes, + help='type of object to be ' + 'installed: one of %s' % ', '.join(objecttypes) ) + parser.add_option('-p', '--package', dest="package", default=None, + help='LSB package to operate on') + + (options, args) = parser.parse_args() + + if len(args) < 1: + parser.error('You must specify at least one argument.') + elif (options.remove or options.check) and len(args) > 1: + parser.error('You may only specify one argument with --check or ' + '--remove.') + + if not options.type: + parser.error('You must specify an object type.') + + if not options.package and options.type not in ['service']: + parser.error('You must specify a package with %s objects.' % + options.type) + + if options.type == 'init': + if len(args) > 1: + parser.error('Only one argument supported for %s' % options.type) + handle_generic_install(options, args, '/etc/init.d', showinstloc=True) + elif options.type == 'profile': + if len(args) > 1: + parser.error('Only one argument supported for %s' % options.type) + # profile.d does nothing on Debian... sigh + handle_generic_install(options, args, '/etc/profile.d') + elif options.type == 'service': + if len(args) < 2 and not (options.remove or options.check): + parser.error('You must specify at least two arguments when adding a service entry.') + elif len(args) != 1 and (options.remove or options.check): + parser.error('You must specify one argument when removing or checking a service entry.') + handle_service(options, args) + elif options.type == 'inet': + handle_inet(options, args, parser) + elif options.type == 'crontab': + if len(args) > 1: + parser.error('Only one argument supported for %s' % options.type) + handle_generic_install(options, args, '/etc/cron.d') + elif options.type == 'man': + if len(args) > 1: + parser.error('Only one argument supported for %s' % options.type) + handle_man(options, args) + else: + print >> sys.stderr, 'Unsupported type %s' % options.type + sys.exit(1) + +if __name__ == '__main__': + main() diff --git a/remove_initd b/remove_initd new file mode 100755 index 0000000..0322c7f --- /dev/null +++ b/remove_initd @@ -0,0 +1,49 @@ +#!/usr/bin/python + +import sys, re, os, initdutils + +if len(sys.argv) > 1: + initfile = sys.argv[1] + # If the absolute path isn't specified, assume it's relative to + # cwd; if that doesn't exist, try /etc/init.d + ap = os.path.abspath(initfile) + if os.path.exists(ap): + initfile = ap + else: + initfile = os.path.join('/etc/init.d', initfile) +else: + print >> sys.stderr, 'Usage: %s /etc/init.d/' % sys.argv[0] + sys.exit(1) + +headers = initdutils.scan_initfile(initfile) + +provides = headers.get('Provides') +if provides: + facilities = initdutils.load_facilities() + depends = initdutils.load_depends() + + for facility in provides: + if facility in facilities: + entries = {} + for entry in facilities[facility].items(): + if entry[0] != initfile: + entries[entry[0]] = entry[1] + facilities[facility] = entries + + for (initscript, needed) in depends.iteritems(): + for facility in needed: + if facility[0] == "$": + continue + if not facilities.get(facility) and facility in provides: + print >> sys.stderr, 'Unable to remove %s: %s needs %s\n' % ( + initfile, initscript, facility) + sys.exit(1) + + if initfile in depends: + del depends[initfile] + initdutils.save_depends(depends) + + initdutils.save_facilities(facilities) + +initfile = initfile.replace('/etc/init.d/', '') +os.system('/usr/sbin/update-rc.d -f %s remove' % initfile) diff --git a/sendmail b/sendmail new file mode 100644 index 0000000..259b86b --- /dev/null +++ b/sendmail @@ -0,0 +1,3 @@ +#!/bin/sh +echo "Please install an MTA on this system if you want to use sendmail!" >&2 +exit 255 diff --git a/test/apt-cache b/test/apt-cache new file mode 100755 index 0000000..c9a3ae7 --- /dev/null +++ b/test/apt-cache @@ -0,0 +1,57 @@ +#!/usr/bin/python +# coding=utf-8 + +# Fake apt-cache python script to emulate policy output for test usage + +# Python3-compatible print() function +from __future__ import print_function + +import sys +import os + +if len(sys.argv) <= 1 or sys.argv[1] != 'policy': + sys.exit("Shall only be run with exactly one argument: 'policy'") + +print("Package files:") +print(" 100 /var/lib/dpkg/status") +print(" release a=now") + +if os.environ.get('TEST_APT_CACHE1') == '932': + print(' 932 http://Mirror_is_not_read/folder-either-debian/ sid/main arch Packages') + print(' release o=oRigIn,a=SuiTe,n=codename-not-read,l=lABel,c=C0mp0nent') + print(' origin Mirror-is-not-read') + +if os.environ.get('TEST_APT_CACHE2') == '600': + print('600 http://MirRor_is_not_read/folder-either-debian/ sid/main arch Packages') + print(' release o=0RigIn,a=5uiTe,n=codename-not-read,l=1ABel,c=C03p0nent') + print(' origin MirRor-is-not-read') + +if os.environ.get('TEST_APT_CACHE3') == '754': + print(' 754 http://MirRor_is_not_read/folder-either-debian/ sid/main arch Packages') + print(' release o=Jérôme Helvète,a=5uiTe,n=codename-not-read,l=1ABel,c=C03p0nent') + print(' origin MirRor-is-not-read') + +if os.environ.get('TEST_APT_CACHE_RELEASE') == '512': + print(' 512 http://MirRor_is_not_read/folder-either-debian/ sid/main arch Packages') + print(' release o=or1g1n,a=testing,n=codename-not-read,l=l8bel,c=c0mp0nent') + print(' origin MirRor-is-not-read') + # Add an experimental to be ignored, with a bigger priority. + print(' 12 http://MirRor_is_not_read/folder-either-debian/ exp/main arch Packages') + print(' release o=or1g1n,a=Riliz5uiTe,n=codename-not-read,l=l8bel,c=c0mp0nentIgn') + print(' origin MirRor-is-not-read') + # Add an release from foreign repository, to be considered too. + print(' 512 http://MirRor_is_not_read/folder-either-debian/ exp/main arch Packages') + print(' release o=P-or1g1n,a=sid,n=codename-not-read,l=P-l8bel,c=OtherComp') + print(' origin MirRor-is-not-read') + +if os.environ.get('TEST_APT_CACHE_UNSTABLE') == '500': + print(' 500 http://MirRor_is_not_read/folder-either-debian/ sid/main arch Packages') + print(' release o=Debian,a=unstable,n=sid,l=Debian,c=main') + print(' origin MirRor-is-not-read') + +if os.environ.get('TEST_APT_CACHE_UNSTABLE_PORTS') == '500': + print(' 500 http://MirRor_is_not_read/folder-either-debian-ports/ sid/main arch Packages') + print(' release o=Debian Ports,a=unstable,n=sid,l=ftp.debian-ports.org,c=main,v=1.0') + print(' origin MirRor-is-not-read') + +print('Pinned packages:') diff --git a/test/dpkg-query b/test/dpkg-query new file mode 100755 index 0000000..8ff193b --- /dev/null +++ b/test/dpkg-query @@ -0,0 +1,29 @@ +#!/usr/bin/python + +# Fake dpkg-query python script to emulate output for test usage + +# Python3-compatible print() function +from __future__ import print_function + +import sys +import os +import random + +if len(sys.argv) < 5: + sys.exit("Not enough arguments.") + +if sys.argv[1] != '-f' or \ + sys.argv[2] != '${Version} ${Provides}\n' or \ + sys.argv[3] != '-W': + sys.exit("Wrong input arguments.") + +if os.environ.get('TEST_DPKG_QUERY_NONE') == '1': + for package in sys.argv[4::]: + print('No packages found matching ' + package + '.',file=sys.stderr) + +if os.environ.get('TEST_DPKG_QUERY_ALL') == '1': + arch = 'TESTarch' + for package in sys.argv[4::]: + vers_sep = random.choice('-+~') + vers = '9.8' + vers_sep + 'Debian7ubuntu6' + print(vers + ' ' + package + '-' + arch + ', ' + package + '-noarch') diff --git a/test/init-skeleton b/test/init-skeleton new file mode 100644 index 0000000..27714a8 --- /dev/null +++ b/test/init-skeleton @@ -0,0 +1,233 @@ +#!/bin/sh +# +# /etc/init.d/FOO +# +# Template and example of a LSB conform init script for the service FOO +# See http://www.linuxbase.org/spec/ for details +# +### BEGIN INIT INFO +# Provides: FOO +# Required-Start: $syslog $remote_fs +# Should-Start: $time $portmap +# Required-Stop: $syslog $remote_fs +# Should-Stop: $time $portmap +# Default-Start: 3 5 +# Default-Stop: 0 1 2 6 +# Short-Description: FOO daemon used for ABC +# Description: The FOO service is used for ZZZ +# The (long) description can spread multiple lines +# which start with '#' or # followed by at least +# two spaces. +# X-UnitedLinux-Default-Enabled: yes +### END INIT INFO +# +# Remarks: +# - The LSB actually might be interpreted that there is only a single space +# between the the colon after the keyword and the first argument, but +# most or all LSB install_initd's support more than one space +# - Local extensions start with a X-[LANA registered provider or domain]- +# The X-UnitedLinux-Default-Enabled is one of the few actually used +# extension (enable service by when installing package, but keep current +# status when updating). +# +# The other keywords are described by the LSB. Notes on the differences +# between Required-Start and Should-Start (which was introduced by LSB 1.9): +# +# a) Required-Start/Required-Stop is used as hard dependencies, i.e. for +# services which have to be started before this service. For instance +# needs the 'nfs-kernel-server' the portmap service. Requiring +# Required-Start: $portmap +# ensures that the portmapper is started before the nfs server. +# If a required service is missing, an init script cannot be installed +# and an init script which is required by another cannot be removed. +# +# b) Should-Start/Should-Stop is used for weak dependencies. This ensures +# that the order of the init scripts is useful. A possible use for +# 'autofs' is to ask for +# Should-Start: nis +# which enables to read maps via NIS. Note that not all LSB install_initd +# programs support Should-Start (Debian's does) and therefore one should +# try hard not to rely on its support. +# +# The Required-Stop/Should-Stop usually contain the same services as +# Required-Start/Should-Start do. +# +# Besides using the services provided by the Provides section of +# init script, those predefined facilities are available +# (while they start with a $ they are no shell variables): +# +# a) LSB 1.1 facility names +# - $local_fs all local filesystems are mounted +# - $remote_fs all remote filesystems are mounted +# (note that /usr might be remote) +# - $syslog system logging is operational +# - $network low level networking (ethernet card etc.) +# - $named hostname resolution available +# - $netdaemons all network daemons are running +# (Removed in LSB 1.2) +# b) LSB 1.2 facility names +# - $time the system time has been set (e.g. NTP) +# - $portmap daemons providing SunRPC/ONCRPC portmapping service +# are running +# +# The LSB specifies those runlevels, most services use 3 and 5 for +# Default-Start and 0 1 2 6 for Default-Stop. +# +# 0 - halt +# 1 - single user mode +# 2 - multiuser with no network services exported +# 3 - normal/full multiuser +# 4 - reserved for local use (usually normal/full multiuser) +# 5 - multiuser with xdm or equivalent +# 6 - reboot +# +# Note on that script names should follow the LSB: +# http://www.linuxbase.org/spec/gLSB/gLSB/scrptnames.html +# There is a registry for script names that are reserved for use by +# distributions and registered script and provider names at +# http://www.lanana.org/ + +# Source LSB init functions +# This provides start_daemon, killproc, pidofproc, +# log_success_msg, log_failure_msg and log_warning_msg. +. /lib/lsb/init-functions + +# Since init scripts are config files, they might be left after an uninstall +# Check whether the binary is still present: +FOO_BIN=/usr/sbin/FOO +test -x "$FOO_BIN" || {log_failure_msg "$FOO_BIN not installed"; exit 5} + +# Check whether a required configuration file is available +FOO_CONFIG=/etc/FOO.conf +test -r "$FOO_CONFIG" || {log_failure_msg "$FOO_CONFIG not existing"; exit 6} + +# Those LSB defined exit status codes shall be used (except for status) +# 0 sucess +# 1 generic or unspecified error (current practice) +# 2 invalid or excess argument(s) +# 3 unimplemented feature (for example, "reload") +# 4 user had insufficient privilege +# 5 program is not installed +# 6 program is not configured +# 7 program is not running +# 8-199 reserved (8-99 LSB, 100-149 distribution, 150-199 application) +# +# Note that those situation shall also be regarded as success: +# * restarting a service (instead of reloading it) +# with the "force-reload" argument +# * running "start" on a service already running +# * running "stop" on a service already stopped or not running +# * running "restart" on a service already stopped or not running +# * running "try-restart" on a service already stopped or not running +# + +case "$1" in + start) + # Start service with startproc which shall return the + # LSB exit status + start_daemon "$FOO_BIN" -c "$FOO_CONFIG" + STATUS=$? + if [ "$STATUS" = 0 ] + then + log_success_msg "Starting FOO" + else + log_failure_msg "Starting FOO" + fi + exit $STATUS + ;; + stop) + echo -n "Shutting down FOO " + # Stop the service with killproc which shall return the + # LSB exit status + killproc "$FOO_BIN" + STATUS=$? + if [ "$STATUS" = 0 ] + log_success_msg "Shutting down FOO" + exit 0 + else + log_failure_msg "Shutting down FOO" + fi + exit $STATUS + ;; + try-restart) + # Do a restart only if the service is running + # try-restart has been added to the LSB in 1.9 + # RedHat's similar command is called condrestart. + $0 status > /dev/null + STATUS=$? + if [ "$STATUS" = 0 ] + then + $0 restart + else + log_success_msg "Try-Restarting FOO: not running" + fi + exit 0 # not running is also regarded as success + ;; + restart) + # Restart service (if running) or start service + $0 stop + $0 start + ;; + force-reload) + # Reload the configuartion. Usually a SIGHUP is used for this + # If it doesn't support his signal, restart it (only if running) + + # Supports signalling + killproc -HUP "$FOO_BIN" + SIGNAL=$? + if [ "$SIGNAL" = 0 ] + then + log_success_msg "Reloading FOO" + else + log_failure_msg "Reloading FOO" + fi + exit $STATUS + + # Otherwise + #$0 try-restart + ;; + reload) + # Reload configuration file, but don't restart if it is not supported + + # If it supports signaling: + killproc -HUP "$FOO_BIN" + SIGNAL=$? + if [ "$SIGNAL" = 0 ] + then + log_success_msg "Reloading FOO" + else + log_failure_msg "Reloading FOO" + fi + exit $STATUS + + # Otherwise + # exit 3 + ;; + status) + # Use pidofproc to check the status of the service, + # pidofproc returns the exit status code of 0 when it the process is + # running. + + # LSB defined exit status codes for status: + # 0 program is running or service is OK + # 1 program is dead and /var/run pid file exists + # 2 program is dead and /var/lock lock file exists + # 3 program is not running + # 4 program or service status is unknown + # 5-199 reserved (5-99 LSB, 100-149 distribution, 150-199 applications) + + checkproc "$FOO_BIN" > /dev/null + STATUS=$? + if [ "$SIGNAL" = 0 ] + then + log_success_msg "Checking FOO" + else + log_warning_msg "Checking FOO: Not running" + fi + exit $STATUS + ;; + *) + echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}" + exit 1 + ;; +esac diff --git a/test/lsb-release b/test/lsb-release new file mode 100644 index 0000000..06d7473 --- /dev/null +++ b/test/lsb-release @@ -0,0 +1,5 @@ +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) +OTHER_VARIABLE=Not supposed to exist diff --git a/test/lsb-test.sh b/test/lsb-test.sh new file mode 100644 index 0000000..1168a62 --- /dev/null +++ b/test/lsb-test.sh @@ -0,0 +1,10 @@ +#!/bin/sh -e + +echo "Importing $1/init-functions" +. $1/init-functions + +log_warning_msg "Only a warning" +log_success_msg "This should succeed" +log_failure_msg "This fails miserably" + +echo "OK!" diff --git a/test/minid.initd b/test/minid.initd new file mode 100755 index 0000000..2302015 --- /dev/null +++ b/test/minid.initd @@ -0,0 +1,52 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: svnd +# Required-Start: $syslog $remote_fs +# Should-Start: $time ypbind sendmail +# Required-Stop: $syslog $remote_fs +# Should-Stop: $time ypbind sendmail +# Default-Start: 3 5 +# Default-Stop: 0 1 2 6 +# Short-Description: The daemon +# Description: a cool daemon +### END INIT INFO +# chkconfig: 345 99 00 +# description: a cool daemon + + +DAEMON="/tmp/minid.pl" + +PARA=" " +. /lib/lsb/init-functions + +case "$1" in + start) + echo -n "Starting $DAEMON " + start_daemon $DAEMON $PARA + RETVAL=$? + ;; + stop) + echo -n "Shutting down $DAEMON " + killproc $DAEMON -TERM + RETVAL=$? + ;; + restart) + $0 stop + $0 start + ;; + status) + echo -n "Checking for service $DAEMON " + pidofproc $DAEMON 2>&1 >/dev/null + RETVAL=$? + ;; + *) + echo "Usage: $0 {start|stop|restart|status}" + exit 1 + ;; +esac + +if [ "x$RETVAL" = "x0" ] ; then + log_success_msg + else + log_failure_msg +fi diff --git a/test/minid.pl b/test/minid.pl new file mode 100755 index 0000000..9bc81f2 --- /dev/null +++ b/test/minid.pl @@ -0,0 +1,8 @@ +#!/usr/bin/perl -w +# detach from tty +main: +$pid = fork; +exit if $pid; +die "fork: $!" unless defined $pid; +print "continue in child"; +sleep(4000); diff --git a/test/test_initdutils.py b/test/test_initdutils.py new file mode 100644 index 0000000..cdb5a9e --- /dev/null +++ b/test/test_initdutils.py @@ -0,0 +1,31 @@ +#!/usr/bin/python +import unittest + +import initdutils as iu + +class TestInitdUtils(unittest.TestCase): + + @unittest.skip('Test not implemented.') + def test_scan_initfile(): + raise NotImplementedError() + @unittest.skip('Test not implemented.') + def test_save_facilities(): + raise NotImplementedError() + @unittest.skip('Test not implemented.') + def test_load_facilities(): + raise NotImplementedError() + @unittest.skip('Test not implemented.') + def test_load_depends(): + raise NotImplementedError() + @unittest.skip('Test not implemented.') + def test_save_depends(): + raise NotImplementedError() + @unittest.skip('Test not implemented.') + def test_load_lsbinstall_info(): + raise NotImplementedError() + @unittest.skip('Test not implemented.') + def test_save_lsbinstall_info(): + raise NotImplementedError() + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_lsb_release.py b/test/test_lsb_release.py new file mode 100644 index 0000000..63e632c --- /dev/null +++ b/test/test_lsb_release.py @@ -0,0 +1,326 @@ +#!/usr/bin/python +# coding=utf-8 +from __future__ import unicode_literals + +import unittest + +import lsb_release as lr + +import random +import string + +import os +import sys + +import warnings + +def rnd_string(min_l,max_l): + return ''.join( [random.choice(string.ascii_letters) for i in range(random.randint(min_l,max_l))]) + +def get_arch_distinfo(): + # Copied verbatim from guess_debian_release; sucks but unavoidable. + 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 + elif kern in ('GNU/Linux', 'GNU/kFreeBSD'): + distinfo['OS'] = kern + else: + distinfo['OS'] = 'GNU' + return distinfo + + +class TestLSBRelease(unittest.TestCase): + + def test_lookup_codename(self): + # Test all versions + for rno in lr.RELEASE_CODENAME_LOOKUP: + cdn = lr.RELEASE_CODENAME_LOOKUP[rno] + # Test that 1.1, 1.1r0 and 1.1.8 lead to buzz. Default is picked randomly and is not supposed to go trough + badDefault = rnd_string(0,9) + self.assertEqual(lr.lookup_codename(rno,badDefault),cdn,'Release name `' + rno + '` is not recognized.') + self.assertEqual(lr.lookup_codename(rno + 'r' + str(random.randint(0,9)),badDefault),cdn,'Release name `' + rno + 'r*` is not recognized.') + self.assertEqual(lr.lookup_codename(rno + '.' + str(random.randint(0,9)),badDefault),cdn,'Release name `' + rno + '.*` is not recognized.') + self.assertEqual(lr.lookup_codename('inexistent_release' + str(random.randint(0,9)),badDefault),badDefault,'Default release codename is not accepted.') + + def test_valid_lsb_versions(self): + # List versions in which the modules are available + lsb_modules = { + 'cxx' : ['3.0', '3.1', '3.2', '4.0', '4.1'], + 'desktop' : ['3.1', '3.2', '4.0', '4.1'], + 'languages' : ['3.2', '4.0', '4.1'], + 'multimedia' : ['3.2', '4.0', '4.1'], + 'printing' : ['3.2', '4.0', '4.1'], + 'qt4' : ['3.1'], + 'security' : ['4.0','4.1'], + } + lsb_known_versions = ['2.0', '3.0', '3.1', '3.2', '4.0', '4.1']; + for lsb_module in lsb_modules: + in_versions = lsb_modules[lsb_module] + for test_v in lsb_known_versions: + vlv_result = lr.valid_lsb_versions(test_v,lsb_module) + assert_text = 'valid_lsb_versions(' + test_v + ',' + lsb_module + ')' + # For 2.0, all output 2.0 only. + if test_v == '2.0': + self.assertEqual(vlv_result, + ['2.0'], + assert_text) + # For 3.0, all output 2.0 and 3.0. + elif test_v == '3.0': + self.assertEqual(vlv_result, + ['2.0', '3.0'], + assert_text) + # Before appearance, it outputs all past LSB versions + elif int(float(test_v)*10) < int(float(in_versions[0])*10): + self.assertEqual(vlv_result, + [elem for elem in lsb_known_versions if int(float(elem)*10) <= int(float(test_v)*10)], + assert_text) + # From appearence on, it outputs all lower versions from the in_versions + else: + self.assertEqual(vlv_result, + [elem for elem in in_versions if int(float(elem)*10) <= int(float(test_v)*10)], + assert_text) + + def test_check_modules_installed(self): + # Test that when no packages are available, then we get nothing out. + os.environ['TEST_DPKG_QUERY_NONE'] = '1' + self.assertEqual(lr.check_modules_installed(),[]) + os.environ.pop('TEST_DPKG_QUERY_NONE') + + # Test with all packages available. + supposed_output = [pkg[4::] + '-9.8-TESTarch' for pkg in lr.PACKAGES.split(' ')] + supposed_output += [pkg[4::] + '-9.8-noarch' for pkg in lr.PACKAGES.split(' ')] + supposed_output.sort() + os.environ['TEST_DPKG_QUERY_ALL'] = '1' + self.assertEqual(sorted(lr.check_modules_installed()),supposed_output) + + def test_parse_policy_line(self): + release_line = '' + shortnames = list(lr.longnames.keys()) + random.shuffle(shortnames) + longnames = {} + for shortname in shortnames: + longnames[lr.longnames[shortname]] = rnd_string(1,9) + release_line += shortname + '=' + longnames[lr.longnames[shortname]] + ',' + release_line = release_line[:-1] + self.assertEqual(sorted(lr.parse_policy_line(release_line)),sorted(longnames),'parse_policy_line(' + release_line + ')') + + def test_sort_releases(self): + # Compare suites with random suite names + releases = [] + suites = [] + for i in range(random.randint(5,40)): + suite_name = rnd_string(8,25) + suites.append(suite_name) + releases.append([rnd_string(1,12), {'suite': suite_name}]) + suites.sort() + if sys.version_info[0] == '2': + suites_from_releases = [x[1]['suite'] for x in sorted(releases,lr.compare_release)] + self.assertEqual(suites,suites_from_releases) + suites_from_releases_new = [x[1]['suite'] for x in sorted(releases,key=lr.release_index)] + self.assertEqual(suites,suites_from_releases_new) + + # Compare suites with known suite names + releases = [] + suites = [] + RO_min = 0 + RO_max = len(lr.RELEASES_ORDER) - 1 + for i in range(random.randint(5,7)): + suite_i = random.randint(RO_min,RO_max) + suite_name = lr.RELEASES_ORDER[suite_i] + suites.append(suite_name) + releases.append([rnd_string(1,12), {'suite': suite_name}]) + suites.sort(key=lambda suite: int(lr.RELEASES_ORDER.index(suite)),reverse=True) + if sys.version_info[0] == '2': + suites_from_releases = [x[1]['suite'] for x in sorted(releases,lr.compare_release)] + self.assertEqual(suites,suites_from_releases) + suites_from_releases_new = [x[1]['suite'] for x in sorted(releases,key=lr.release_index)] + self.assertEqual(suites,suites_from_releases_new) + + def test_compare_release(self): + # Test that equal suite strings lead to 0 + fake_release_equal = rnd_string(1,25) + x = [rnd_string(1,12), {'suite': fake_release_equal}] + y = [rnd_string(1,12), {'suite': fake_release_equal}] + self.assertEqual(lr.compare_release(x,y),0) + + # Test that sequences in RELEASES_ORDER lead to reliable output + RO_min = 0 + RO_max = len(lr.RELEASES_ORDER) - 1 + x_suite_i = random.randint(RO_min,RO_max) + y_suite_i = random.randint(RO_min,RO_max) + x[1]['suite'] = lr.RELEASES_ORDER[x_suite_i] + y[1]['suite'] = lr.RELEASES_ORDER[y_suite_i] + supposed_output = y_suite_i - x_suite_i + self.assertEqual(lr.compare_release(x,y), + supposed_output, + 'compare_release(' + x[1]['suite'] + ',' + y[1]['suite'] + ') =? ' + str(supposed_output)) + + # Test that sequences not in RELEASES_ORDER lead to reliable output + x[1]['suite'] = rnd_string(1,12) + y[1]['suite'] = rnd_string(1,12) + supposed_output = (x[1]['suite'] > y[1]['suite']) - (x[1]['suite'] < y[1]['suite']) + self.assertEqual(lr.compare_release(x,y), + supposed_output, + 'compare_release(' + x[1]['suite'] + ',' + y[1]['suite'] + ') =? ' + str(supposed_output)) + + def test_parse_apt_policy(self): + # Test almost-empty apt-cache policy + supposed_output = [(100, {'suite': 'now'})] + self.assertEqual(lr.parse_apt_policy(),supposed_output) + # Add one fake entry + os.environ['TEST_APT_CACHE1'] = '932' + supposed_output.append((932, {'origin': 'oRigIn', 'suite': 'SuiTe', 'component': 'C0mp0nent', 'label': 'lABel'})) + self.assertEqual(lr.parse_apt_policy(),supposed_output) + # Add a second fake entry, unordered + os.environ['TEST_APT_CACHE2'] = '600' + supposed_output.append((600, {'origin': '0RigIn', 'suite': '5uiTe', 'component': 'C03p0nent', 'label': '1ABel'})) + self.assertEqual(lr.parse_apt_policy(),supposed_output) + # Add a third fake entry, unordered, with non-ascii chars (#675618) + os.environ['TEST_APT_CACHE3'] = '754' + supposed_output.append((754, {'origin': 'Jérôme Helvète', 'suite': '5uiTe', 'component': 'C03p0nent', 'label': '1ABel'})) + self.assertEqual(lr.parse_apt_policy(),supposed_output) + os.environ.pop('TEST_APT_CACHE1') + os.environ.pop('TEST_APT_CACHE2') + os.environ.pop('TEST_APT_CACHE3') + + def test_guess_release_from_apt(self): + os.environ['TEST_APT_CACHE1'] = '932' + os.environ['TEST_APT_CACHE2'] = '600' + os.environ['TEST_APT_CACHE3'] = '754' + os.environ['TEST_APT_CACHE_RELEASE'] = '512' + supposed_output = {'origin': 'or1g1n', 'suite': 'testing', 'component': 'c0mp0nent', 'label': 'l8bel'} + self.assertEqual( + lr.guess_release_from_apt( + origin='or1g1n', + label='l8bel', + component='c0mp0nent', + ignoresuites=('c0mp0nentIgn')), + supposed_output) + + # Test with a special repository (for Ports) + supposed_output = {'origin': 'P-or1g1n', 'suite': 'sid', 'component': 'OtherComp', 'label': 'P-l8bel'} + self.assertEqual( + lr.guess_release_from_apt( + origin='or1g1n', + label='l8bel', + component='c0mp0nent', + ignoresuites=('c0mp0nentIgn'), + alternate_olabels={'P-or1g1n':'P-l8bel'}), + supposed_output) + os.environ.pop('TEST_APT_CACHE1') + os.environ.pop('TEST_APT_CACHE2') + os.environ.pop('TEST_APT_CACHE3') + os.environ.pop('TEST_APT_CACHE_RELEASE') + + def test_guess_debian_release(self): + distinfo = get_arch_distinfo() + + # Test "stable releases" with numeric debian_versions + for rno in lr.RELEASE_CODENAME_LOOKUP: + distinfo['RELEASE'] = rno + random.choice('.r') + str(random.randint(0,9)) + distinfo['CODENAME'] = lr.RELEASE_CODENAME_LOOKUP[rno] + distinfo['DESCRIPTION'] = '%(ID)s %(OS)s %(RELEASE)s (%(CODENAME)s)' % distinfo + fn = 'test/debian_version_' + rnd_string(5,5) + f = open(fn,'w') + f.write(distinfo['RELEASE']) + f.close() + os.environ['LSB_ETC_DEBIAN_VERSION'] = fn + self.assertEqual(lr.guess_debian_release(),distinfo) + os.remove(fn) + os.environ.pop('LSB_ETC_DEBIAN_VERSION') + + # Remove the CODENAME from the supposed output + distinfo.pop('CODENAME') + # Test "stable releases" with string debian_versions, go read invalid apt-cache policy + for rno in lr.RELEASE_CODENAME_LOOKUP: + distinfo['RELEASE'] = lr.RELEASE_CODENAME_LOOKUP[rno] + distinfo['DESCRIPTION'] = '%(ID)s %(OS)s %(RELEASE)s' % distinfo + fn = 'test/debian_version_' + rnd_string(5,12) + f = open(fn,'w') + f.write(distinfo['RELEASE']) + f.close() + os.environ['LSB_ETC_DEBIAN_VERSION'] = fn + self.assertEqual(lr.guess_debian_release(),distinfo) + os.remove(fn) + os.environ.pop('LSB_ETC_DEBIAN_VERSION') + + # Test "unstable releases" that end in /sid, go read invalid apt-cache policy + distinfo['RELEASE'] = 'testing/unstable' + distinfo['DESCRIPTION'] = '%(ID)s %(OS)s %(RELEASE)s' % distinfo + for rno in lr.RELEASE_CODENAME_LOOKUP: + fn = 'test/debian_version_' + rnd_string(5,12) + f = open(fn,'w') + f.write(lr.RELEASE_CODENAME_LOOKUP[rno] + '/sid') + f.close() + os.environ['LSB_ETC_DEBIAN_VERSION'] = fn + self.assertEqual(lr.guess_debian_release(),distinfo) + os.remove(fn) + os.environ.pop('LSB_ETC_DEBIAN_VERSION') + + # Test "unstable releases" that end in /sid, go read valid apt-cache policy + os.environ['TEST_APT_CACHE_UNSTABLE'] = '500' + distinfo['CODENAME'] = 'sid' + distinfo['RELEASE'] = 'unstable' + distinfo['DESCRIPTION'] = '%(ID)s %(OS)s %(RELEASE)s (%(CODENAME)s)' % distinfo + for rno in lr.RELEASE_CODENAME_LOOKUP: + fn = 'test/debian_version_' + rnd_string(5,12) + f = open(fn,'w') + f.write(lr.RELEASE_CODENAME_LOOKUP[rno] + '/sid') + f.close() + os.environ['LSB_ETC_DEBIAN_VERSION'] = fn + self.assertEqual(lr.guess_debian_release(),distinfo) + os.remove(fn) + os.environ.pop('LSB_ETC_DEBIAN_VERSION') + + # Test "unstable releases with Debian Ports" that end in /sid, go read valid apt-cache policy + os.environ['TEST_APT_CACHE_UNSTABLE_PORTS'] = '500' + distinfo['CODENAME'] = 'sid' + distinfo['RELEASE'] = 'unstable' + distinfo['DESCRIPTION'] = '%(ID)s %(OS)s %(RELEASE)s (%(CODENAME)s)' % distinfo + for rno in lr.RELEASE_CODENAME_LOOKUP: + fn = 'test/debian_version_' + rnd_string(5,12) + f = open(fn,'w') + f.write(lr.RELEASE_CODENAME_LOOKUP[rno] + '/sid') + f.close() + os.environ['LSB_ETC_DEBIAN_VERSION'] = fn + self.assertEqual(lr.guess_debian_release(),distinfo) + os.remove(fn) + os.environ.pop('LSB_ETC_DEBIAN_VERSION') + os.environ.pop('TEST_APT_CACHE_UNSTABLE_PORTS') + os.environ.pop('TEST_APT_CACHE_UNSTABLE') + + def test_get_lsb_information(self): + # Test that an inexistant /etc/lsb-release leads to empty output + supposed_output = {} + os.environ['LSB_ETC_LSB_RELEASE'] = 'test/inexistant_file_' + rnd_string(2,5) + self.assertEqual(lr.get_lsb_information(),supposed_output) + # Test that a fake /etc/lsb-release leads to output with only the content we want + supposed_output = {'RELEASE': '(The release number)', + 'CODENAME': '(The codename for the release)', + 'ID': '(Distributor ID)', + 'DESCRIPTION': '(A human-readable description of the release)'} + os.environ['LSB_ETC_LSB_RELEASE'] = 'test/lsb-release' + self.assertEqual(lr.get_lsb_information(),supposed_output) + os.environ.pop('LSB_ETC_LSB_RELEASE') + + def test_get_distro_information(self): + # Test that an inexistant /etc/lsb-release leads to empty output + supposed_output = get_arch_distinfo() + supposed_output['RELEASE'] = 'testing/unstable'; + supposed_output['DESCRIPTION'] = '%(ID)s %(OS)s %(RELEASE)s' % supposed_output + + os.environ['LSB_ETC_LSB_RELEASE'] = 'test/inexistant_file_' + rnd_string(2,5) + fn = 'test/debian_version_' + rnd_string(5,12) + f = open(fn,'w') + f.write('testing/sid') + f.close() + os.environ['LSB_ETC_DEBIAN_VERSION'] = fn + self.assertEqual(lr.get_distro_information(),supposed_output) + os.remove(fn) + os.environ.pop('LSB_ETC_DEBIAN_VERSION') + +if __name__ == '__main__': + unittest.main() -- 2.30.2