A newbie's newbie guide to Debian - Debian Conference · Open First A newbie's newbie guide to...
Transcript of A newbie's newbie guide to Debian - Debian Conference · Open First A newbie's newbie guide to...
Open First
A newbie's newbie guide to Debian Helen Koike <[email protected]>
Creative Commons Attribution-ShareAlike 4.0
Road Map
● Organization● The Foundation Documents● Releases● Community work flow● Bug Tracking System● How to contribute● Debian and Ubuntu
Aug 2017 2
Introduction
● First version – 1993 (Ian Murdock)● Debian = Debra + Ian● 10 official architectures
amd64, arm64, armel, armhf, i386,
mips, mipsel, powerpc, ppc64el, s390x
● >60k packages● ~1000 official developers● Free Software
Aug 2017 3
Organization
● Democratic– Project Leader elected once a year
● 100% Volunteers● Teams
– DSA - Debian System Administrators
– FTP Masters
– Release Team
– Debian CD
– Security
– QA – Quality Assurance
– … (https://wiki.debian.org/Teams)Aug 2017 4
100% Volunteers
● No profit organization (!= Ubuntu, Fedora)● Sponsors:
– Machines
– Trademark / Logo● Main sponsor:
– Software in the Public Interest, Inc. (SPI)
– Non profit organization
– Founded in 1997 to receive donations
Aug 2017 5
The Foundation DocumentsThe principles and guidelines for the community
Aug 2017 6
The Foundation Documents
● Debian Social Contract– Moral principles
● Debian Free Software Guidelines (DFSG)– What “free” means
● Debian Constitution– The community organization
Aug 2017 7
Debian Social Contract
1) Debian will remain 100% free2) We will give back to the free software
community3) We will not hide problems4) Our priorities are our users and free software5) Works that do not meet our free software
standards
https://www.debian.org/social_contract
Aug 2017 8
Debian Free Software Guidelines-DFSG
● Part of the Social Contract● What “free” means:
– Free redistribution
– Source code
– Derived works
– No discrimination against persons or groups / fields of endeavor
– License must not be specific to Debian
– License must not contaminate other software
● Ex: GPL, BSD, ArtisticAug 2017 9
Debian Constitution
● Organizational structure / decision-making:– The Developers
– The Project Leader
– The Technical Committee and its Chair
– Delegates appointed by the Project Leader for specific tasks
– The Project Secretary
● Define powers, compositions, appointments, procedureshttps://www.debian.org/devel/constitution
Aug 2017 10
Packages and releasesCommunity work flow
Aug 2017 11
But… What is a distro after all?
● Rootfs: files and folders● Linux kernel → /sbin/init● Distributions:
– /sbin/init → Initialize the user space
– Set of programs
– Paths well solved
Aug 2017 12
But… What is a distro after all? (cont)
● Probably:– Package format definition
● Software attached with meta-data● Software easier to distribute and install● Source / Binary (.deb)● Installation tool (dpkg)
– Infrastructure to host repositories for packages (servers / mirrors)
– Package manager (apt)Aug 2017 13
POV: everything is a package
● Debian:– set of packages
● Community work flow:– package management
● Installation CDs (images):– tool that installs and configure a core set
of packages for you
Aug 2017 14
Work flow: micro dynamic
● Per package management– Maintainer– Team
● Review patches / update / test / apply bug fixes / follow bug reports
Aug 2017 15
Work flow: macro dynamic
● Control the repositories– Which packages to which repository– Who have access– Releases– Servers– Licensing / DFSG
● Installation images (by hand?)– Debian CD / Vmboostrap / Live CD
Aug 2017 16
Releases
● Toy Story characters● 3 main releases (Debian versions):
– Unstable - Sid
– Testing – Buster – (Future Debian 10)
– Stable – Stretch – (Debian 9)
● Aka repository or pool of packages● Other repositories:
– Experimental, oldstable, backport …
Aug 2017 17
/etc/apt/sources.list
● Instalation CD; or● $ vim /etc/apt/sources.list
deb http://httpredir.debian.org/debian stretch main contrib non-free
deb-src http://httpredir.debian.org/debian stretch main contrib non-free
$ apt-get update && apt-get upgrade$ apt-get source hello$ apt-get install hello
Aug 2017 18
/etc/apt/sources.list (cont)
Aug 2017 19
deb http://httpredir.debian.org/debian stretch main contrib non-free
deb-src http://httpredir.debian.org/debian stretch main contrib non-free
Binary or source
Mirror address Release, e.g. stable, jessie, unstable, testing ...
Section
/etc/apt/sources.list (sections)
● Main– DFSG-compliant packages
– Dependencies are also DFSG-compliant (inside Main)
● Contrib– DFSG-compliant packages
– Some dependencies are not DFSG-compliant
● Non-free– Not DFSG-compliant, not consider part of Debian
– Infrastructure is provided
Aug 2017 20
Package cycleCommunity work flow
Aug 2017 21
Image from “The Debian Administrator's Handbook”, R. Hertzog e R. Mas https://debian-handbook.info/browse/stable/sect.release-lifecycle.html
Image from “The Debian Administrator's Handbook”, R. Hertzog e R. Mas https://debian-handbook.info/browse/stable/sect.release-lifecycle.html
→ Unstable
● Packages accepted by the FTP Masters● Rejections:
– Licensing issues
– Missing Copyrights
– Package “hijacking”
– Irregular package naming
– No source code available
Aug 2017 24
Unstable → Testing
● Automatically– At least 10 days in Unstable– Without known critical bugs– Compile successfully in all official
architectures– Dependencies present in Testing
Aug 2017 25
Testing → Stable
● Promoted to Stable● Release manager● Every two years● Testing – gradually freeze:
– Transition Freeze → no library transitions (ABI protection)
– Soft freeze → no new packages
– Full freeze → critical bug fixes only
Aug 2017 26
Testing → Stable (cont)
● 2016-11-05: Transition freeze (general freeze of transitions)● 2017-01-05: "Soft" freeze (no new packages)● 2017-02-05: Full freeze● 2017-06-17: Initial release: 9.0
● “As always, Debian 9 "Stretch" will be released "when it's ready".”
– https://release.debian.org/
Aug 2017 27
Before stretch release After stretch release
Stable Jessie Stretch
Testing Stretch Buster
Unstable Sid Sid
Stable release support
● Security team support ~3 years● LTS (Long Term Support) → +2 years
– Volunteer companies
Aug 2017 28
Other repositories
● Experimental– Not a real release (cannot be used standalone)
– Incomplete packages – feedback
● Backport– Packages from Unstable or Testing adapted to work with Stable
● Updates● Oldstable (Jessie)● ...
Aug 2017 29
Testing->Stable
Aug 2017 30
Debian suites workflows, 2016
uploaders legend
unstable
testing
experimental
stable backports
testing-proposed-updates
proposed-updates stable-updates
oldstable
security
archive
Note: oldstable has the sameset of suites as stable
not detailed here to avoid clutter
maintainer
fromtesting
security team person
repository
upload to
repository
automatic manual approved unusal
production
deprecated, LTS
testing
development
unsupported
Image from dot file maintained by CollabMaint:https://anonscm.debian.org/git/collab-maint/package-cycle.git
Maintaining a package
Aug 2017 31
Maintainers and Developers
● Debian Maintainer (DM)– Can submit packages to the repositories
● Debian Developer (DD)– Official member of the project
– Right to vote and be a Project Leader candidate
– Access to servers
– Propose and vote in “General Resolutions” and “Amendments”
Aug 2017 32
Sponsor
● Anyone can:– Submit a package through a sponsor– #debian-mentors @ OFTC
● Sponsor → DM → DD
Aug 2017 33
Bug Tracking System
Aug 2017 34
Bug Tracking System
● https://bugs.debian.org/● Not only bugs, but also requests (e.g.
features, help)● Each bug is associated with a package● Email interface● reportbug –file /bin/hello
– generates email in the right format
Aug 2017 35
BTS – email format
To: [email protected] From: [email protected] Subject: Hello says `goodbye'
Package: hello Version: 1.3-16
Description of the problem Log of error
I suggest that the output string, in hello.c, be corrected.
I am using Debian GNU/Linux 2.2, kernel 2.2.17-pre-patch-13 and libc6 2.1.3-10.
Aug 2017 36
BTS – pseudo packages
● https://www.debian.org/Bugs/pseudo-packages
● General
● Mirrors
● ftp.debian.org
● Upgrade-reports
● sponsorship-requests
● …
● WNPP – Work-Needing and Prospective Package
Aug 2017 37
BTS - WNPP
● Packages are associated with:– Maintainer / team / orphan
● Work-Needing and Prospective Packages● Tag in the email subject:
– ITP: Intent To Package
– O: Orphaned
– RFA: Request for Adoption
– RFH: Request For Help
– RFP: Request For Package
Aug 2017 38
BTS - WNPP
● Packages are associated with:– Maintainer / team / orphan
● Work-Needing and Prospective Packages● Tag in the email subject:
– ITP: Intent To Package
– O: Orphaned
– RFA: Request for Adoption
– RFH: Request For Help
– RFP: Request For Package
Aug 2017 39
How to contribute
● Documentation / Translation● Bug reports● Sending / reviewing patches● Maintaining a package● Helping newbies● Donations● Adopting an orphan package
https://www.debian.org/devel/wnpp/orphaned
Aug 2017 40
Debian and Ubuntu
● Ubuntu:
– Based on Debian
– Only supports x86, amd64 e PowerPC
– ~2 mil packages maintained by Canonical
– Less number of developers
– Incentives Debian development
– Release cycle: packages retrieved from Debian Unstable
● A Debian developer is also an Ubuntu developer (indirectly)
● More information:
– https://wiki.ubuntu.com/Ubuntu/ForDebianDevelopers
– https://wiki.ubuntu.com/Debian/ForUbuntuDevelopers Aug 2017 41
Decisions making
● https://www.debian.org/devel/constitution
● The Project Leader → election once a year
– Chris Lamb (April 2017)● The Developers → General Resolution/election;● The Technical Committee and/or its Chair;
– Advice / Overrule a developer / solves technical conflics● The individual Developer working on a particular task;● Delegates appointed by the Project Leader for specific tasks;● The Project Secretary
– Conducts voting / Stand in / Interpret the constitution
Aug 2017 43
Package structure example
├── debian│ ├── changelog│ ├── compat│ ├── control│ ├── copyright│ ├── install│ ├── rules│ └── source│ └── format├── secure-boot-code-sign.sh└── secure-boot-code-sign.conf
2 directories, 9 files
Aug 2017 44