SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
a simple, rolling-release
      distribution

Tom Gundersen
teg@jklm.no
Overview

●
    Arch Linux

●
    Packaging

●
    The community

●
    Future plans
Arch Linux - Simplicity


●
    Creating and building packages is easy

●
    Divergence from upstream is minimal

●
    Choice for its own sake is avoided

●
    The workings of the system is not hidden
    from the user
Arch Linux – Rolling Release


●
    Ship the latest stable release of our
    packages (there are exceptions)

●
    Don't necessarily be the very first to switch
    to new or experimental technologies or
    introduce new packages to our repositories
Arch Linux – Target Audience


●
    People wanting to learn about Linux

●
    Advanced users

●
    Developers
Arch Linux - Background

●
    Started in 2001 by Judd Vinet

●
    Inspired by Slackware, Polish Linux
    Distribution and CRUX
Arch Linux – History: stats

                                            Random Arch Website Stats
1200                                                                    20000
             Forum Posts (Right Y-axis)
                Forum Users Registered
                  Flyspray Bugs Opened
                                                                        18000
                   Flyspray Bugs Closed
              Flyspray Users Registered
1000   Wiki Page Revisions (Right Y-axis)
                                                                        16000



                                                                        14000
 800


                                                                        12000



 600                                                                    10000



                                                                        8000


 400
                                                                        6000



                                                                        4000
 200


                                                                        2000



   0                                                                    0
Arch Linux – History: descendants
Arch Linux – Current Status

●
    ~3000 Official Packages

●
    ~3000 Semi-Official Packages

●
    ~40000 Unsupported PKGBUILDs

●
    One kernel

●
    i686 and x86_64 architectures

●
    Proprietary software available

●
    All major desktop environment, etc.
Packaging - Repositories


    [core]
●
    needed for building, booting and installing
●
     ~200 packages
●
    updates must go through the [testing]
    repository

    [extra]
●
    commonly used packages (>5% of users)

    [community]
●
    less commonly used packages (>1% of
    users)
Arch Linux Package Manager

●
    Uses the “pacman” package manager

●
    Combines a simple binary package format
    with easy to use build system

●
    Fast! - according to Linux Format it beats
    the competition by a wide margin

●
    Does everything you expect from a package
    manager (update system, resolve
    dependencies, ...)
Package Creation

●
    Very simple scripts required to create a
    package

●
    If you can build the software manually, then
    you can create a package for it

●
    Tool provided to build packages called
    “makepkg”

●
    Build script is placed in a file called a
    PKGBUILD
Package Creation

●
    Start with how you would normally install a
    program:

    $   tar -xf <pkgname>-<pkgver>
    $   cd <pkgname>-<pkgver>
    $   ./configure
    $   make
    $   sudo make install
Package Creation

●
    Separate out the parts run as a user and
    root into separate functions:

    $ tar -xf <pkgname>-<pkgver>
    $ cd <pkgname>-<pkgver>

    build() {
      ./configure
      make
    }

    package() {
      make install
    }
Package Creation

●
    makepkg will automatically handle source
    extraction into “$srcdir”

    build() {
      cd $srcdir/<pkgname>-<pkgver>
      ./configure
      make
    }

    package() {
      cd $srcdir/<pkgname>-<pkgver>
      make install
    }
Package Creation

●
    Files need to be installed in “$pkgdir”,
    which is compressed to make the package:

    build() {
      cd $srcdir-<pkgname>-<pkgver>
      ./configure –prefix=/usr
      make
    }

    package() {
      cd $srcdir-<pkgname>-<pkgver>
      make DESTDIR=$pkgdir install
    }
Package Creation

●
    Add some information about the package at
    the top of the file:

    pkgname=foo
    pkgver=3.0
    pkgrel=1
    pkgdesc="Example software"
    arch=('i686' 'x86_64')
    url="http://foo.example.com"
    license=('GPL')
    depends=('glibc')
    source=(http://$pkgname-$pkgver.tar.gz)
    md5sums=('d41d8cd98f00b204e9800f8427e')
Package Creation

●
    makepkg automates many common
    packaging tasks:
    ●
      Stripping debugging symbols from
      binaries
    ●
      Compressing man and info pages
    ●
      Setting compiler/linker options
          (CFLAGS, LDFLAGS, MAKEFLAGS)
    ●
      Removing common unwanted files
          (libtool, infodir, …)
Package Creation

●
    Two files are placed in the $pkgdir directory
    with all package meta data

●
    Then a (compressed) tar archive of the
    $pkgdir directory is created

●
    DONE!
Package Creation - Example

●
    See terminal ->
Community - Developers

●
    1 Project Leader

●
    Deals with legal matters (exclusively)

●
    33 Developers / Junior Developers

●
    Runs infrastructure

●
    Packages the packages in the official [core]
    and [extra] repositories
Community – Developers

●
    No formal rules of governance

●
    Consensus-based decision making

●
    Developers may in principle do whatever
    they want, as long as they inform the other
    developers of their intentions beforehand
    and there is no serious, technical oposition

●
    New developers added by invitation only
Community – Trusted Users

●
    37 Trusted Users (Tus)

●
    Disjont form the Developers

●
    Runs the Arch User Repository (AUR)

●
    Packages the semi-official packages in the
    [community] repository

●
    Ran as a democracy, governed by formal by-
    laws

●
    New TUs may apply to join
Community – AUR

●
    Repository of PKGBUILDs

●
    Anyone may sign-up and upload PKGBUILDs

●
    Absolutely no quality-control of the
    resulting packages, but some style
    guidelines on the PKGBUILDs themselves

●
    Popular, high-quality PKGBUILDS are often
    picked up by TU's and added to the
    [community] repository
Community – others...

●
    Forum, wiki, bug tracker, mailing-lists, irc
    channels are ran by separate teams

●
    Disjoint from each other (and the
    developers)
Getting involved

●
    Actively contribute to the community
     ●
       Provide PKGBUILDs for unpackaged
       software
     ●
       Help on the bug tracker
     ●
       Contributing code to our projects
     ●
       Update the wiki

●
    Apply to become a Trusted User
     ●
         Sponsoring and voting process...

●
    Be invited onto the Developer team
Evolution of an example package




systemd: a Linux init system
Example - systemd

●
    First packages for systemd were placed in
    AUR in 2010

●
    Lots of work was required to make it work
    with Arch

    “I'm highly dubious that Arch's kernel
     will ever natively support systemd, but
     I'm willing to give that a try as well
     once 2.6.36 hits.”
Example - systemd


    Over the next two years...

●
  Unified the legacy Arch init system and
  systemd
●
  systemd moved from the AUR to
  [community]
●
  The systemd packager was invited to join
  the dev team and moved systemd to [extra]
●
  systemd moved to [core]
●
  The legacy init system was deprecated and
  systemd is now our only supported init
  system
Why does it work at all?

●
    Software developers write code that is
    supposed to work...

●
    Only suport the most recent version of our
    packages

●
    Don't support more options than strictly
    necessary at the lower levels
●
    Accept occasional user intervention
Vanilla Packages

●
    Means packaging the software as the
    upstream developers intended

●
    Minimise patching – preferably only to fix
    build issues

●
    Result in any bug we find is (probably) not
    distribution specific

●
    Allows us to work more closely with
    software developers to fix bugs
Working With Software Developers

●
    All bug fix patches in Arch must be approved
    by the upstream developers

●
    That means that the Arch developers and
    community have become regular code
    contributors

●
    Many Arch developers also have commit
    access to upstream projects
Future Directions for Arch Linux

●
    Majority response...


      “Keep updating packages”


●
    Add more focus on a particular areas

●
    Add more architectures

●
    Simplify the system further
Keeping Packages Updated

●
    One of Arch Linux's greatest contributions
    to the Linux community

●
    Arch gets packages in their stable
    repositories before some major distributions
    get it in their developmental versions

●
    The Arch community will identify bugs early
    and report the issue to the software
    developers

●
    Fixes benefit all Linux distributions
Add More Architectures

●
    Currently we support x86 in 32bit (i686) and
    64bit (x86-64) varieties

●
    There are community projects supporting
    other architectures
      ●
        ARM (v5, v6, v7)
      ●
        PPC
      ●
        ...

●
    Would be good to provide a way for these
    ports to become official (like x86-64 did)
Arch Linux ARM

●
    Non-official spin-off for the ARM
    architecture

●
    One of the distros recommended for the
    Raspberry Pi
Simplifying the Filesystem

●
    Usual filesystem layout has a lot of
    redundancies

    /boot
    /bin
    /etc
    /home
    /lib
    /sbin
    /usr
        /bin
        /lib
        /sbin
Simplifying the Filesystem

●
    Libraries


    /boot
    /bin
    /etc
    /home
    /lib        (essential libraries)
    /sbin
    /usr
        /bin
        /lib    (rest of libraries)
        /sbin
Simplifying the Filesystem

●
    Keep all libraries in one place


    /boot
    /bin
    /etc
    /home
    /lib -> /usr/lib
    /sbin
    /usr
        /bin
        /lib
        /sbin
Simplifying the Filesystem

●
    Executables – distinction between
    directories is vague...

    /boot
    /bin       (essential user commands)
    /etc
    /home
    /lib -> /usr/lib
    /sbin      (system commands)
    /usr
        /bin   (most commands)
        /lib
        /sbin  (non-essential system)
Simplifying the Filesystem

●
    Keep all libraries in one place


    /boot
    /bin -> /usr/bin
    /etc
    /home
    /lib -> /usr/lib
    /sbin -> /usr/bin
    /usr
        /bin
        /lib
        /sbin -> bin
Simplifying the Filesystem

●
    /etc directory holds all configuration files

●
    Beginning to have these placed in
    /usr/lib/<pkgname> with files in /etc
    overriding the default settings

●
    Would be very helpful for a rolling release
    system

●
    Requires substantial work with upstream
    projects to achieve...
Automating More Packaging

●
    Task like rebuilds for library soname
    changes are typically trivial

●
    Would save a lot of time if we could
    automate (most of) this

●
    Most packages do not require architecture
    specific changes – build for one and
    automate the rest

●
    Would allow us to focus more on improving
    other areas of the distribution

Weitere ähnliche Inhalte

Was ist angesagt?

The OpenSolaris Operating System and Sun xVM VirtualBox - Blake Deville
The OpenSolaris Operating System and Sun xVM VirtualBox - Blake DevilleThe OpenSolaris Operating System and Sun xVM VirtualBox - Blake Deville
The OpenSolaris Operating System and Sun xVM VirtualBox - Blake Deville
Matthew Turland
 
Open stack in_production__the_good,_the_bad_&_the_ugly
Open stack in_production__the_good,_the_bad_&_the_uglyOpen stack in_production__the_good,_the_bad_&_the_ugly
Open stack in_production__the_good,_the_bad_&_the_ugly
OpenStack Foundation
 

Was ist angesagt? (20)

Posscon2013
Posscon2013Posscon2013
Posscon2013
 
The OpenSolaris Operating System and Sun xVM VirtualBox - Blake Deville
The OpenSolaris Operating System and Sun xVM VirtualBox - Blake DevilleThe OpenSolaris Operating System and Sun xVM VirtualBox - Blake Deville
The OpenSolaris Operating System and Sun xVM VirtualBox - Blake Deville
 
Sweden11
Sweden11Sweden11
Sweden11
 
Building community with CentOS Stream
Building community with CentOS StreamBuilding community with CentOS Stream
Building community with CentOS Stream
 
pkgsrc 2011 - the record of the past year
pkgsrc 2011 - the record of the past yearpkgsrc 2011 - the record of the past year
pkgsrc 2011 - the record of the past year
 
4. Centos Administration
4. Centos Administration4. Centos Administration
4. Centos Administration
 
2. introduction to linux
2. introduction to linux2. introduction to linux
2. introduction to linux
 
Making the Move to Linux from an Enterprise Perspective
Making the Move to Linux from an Enterprise PerspectiveMaking the Move to Linux from an Enterprise Perspective
Making the Move to Linux from an Enterprise Perspective
 
Open stack in_production__the_good,_the_bad_&_the_ugly
Open stack in_production__the_good,_the_bad_&_the_uglyOpen stack in_production__the_good,_the_bad_&_the_ugly
Open stack in_production__the_good,_the_bad_&_the_ugly
 
Mandriva linux 2011
Mandriva linux 2011Mandriva linux 2011
Mandriva linux 2011
 
Gnu/Linux Introduction
Gnu/Linux IntroductionGnu/Linux Introduction
Gnu/Linux Introduction
 
Introduction to FreeNAS development by John Hixson
Introduction to FreeNAS development by John HixsonIntroduction to FreeNAS development by John Hixson
Introduction to FreeNAS development by John Hixson
 
SELF 2014: PBI v10: Application Management Made Easy
SELF 2014: PBI v10: Application Management Made EasySELF 2014: PBI v10: Application Management Made Easy
SELF 2014: PBI v10: Application Management Made Easy
 
6. centos networking
6. centos networking6. centos networking
6. centos networking
 
Gentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile EverythingGentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile Everything
 
Central Iowa Linux Users Group-December 2019: Windows Managers
Central Iowa Linux Users Group-December 2019: Windows ManagersCentral Iowa Linux Users Group-December 2019: Windows Managers
Central Iowa Linux Users Group-December 2019: Windows Managers
 
Ceph Day KL - Bring Ceph to Enterprise
Ceph Day KL - Bring Ceph to EnterpriseCeph Day KL - Bring Ceph to Enterprise
Ceph Day KL - Bring Ceph to Enterprise
 
Package management and creation in Gentoo Linux
Package management and creation in Gentoo LinuxPackage management and creation in Gentoo Linux
Package management and creation in Gentoo Linux
 
Linux Fundamental
Linux FundamentalLinux Fundamental
Linux Fundamental
 
Introducing fedora
Introducing fedoraIntroducing fedora
Introducing fedora
 

Ähnlich wie Distro Recipes 2013 : Introduction to Arch Linux: a simple, rolling-release distribution

LXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software DeliveryLXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software Delivery
Docker, Inc.
 

Ähnlich wie Distro Recipes 2013 : Introduction to Arch Linux: a simple, rolling-release distribution (20)

Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
 
Introduction to Docker at Glidewell Laboratories in Orange County
Introduction to Docker at Glidewell Laboratories in Orange CountyIntroduction to Docker at Glidewell Laboratories in Orange County
Introduction to Docker at Glidewell Laboratories in Orange County
 
Workshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
Workshop : 45 minutes pour comprendre Docker avec Jérôme PetazzoniWorkshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
Workshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
 
Introduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" EditionIntroduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" Edition
 
OSDC 2016 | rkt and Kubernetes: What’s new with Container Runtimes and Orches...
OSDC 2016 | rkt and Kubernetes: What’s new with Container Runtimes and Orches...OSDC 2016 | rkt and Kubernetes: What’s new with Container Runtimes and Orches...
OSDC 2016 | rkt and Kubernetes: What’s new with Container Runtimes and Orches...
 
OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...
OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...
OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...
 
Introduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkIntroduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New York
 
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
 
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoTInria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
 
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
 
Docker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12xDocker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12x
 
Revolutionizing WSO2 PaaS with Kubernetes & App Factory
Revolutionizing WSO2 PaaS with Kubernetes & App FactoryRevolutionizing WSO2 PaaS with Kubernetes & App Factory
Revolutionizing WSO2 PaaS with Kubernetes & App Factory
 
From Zero to Hero - All you need to do serious deep learning stuff in R
From Zero to Hero - All you need to do serious deep learning stuff in R From Zero to Hero - All you need to do serious deep learning stuff in R
From Zero to Hero - All you need to do serious deep learning stuff in R
 
LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013
 
LXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software DeliveryLXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software Delivery
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
WSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App Factory
WSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App FactoryWSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App Factory
WSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App Factory
 
Delivering a bleeding edge community-led openstack distribution: RDO
Delivering a bleeding edge community-led openstack distribution: RDO Delivering a bleeding edge community-led openstack distribution: RDO
Delivering a bleeding edge community-led openstack distribution: RDO
 
Linux Containers & Docker
Linux Containers & DockerLinux Containers & Docker
Linux Containers & Docker
 
DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...
DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...
DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...
 

Mehr von Anne Nicolas

Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Anne Nicolas
 

Mehr von Anne Nicolas (20)

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
 

Kürzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Kürzlich hochgeladen (20)

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

Distro Recipes 2013 : Introduction to Arch Linux: a simple, rolling-release distribution

  • 1. a simple, rolling-release distribution Tom Gundersen teg@jklm.no
  • 2. Overview ● Arch Linux ● Packaging ● The community ● Future plans
  • 3. Arch Linux - Simplicity ● Creating and building packages is easy ● Divergence from upstream is minimal ● Choice for its own sake is avoided ● The workings of the system is not hidden from the user
  • 4. Arch Linux – Rolling Release ● Ship the latest stable release of our packages (there are exceptions) ● Don't necessarily be the very first to switch to new or experimental technologies or introduce new packages to our repositories
  • 5. Arch Linux – Target Audience ● People wanting to learn about Linux ● Advanced users ● Developers
  • 6. Arch Linux - Background ● Started in 2001 by Judd Vinet ● Inspired by Slackware, Polish Linux Distribution and CRUX
  • 7. Arch Linux – History: stats Random Arch Website Stats 1200 20000 Forum Posts (Right Y-axis) Forum Users Registered Flyspray Bugs Opened 18000 Flyspray Bugs Closed Flyspray Users Registered 1000 Wiki Page Revisions (Right Y-axis) 16000 14000 800 12000 600 10000 8000 400 6000 4000 200 2000 0 0
  • 8. Arch Linux – History: descendants
  • 9. Arch Linux – Current Status ● ~3000 Official Packages ● ~3000 Semi-Official Packages ● ~40000 Unsupported PKGBUILDs ● One kernel ● i686 and x86_64 architectures ● Proprietary software available ● All major desktop environment, etc.
  • 10. Packaging - Repositories [core] ● needed for building, booting and installing ● ~200 packages ● updates must go through the [testing] repository [extra] ● commonly used packages (>5% of users) [community] ● less commonly used packages (>1% of users)
  • 11. Arch Linux Package Manager ● Uses the “pacman” package manager ● Combines a simple binary package format with easy to use build system ● Fast! - according to Linux Format it beats the competition by a wide margin ● Does everything you expect from a package manager (update system, resolve dependencies, ...)
  • 12. Package Creation ● Very simple scripts required to create a package ● If you can build the software manually, then you can create a package for it ● Tool provided to build packages called “makepkg” ● Build script is placed in a file called a PKGBUILD
  • 13. Package Creation ● Start with how you would normally install a program: $ tar -xf <pkgname>-<pkgver> $ cd <pkgname>-<pkgver> $ ./configure $ make $ sudo make install
  • 14. Package Creation ● Separate out the parts run as a user and root into separate functions: $ tar -xf <pkgname>-<pkgver> $ cd <pkgname>-<pkgver> build() { ./configure make } package() { make install }
  • 15. Package Creation ● makepkg will automatically handle source extraction into “$srcdir” build() { cd $srcdir/<pkgname>-<pkgver> ./configure make } package() { cd $srcdir/<pkgname>-<pkgver> make install }
  • 16. Package Creation ● Files need to be installed in “$pkgdir”, which is compressed to make the package: build() { cd $srcdir-<pkgname>-<pkgver> ./configure –prefix=/usr make } package() { cd $srcdir-<pkgname>-<pkgver> make DESTDIR=$pkgdir install }
  • 17. Package Creation ● Add some information about the package at the top of the file: pkgname=foo pkgver=3.0 pkgrel=1 pkgdesc="Example software" arch=('i686' 'x86_64') url="http://foo.example.com" license=('GPL') depends=('glibc') source=(http://$pkgname-$pkgver.tar.gz) md5sums=('d41d8cd98f00b204e9800f8427e')
  • 18. Package Creation ● makepkg automates many common packaging tasks: ● Stripping debugging symbols from binaries ● Compressing man and info pages ● Setting compiler/linker options (CFLAGS, LDFLAGS, MAKEFLAGS) ● Removing common unwanted files (libtool, infodir, …)
  • 19. Package Creation ● Two files are placed in the $pkgdir directory with all package meta data ● Then a (compressed) tar archive of the $pkgdir directory is created ● DONE!
  • 20. Package Creation - Example ● See terminal ->
  • 21. Community - Developers ● 1 Project Leader ● Deals with legal matters (exclusively) ● 33 Developers / Junior Developers ● Runs infrastructure ● Packages the packages in the official [core] and [extra] repositories
  • 22. Community – Developers ● No formal rules of governance ● Consensus-based decision making ● Developers may in principle do whatever they want, as long as they inform the other developers of their intentions beforehand and there is no serious, technical oposition ● New developers added by invitation only
  • 23. Community – Trusted Users ● 37 Trusted Users (Tus) ● Disjont form the Developers ● Runs the Arch User Repository (AUR) ● Packages the semi-official packages in the [community] repository ● Ran as a democracy, governed by formal by- laws ● New TUs may apply to join
  • 24. Community – AUR ● Repository of PKGBUILDs ● Anyone may sign-up and upload PKGBUILDs ● Absolutely no quality-control of the resulting packages, but some style guidelines on the PKGBUILDs themselves ● Popular, high-quality PKGBUILDS are often picked up by TU's and added to the [community] repository
  • 25. Community – others... ● Forum, wiki, bug tracker, mailing-lists, irc channels are ran by separate teams ● Disjoint from each other (and the developers)
  • 26. Getting involved ● Actively contribute to the community ● Provide PKGBUILDs for unpackaged software ● Help on the bug tracker ● Contributing code to our projects ● Update the wiki ● Apply to become a Trusted User ● Sponsoring and voting process... ● Be invited onto the Developer team
  • 27. Evolution of an example package systemd: a Linux init system
  • 28. Example - systemd ● First packages for systemd were placed in AUR in 2010 ● Lots of work was required to make it work with Arch “I'm highly dubious that Arch's kernel will ever natively support systemd, but I'm willing to give that a try as well once 2.6.36 hits.”
  • 29. Example - systemd Over the next two years... ● Unified the legacy Arch init system and systemd ● systemd moved from the AUR to [community] ● The systemd packager was invited to join the dev team and moved systemd to [extra] ● systemd moved to [core] ● The legacy init system was deprecated and systemd is now our only supported init system
  • 30. Why does it work at all? ● Software developers write code that is supposed to work... ● Only suport the most recent version of our packages ● Don't support more options than strictly necessary at the lower levels ● Accept occasional user intervention
  • 31. Vanilla Packages ● Means packaging the software as the upstream developers intended ● Minimise patching – preferably only to fix build issues ● Result in any bug we find is (probably) not distribution specific ● Allows us to work more closely with software developers to fix bugs
  • 32. Working With Software Developers ● All bug fix patches in Arch must be approved by the upstream developers ● That means that the Arch developers and community have become regular code contributors ● Many Arch developers also have commit access to upstream projects
  • 33. Future Directions for Arch Linux ● Majority response... “Keep updating packages” ● Add more focus on a particular areas ● Add more architectures ● Simplify the system further
  • 34. Keeping Packages Updated ● One of Arch Linux's greatest contributions to the Linux community ● Arch gets packages in their stable repositories before some major distributions get it in their developmental versions ● The Arch community will identify bugs early and report the issue to the software developers ● Fixes benefit all Linux distributions
  • 35. Add More Architectures ● Currently we support x86 in 32bit (i686) and 64bit (x86-64) varieties ● There are community projects supporting other architectures ● ARM (v5, v6, v7) ● PPC ● ... ● Would be good to provide a way for these ports to become official (like x86-64 did)
  • 36. Arch Linux ARM ● Non-official spin-off for the ARM architecture ● One of the distros recommended for the Raspberry Pi
  • 37. Simplifying the Filesystem ● Usual filesystem layout has a lot of redundancies /boot /bin /etc /home /lib /sbin /usr /bin /lib /sbin
  • 38. Simplifying the Filesystem ● Libraries /boot /bin /etc /home /lib (essential libraries) /sbin /usr /bin /lib (rest of libraries) /sbin
  • 39. Simplifying the Filesystem ● Keep all libraries in one place /boot /bin /etc /home /lib -> /usr/lib /sbin /usr /bin /lib /sbin
  • 40. Simplifying the Filesystem ● Executables – distinction between directories is vague... /boot /bin (essential user commands) /etc /home /lib -> /usr/lib /sbin (system commands) /usr /bin (most commands) /lib /sbin (non-essential system)
  • 41. Simplifying the Filesystem ● Keep all libraries in one place /boot /bin -> /usr/bin /etc /home /lib -> /usr/lib /sbin -> /usr/bin /usr /bin /lib /sbin -> bin
  • 42. Simplifying the Filesystem ● /etc directory holds all configuration files ● Beginning to have these placed in /usr/lib/<pkgname> with files in /etc overriding the default settings ● Would be very helpful for a rolling release system ● Requires substantial work with upstream projects to achieve...
  • 43. Automating More Packaging ● Task like rebuilds for library soname changes are typically trivial ● Would save a lot of time if we could automate (most of) this ● Most packages do not require architecture specific changes – build for one and automate the rest ● Would allow us to focus more on improving other areas of the distribution