$30 off During Our Annual Pro Sale. View Details »

RPMing your apps and tools

Joshua Thijssen
February 22, 2014
260

RPMing your apps and tools

Joshua Thijssen

February 22, 2014
Tweet

Transcript

  1. 1
    Joshua Thijssen
    jaytaph
    RPM’ing your apps and tools
    PHPUK14
    London

    View Slide

  2. 2
    Joshua Thijssen
    Freelance consultant and trainer @
    NoxLogic.
    Founder of the Dutch Web Alliance.
    Development in PHP, Python, C, Java.
    Lead developer of Saffire.
    Blog: http://adayinthelifeof.nl
    Email: [email protected]
    Twitter: @jaytaph

    View Slide

  3. 3
    RPwut?

    View Slide

  4. 4
    RedHat
    Package
    Manager

    View Slide

  5. ➡ Not only for RedHat
    ➡ Also all derivates: CentOS, Fedora etc
    ➡ Can also be used on Debian-like systems
    (but not recommended)
    5

    View Slide

  6. Why use package
    managers?
    6

    View Slide

  7. 7

    View Slide

  8. ➡ Takes care of dependencies
    ➡ Less time to install
    ➡ No compilation needed
    ➡ Easier to maintain
    ➡ Can be automated easily (puppet, chef etc)
    8

    View Slide

  9. 9
    Usage

    View Slide

  10. 10
    RPM
    YUM

    View Slide

  11. [jthijssen@centos65 ~]$ yum search php xdebug
    Loaded plugins: downloadonly, fastestmirror
    Loading mirror speeds from cached hostfile
    * base: ftp.tudelft.nl
    * epel: mirror.muntinternet.net
    * extras: ftp.tudelft.nl
    * updates: ftp.tudelft.nl
    * webtatic: nl.repo.webtatic.com
    ========================================= N/S Matched: php, xdebug =========================================
    php-pecl-xdebug.x86_64 : PECL package for debugging PHP scripts
    php54w-pecl-xdebug.x86_64 : PECL package for debugging PHP scripts
    php55w-pecl-xdebug.x86_64 : PECL package for debugging PHP scripts
    Full name and summary matches only, use "search all" for everything.
    11

    View Slide

  12. [jthijssen@centos65 ~]$ yum info php-pecl-xdebug
    Loaded plugins: downloadonly, fastestmirror
    Loading mirror speeds from cached hostfile
    * base: ftp.tudelft.nl
    * epel: mirror.muntinternet.net
    * extras: ftp.tudelft.nl
    * updates: ftp.tudelft.nl
    * webtatic: nl.repo.webtatic.com
    Available Packages
    Name : php-pecl-xdebug
    Arch : x86_64
    Version : 2.1.4
    Release : 1.el6
    Size : 143 k
    Repo : epel
    Summary : PECL package for debugging PHP scripts
    URL : http://pecl.php.net/package/xdebug
    License : PHP
    Description : The Xdebug extension helps you debugging your script by providing a lot of
    : valuable debug information. The debug information that Xdebug can provide
    : includes the following:
    :
    : * stack and function traces in error messages with:
    ....
    : Xdebug also provides:
    :
    : * profiling information for PHP scripts
    : * code coverage analysis
    : * capabilities to debug your scripts interactively with a debug client
    12

    View Slide

  13. [jthijssen@centos65 ~]$ yum list installed
    Loaded plugins: downloadonly, fastestmirror
    Loading mirror speeds from cached hostfile
    * base: ftp.tudelft.nl
    * epel: mirror.muntinternet.net
    * extras: ftp.tudelft.nl
    * updates: ftp.tudelft.nl
    * webtatic: nl.repo.webtatic.com
    Installed Packages
    GeoIP.x86_64 1.4.8-1.el6 @epel
    MAKEDEV.x86_64 3.24-6.el6 @anaconda-CentOS-201311272149.x86_64/6.5
    acl.x86_64 2.2.49-6.el6 @anaconda-CentOS-201311272149.x86_64/6.5
    aic94xx-firmware.noarch 30-2.el6 @anaconda-CentOS-201311272149.x86_64/6.5
    atmel-firmware.noarch 1.3-7.el6 @anaconda-CentOS-201311272149.x86_64/6.5
    attr.x86_64 2.4.44-7.el6 @anaconda-CentOS-201311272149.x86_64/6.5
    audit.x86_64 2.2-2.el6 @anaconda-CentOS-201311272149.x86_64/6.5
    audit-libs.x86_64 2.2-2.el6 @anaconda-CentOS-201311272149.x86_64/6.5
    authconfig.x86_64 6.1.12-13.el6 @anaconda-CentOS-201311272149.x86_64/6.5
    b43-openfwwf.noarch 5.2-4.el6 @anaconda-CentOS-201311272149.x86_64/6.5
    ....
    yum-plugin-downloadonly.noarch 1.1.30-14.el6 @base
    yum-plugin-fastestmirror.noarch 1.1.30-14.el6 @anaconda-CentOS-201311272149.x86_64/6.5
    zd1211-firmware.noarch 1.4-4.el6 @anaconda-CentOS-201311272149.x86_64/6.5
    zlib.x86_64 1.2.3-29.el6 @anaconda-CentOS-201311272149.x86_64/6.5
    zsh.x86_64 4.3.10-7.el6 @base
    13

    View Slide

  14. [jthijssen@centos65 ~]$ repoquery -q -l php-pecl-xdebug
    /etc/php.d/xdebug.ini
    /usr/bin/debugclient
    /usr/lib64/php/modules/xdebug.so
    /usr/share/doc/php-pecl-xdebug-2.1.4
    /usr/share/doc/php-pecl-xdebug-2.1.4/CREDITS
    /usr/share/doc/php-pecl-xdebug-2.1.4/Changelog
    /usr/share/doc/php-pecl-xdebug-2.1.4/LICENSE
    /usr/share/doc/php-pecl-xdebug-2.1.4/NEWS
    /usr/share/doc/php-pecl-xdebug-2.1.4/README
    /usr/share/pear/.pkgxml/php-pecl-xdebug.xml
    14

    View Slide

  15. [jthijssen@centos65 ~]$ rpm -qf /home/jthijssen/.viminfo
    file /home/jthijssen/.viminfo is not owned by any package
    15
    [jthijssen@centos65 ~]$ rpm -qf /usr/bin/php
    php55w-cli-5.5.7-1.w6.x86_64

    View Slide

  16. [jthijssen@centos65 ~]$ yum whatprovides /usr/bin/php
    Loaded plugins: downloadonly, fastestmirror
    Loading mirror speeds from cached hostfile
    * base: ftp.tudelft.nl
    * epel: mirror.muntinternet.net
    * extras: ftp.tudelft.nl
    * updates: ftp.tudelft.nl
    * webtatic: nl.repo.webtatic.com
    php-cli-5.3.3-26.el6.x86_64 : Command-line interface for PHP
    Repo : base
    Matched from:
    Filename : /usr/bin/php
    php55w-cli-5.5.8-1.w6.x86_64 : Command-line interface for PHP
    Repo : webtatic
    Matched from:
    Filename : /usr/bin/php
    php-cli-5.3.3-27.el6_5.x86_64 : Command-line interface for PHP
    Repo : updates
    Matched from:
    Filename : /usr/bin/php
    ..
    php55w-cli-5.5.7-1.w6.x86_64 : Command-line interface for PHP
    Repo : installed
    Matched from:
    Other : Provides-match: /usr/bin/php
    16

    View Slide

  17. [jthijssen@centos65 ~]$ yum whatprovides /usr/bin/php --disablerepo=*
    Loaded plugins: downloadonly, fastestmirror
    Loading mirror speeds from cached hostfile
    php55w-cli-5.5.7-1.w6.x86_64 : Command-line interface for PHP
    Repo : installed
    Matched from:
    Other : Provides-match: /usr/bin/php
    17

    View Slide

  18. [jthijssen@centos65 ~]$ sudo yum install screen
    Loaded plugins: downloadonly, fastestmirror
    Loading mirror speeds from cached hostfile
    * base: ftp.tudelft.nl
    * epel: be.mirror.eurid.eu
    * extras: ftp.tudelft.nl
    * updates: ftp.tudelft.nl
    * webtatic: us-east.repo.webtatic.com
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package screen.x86_64 0:4.0.3-16.el6 will be installed
    --> Finished Dependency Resolution
    Dependencies Resolved
    =============================================================================================================================
    Package Arch Version Repository Size
    =============================================================================================================================
    Installing:
    screen x86_64 4.0.3-16.el6 base 494 k
    Transaction Summary
    =============================================================================================================================
    Install 1 Package(s)
    Total download size: 494 k
    Installed size: 795 k
    Is this ok [y/N]: y
    Downloading Packages:
    screen-4.0.3-16.el6.x86_64.rpm | 494 kB 00:00
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Installing : screen-4.0.3-16.el6.x86_64 1/1
    Verifying : screen-4.0.3-16.el6.x86_64 1/1
    Installed:
    screen.x86_64 0:4.0.3-16.el6
    Complete!
    18

    View Slide

  19. [jthijssen@centos65 ~]$ sudo yum remove screen
    Loaded plugins: downloadonly, fastestmirror
    Setting up Remove Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package screen.x86_64 0:4.0.3-16.el6 will be erased
    --> Finished Dependency Resolution
    Dependencies Resolved
    =============================================================================================================================
    Package Arch Version Repository Size
    =============================================================================================================================
    Removing:
    screen x86_64 4.0.3-16.el6 @base 795 k
    Transaction Summary
    =============================================================================================================================
    Remove 1 Package(s)
    Installed size: 795 k
    Is this ok [y/N]: y
    Downloading Packages:
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Erasing : screen-4.0.3-16.el6.x86_64 1/1
    Verifying : screen-4.0.3-16.el6.x86_64 1/1
    Removed:
    screen.x86_64 0:4.0.3-16.el6
    Complete!
    19

    View Slide

  20. [jthijssen@centos65 ~]$ sudo yum install tig
    sudo yum install tig
    Loaded plugins: downloadonly, fastestmirror
    Loading mirror speeds from cached hostfile
    * base: ftp.tudelft.nl
    * epel: be.mirror.eurid.eu
    * extras: ftp.tudelft.nl
    * updates: ftp.tudelft.nl
    * webtatic: us-east.repo.webtatic.com
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package tig.x86_64 0:0.17-1.el6 will be installed
    --> Processing Dependency: git for package: tig-0.17-1.el6.x86_64
    --> Running transaction check
    ---> Package git.x86_64 0:1.7.1-3.el6_4.1 will be installed
    --> Processing Dependency: perl-Git = 1.7.1-3.el6_4.1 for package: git-1.7.1-3.el6_4.1.x86_64
    --> Processing Dependency: rsync for package: git-1.7.1-3.el6_4.1.x86_64
    --> Processing Dependency: perl(Git) for package: git-1.7.1-3.el6_4.1.x86_64
    --> Processing Dependency: perl(Error) for package: git-1.7.1-3.el6_4.1.x86_64
    --> Processing Dependency: openssh-clients for package: git-1.7.1-3.el6_4.1.x86_64
    --> Running transaction check
    ---> Package openssh-clients.x86_64 0:5.3p1-94.el6 will be installed
    ---> Package perl-Error.noarch 1:0.17015-4.el6 will be installed
    ---> Package perl-Git.noarch 0:1.7.1-3.el6_4.1 will be installed
    ---> Package rsync.x86_64 0:3.0.6-9.el6_4.1 will be installed
    --> Finished Dependency Resolution
    Dependencies Resolved
    ...
    20

    View Slide

  21. ...
    =============================================================================================================================
    Package Arch Version Repository Size
    =============================================================================================================================
    Installing:
    tig x86_64 0.17-1.el6 epel 103 k
    Installing for dependencies:
    git x86_64 1.7.1-3.el6_4.1 base 4.6 M
    openssh-clients x86_64 5.3p1-94.el6 base 402 k
    perl-Error noarch 1:0.17015-4.el6 base 29 k
    perl-Git noarch 1.7.1-3.el6_4.1 base 28 k
    rsync x86_64 3.0.6-9.el6_4.1 base 334 k
    Transaction Summary
    =============================================================================================================================
    Install 6 Package(s)
    Total download size: 5.5 M
    Installed size: 17 M
    Is this ok [y/N]: y
    Downloading Packages:
    (1/6): git-1.7.1-3.el6_4.1.x86_64.rpm | 4.6 MB 00:02
    (2/6): openssh-clients-5.3p1-94.el6.x86_64.rpm | 402 kB 00:00
    (3/6): perl-Error-0.17015-4.el6.noarch.rpm | 29 kB 00:00
    (4/6): perl-Git-1.7.1-3.el6_4.1.noarch.rpm | 28 kB 00:00
    (5/6): rsync-3.0.6-9.el6_4.1.x86_64.rpm | 334 kB 00:00
    (6/6): tig-0.17-1.el6.x86_64.rpm | 103 kB 00:00
    -----------------------------------------------------------------------------------------------------------------------------
    Total 1.7 MB/s | 5.5 MB 00:03
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    ...
    21

    View Slide

  22. ...
    Running Transaction
    Installing : 1:perl-Error-0.17015-4.el6.noarch 1/6
    Installing : openssh-clients-5.3p1-94.el6.x86_64 2/6
    Installing : rsync-3.0.6-9.el6_4.1.x86_64 3/6
    Installing : perl-Git-1.7.1-3.el6_4.1.noarch 4/6
    Installing : git-1.7.1-3.el6_4.1.x86_64 5/6
    Installing : tig-0.17-1.el6.x86_64 6/6
    Verifying : 1:perl-Error-0.17015-4.el6.noarch 1/6
    Verifying : perl-Git-1.7.1-3.el6_4.1.noarch 2/6
    Verifying : git-1.7.1-3.el6_4.1.x86_64 3/6
    Verifying : rsync-3.0.6-9.el6_4.1.x86_64 4/6
    Verifying : tig-0.17-1.el6.x86_64 5/6
    Verifying : openssh-clients-5.3p1-94.el6.x86_64 6/6
    Installed:
    tig.x86_64 0:0.17-1.el6
    Dependency Installed:
    git.x86_64 0:1.7.1-3.el6_4.1 openssh-clients.x86_64 0:5.3p1-94.el6 perl-Error.noarch 1:0.17015-4.el6
    perl-Git.noarch 0:1.7.1-3.el6_4.1 rsync.x86_64 0:3.0.6-9.el6_4.1
    Complete!
    [jthijssen@centos65 ~]$
    22

    View Slide

  23. [jthijssen@centos65 ~]$ sudo yum history list all
    Loaded plugins: downloadonly, fastestmirror
    ID | Login user | Date and time | Action(s) | Altered
    -------------------------------------------------------------------------------
    18 | | 2014-02-03 13:06 | Erase | 1
    17 | | 2014-02-03 13:05 | Install | 6
    16 | | 2014-02-03 13:03 | Erase | 1
    15 | | 2014-02-03 13:02 | Install | 1
    14 | | 2014-02-03 12:56 | Install | 1
    13 | | 2013-12-14 22:52 | Install | 1
    12 | | 2013-12-14 22:16 | Install | 1 EE
    11 | | 2013-12-14 22:13 | Install | 3 <
    10 | | 2013-12-14 22:05 | Install | 1 >
    9 | | 2013-12-14 21:41 | Install | 7
    8 | | 2013-12-14 21:37 | Install | 4
    7 | | 2013-12-14 21:35 | Install | 13
    6 | | 2013-12-14 21:34 | I, U | 11 <
    5 | | 2013-12-14 21:33 | Install | 1 >
    4 | | 2013-12-14 21:25 | Install | 1
    3 | root | 2013-12-14 21:16 | Install | 1
    2 | root | 2013-12-14 21:16 | Install | 9
    1 | System | 2013-12-14 20:48 | Install | 217
    23

    View Slide

  24. [jthijssen@centos65 ~]$ sudo yum history package-list tig
    Loaded plugins: downloadonly, fastestmirror
    ID | Action(s) | Package
    -------------------------------------------------------------------------------
    18 | Erase | tig-0.17-1.el6.x86_64
    17 | Install | tig-0.17-1.el6.x86_64
    history package-list
    24

    View Slide

  25. [jthijssen@centos65 ~]$ sudo yum history info 17
    Loaded plugins: downloadonly, fastestmirror
    Transaction ID : 17
    Begin time : Mon Feb 3 13:05:11 2014
    Begin rpmdb : 263:a2126d6ecaf16f8878c953baeef645c1e06ddf3c
    End time : 13:05:14 2014 (3 seconds)
    End rpmdb : 269:f9b58f8d062d3696ce529614b6c2a36f3e992f4b
    User :
    Return-Code : Success
    Command Line : install tig
    Transaction performed with:
    Installed rpm-4.8.0-37.el6.x86_64 @anaconda-CentOS-201311272149.x86_64/6.5
    Installed yum-3.2.29-40.el6.centos.noarch @anaconda-CentOS-201311272149.x86_64/6.5
    Installed yum-plugin-fastestmirror-1.1.30-14.el6.noarch @anaconda-CentOS-201311272149.x86_64/6.5
    Packages Altered:
    Dep-Install git-1.7.1-3.el6_4.1.x86_64 @base
    Dep-Install openssh-clients-5.3p1-94.el6.x86_64 @base
    Dep-Install perl-Error-1:0.17015-4.el6.noarch @base
    Dep-Install perl-Git-1.7.1-3.el6_4.1.noarch @base
    Dep-Install rsync-3.0.6-9.el6_4.1.x86_64 @base
    Install tig-0.17-1.el6.x86_64 @epel
    history info
    25

    View Slide

  26. 26
    ➡ rpm -hiv
    ➡ rpm -ql
    ➡ rpm -qf

    View Slide

  27. Creating packages
    27

    View Slide

  28. ➡ Sources
    ➡ Patch files
    ➡ Any other stuff you like to add (docs,
    examples, custom stuff)
    ➡ SPEC file
    28

    View Slide

  29. ➡ Building is pretty easy,
    ➡ as long as you get your SPEC file correct :/
    ➡ Build with “rpmbuild”
    ➡ Don’t build as root!
    29

    View Slide

  30. /autobugfix-1.0/bin/autobugfix
    /autobugfix-1.0/doc/LICENSE
    /autobugfix-1.0/man/autobugfix.1
    30
    AutoBugFix: worlds first automatic bug fixer

    View Slide

  31. ➡ Sources: autobugfix-v1.0.tar.gz
    ➡ Patches:
    - autobugfix-v1.0-hotfix1.patch
    - autobugfix-v1.0-extrafeature.patch
    ➡ Other files: LICENSE, README
    ➡ Spec: autobugfix.spec
    31

    View Slide

  32. ➡ The SPEC file is a “script / config” file
    that tells rpmbuild how to build the RPM
    files.
    ➡ Can also be used for building SOURCE
    RPM files (that can be used to build the
    RPMs yourself)
    32

    View Slide

  33. 33
    ➡ RPMBuild uses this directory structure:
    ➡ ~/rpmbuild
    /SOURCES
    /SPECS
    /BUILD
    /BUILDROOT
    /RPMS
    /SRPMS

    View Slide

  34. 34
    ➡ Copy your source-files into SOURCES
    (but probably want to use urls in your
    spec files)
    ➡ Copy your spec-files into SPECS
    ➡ If you install a SOURCE RPM, this will
    be done for you.

    View Slide

  35. 35
    ➡ rpmbuild -v -ba rpmbuild/SPECS/
    autobugfix.spec
    ➡ RPM and SRPMS are created in the
    directories!

    View Slide

  36. Name: autobugfix
    Version: 1.0
    Release: 1%{?dist}
    Summary: Fixes bugs automatically, so you won't have to
    Group: Development/Tools
    License: BSD
    URL: https://autobugfix.noxlogic.nl
    Source0: http://autobugfix.noxlogic.nl/download/%{name}-%{version}.tar.gz
    Patch1: http://autobugfix.noxlogic.nl/download/hotfix-001.patch
    BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
    BuildArch: noarch
    Packager: Joshua Thijssen
    Requires: php-common
    %description
    This application will fix bugs while you type. Very useful when editting your code on your production
    platforms.
    ....
    36

    View Slide

  37. ...
    %prep
    %setup -q
    %patch1
    %build
    %install
    %{__rm} -rf %{buildroot}
    %{__mkdir} -p %{buildroot}/usr/local/noxlogic/bin
    %{__install} -m 755 bin/autobugfix %{buildroot}/usr/local/noxlogic/bin/autobugfix
    %{__mkdir} -p %{buildroot}%{_mandir}/man1
    %{__cp} man/autobugfix.1 %{buildroot}%{_mandir}/man1
    %clean
    %{__rm} -rf %{buildroot}
    ...
    37

    View Slide

  38. ...
    %files
    %defattr(-,root,root,-)
    %doc doc/*
    %dir /usr/local
    %dir /usr/local/noxlogic
    %dir /usr/local/noxlogic/bin
    /usr/local/noxlogic/bin/autobugfix
    %{_mandir}/man1/autobugfix.1.gz
    %changelog
    38

    View Slide

  39. [jthijssen@centos65 autobugfix]$ rpmlint autobugfix.spec
    autobugfix.spec:13: W: hardcoded-packager-tag Joshua
    0 packages and 1 specfiles checked; 0 errors, 1 warnings.
    39

    View Slide

  40. 40
    rpmbuild -ba ~/rpmbuild/SPECS/autobugfix.spec

    View Slide

  41. [jthijssen@centos65 autobugfix]$ rpm -qip ~/rpmbuild/RPMS/noarch/autobugfix-1.0-1.el6.noarch.rpm
    Name : autobugfix Relocations: (not relocatable)
    Version : 1.0 Vendor: (none)
    Release : 1.el6 Build Date: Mon 03 Feb 2014 03:24:42 PM CET
    Install Date: (not installed) Build Host: centos65.virtualbox.local
    Group : Development/Tools Source RPM: autobugfix-1.0-1.el6.src.rpm
    Size : 1082 License: BSD
    Signature : (none)
    Packager : Joshua Thijssen
    URL : https://autobugfix.noxlogic.nl
    Summary : Fixes bugs automatically, so you won't have to
    Description :
    This application will fix bugs while you type. Very useful when editting your code on your production
    platforms.
    41

    View Slide

  42. 42
    ➡ rpm -hiv autobugfix-1.0-1.el6.noarch.rpm

    View Slide

  43. 43
    #
    %define nginx_home %{_localstatedir}/cache/nginx
    %define nginx_user nginx
    %define nginx_group nginx
    Summary: High performance web server
    Name: nginx
    Version: 1.4.5
    Release: 1%{?dist}.ngx
    Vendor: nginx inc.
    URL: http://nginx.org/
    Source0: http://nginx.org/download/%{name}-%{version}.tar.gz
    Source1: logrotate
    Source2: nginx.init
    Source3: nginx.sysconf
    Source4: nginx.conf
    Source5: nginx.vh.default.conf
    Source6: nginx.vh.example_ssl.conf
    Source7: nginx.suse.init
    License: 2-clause BSD-like license
    %if 0%{?suse_version}
    Group: Productivity/Networking/Web/Servers
    %else
    Group: System Environment/Daemons
    %endif
    BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
    BuildRequires: zlib-devel
    BuildRequires: pcre-devel
    BuildRequires: perl
    %if 0%{?suse_version}
    BuildRequires: libopenssl-devel
    Requires(pre): pwdutils
    %else
    BuildRequires: openssl-devel
    Requires: initscripts >= 8.36
    Requires(pre): shadow-utils
    Requires(post): chkconfig
    %endif

    View Slide

  44. 44
    %files debug
    %attr(0755,root,root) %{_sbindir}/nginx.debug
    %pre
    # Add the "nginx" user
    getent group %{nginx_group} >/dev/null || groupadd -r %{nginx_group}
    getent passwd %{nginx_user} >/dev/null || \
    useradd -r -g %{nginx_group} -s /sbin/nologin \
    -d %{nginx_home} -c "nginx user" %{nginx_user}
    exit 0
    %post
    # Register the nginx service
    if [ $1 -eq 1 ]; then
    /sbin/chkconfig --add nginx
    # print site info
    cat <----------------------------------------------------------------------
    Thanks for using nginx!
    Please find the official documentation for nginx here:
    * http://nginx.org/en/docs/
    Commercial subscriptions for nginx are available on:
    * http://nginx.com/products/
    ----------------------------------------------------------------------
    BANNER

    View Slide

  45. Setting up a
    custom repository
    45

    View Slide

  46. 46
    ➡ yum install createrepo
    ➡ create structure on public web dir
    ➡ copy files over
    ➡ “createrepo” on each directory

    View Slide

  47. ➡ Directory structure:
    /var/www/html/noxlogic/SRPMS
    /var/www/html/noxlogic/RPMS/x86_64
    ➡ Run “createrepo” on each directory
    ➡ Creates “repodata” subdirectory
    47

    View Slide

  48. ➡ Add your repository to yum
    48

    View Slide

  49. 49
    #
    # /etc/yum.repos.d/noxlogic
    #
    [noxlogic]
    name=NoxLogic Packages
    baseurl=http://repo.noxlogic.nl/noxlogic/RPMS/$basearch
    enabled=1
    gpgcheck=0
    [noxlogic-source]
    name=NoxLogic Source Packages
    baseurl=http://repo.noxlogic.nl/noxlogic/SRPMS
    enabled=0
    gpgcheck=0

    View Slide

  50. 50
    [jthijssen@centos65 ~]$ sudo yum repolist
    Loaded plugins: downloadonly, fastestmirror
    Loading mirror speeds from cached hostfile
    * base: centos.weepeetelecom.nl
    * epel: mirror.proserve.nl
    * extras: centos.mirror1.spango.com
    * updates: mirror.widexs.nl
    * webtatic: nl.repo.webtatic.com
    repo id repo name status
    base CentOS-6 - Base 6,367
    epel Extra Packages for Enterprise Linux 6 - x86_64 10,433
    extras CentOS-6 - Extras 14
    noxlogic NoxLogic Packages 2
    updates CentOS-6 - Updates 414
    webtatic Webtatic Repository EL6 - x86_64 166
    repolist: 17,396

    View Slide

  51. 51
    [jthijssen@centos65 ~]$ yum --disablerepo=* --enablerepo=noxlogic list available
    Loaded plugins: downloadonly, fastestmirror
    Loading mirror speeds from cached hostfile
    Available Packages
    autobugfix.noarch 1.0-2.el6 noxlogic
    phpmyadmin.noarch 2.11.9.6-1.rf noxlogic

    View Slide

  52. [root@centos65 noxlogic]# yum info autobugfix
    Loaded plugins: downloadonly, fastestmirror
    Loading mirror speeds from cached hostfile
    * base: mirror.colocenter.nl
    * epel: mirror.1000mbps.com
    * extras: mirror.colocenter.nl
    * updates: centos.mirror.transip.nl
    * webtatic: nl.repo.webtatic.com
    Available Packages
    Name : autobugfix
    Arch : noarch
    Version : 1.0
    Release : 1.el6
    Size : 3.9 k
    Repo : noxlogic
    Summary : Fixes bugs automatically, so you won't have to
    URL : https://autobugfix.noxlogic.nl
    License : BSD
    Description : This application will fix bugs while you type. Very useful when editting your code on your
    : production platforms.
    52

    View Slide

  53. [root@centos65 noxlogic]# yum install autobugfix
    ....
    =================================================================================================================
    Package Arch Version Repository Size
    =================================================================================================================
    Installing:
    autobugfix noarch 1.0-1.el6 noxlogic 3.9 k
    Transaction Summary
    =================================================================================================================
    Install 1 Package(s)
    Total size: 3.9 k
    Installed size: 1.1 k
    Is this ok [y/N]: y
    Downloading Packages:
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Installing : autobugfix-1.0-1.el6.noarch 1/1
    Verifying : autobugfix-1.0-1.el6.noarch 1/1
    Installed:
    autobugfix.noarch 0:1.0-1.el6
    Complete!
    53

    View Slide

  54. ➡ Some tips & tricks:
    ➡ when “developing” to clear your yum
    cache: yum clean all
    ➡ Or wait (default) 90 minutes before new
    updates will be visible.
    ➡ Make sure you copy and “createrepo”
    after creating packages.
    54

    View Slide

  55. ➡ You probably want / need to:
    ➡ create a “repopackage”. RPM that
    manually installs the repositories inside
    yum.repos.d
    ➡ Really sign your packages as well!
    55

    View Slide

  56. http://farm1.static.flickr.com/73/163450213_18478d3aa6_d.jpg 56

    View Slide