• SBT SNAPSHOT Deploys and fatjar Support

    by packagecloud

    You can now deploy your Scala packages directly from SBT to your packagecloud repositories (including SNAPSHOT versions)! Also, we’ve released support for deployment JARs, also known as “fatjars” or “uberjars” to the packagecloud CLI! Read on to find out how to take advantage of these new features.

  • IPv6 access for all APT, YUM, Maven, PyPI, and RubyGem repositories

    by packagecloud

    IPv6 APT, YUM, PyPI, RubyGem and Maven package repositories We are pleased to announce that IPv6 support for packagecloud has now entered public beta! The changes have been rolled out site-wide. The website, all package repositories, and all API endpoints are now accessible with both IPv4 and IPv6. No changes are necessary for our users;...

  • Announcing Maven repository support

    by packagecloud

    packagecloud now fully supports public and private maven2 repositories! Deploy releases and SNAPSHOTs right from your favorite build tool: Maven, Gradle, or Leiningen!

  • Monitorama 2016: All of Your Networking Monitoring is (probably) wrong

    by packagecloud

    These are the slides from Joe Damato’s talk at Monitorama 2016 titled “All Your Networking Monitoring is (probably) Wrong”. This talk covers: parts of the Linux kernel, networking, and some tips and tricks for understanding and gathering network monitoring statistics.

  • Monitoring and Tuning the Linux Networking Stack: Receiving Data

    by packagecloud

    This blog post explains how computers running the Linux kernel receive packets, as well as how to monitor and tune each component of the networking stack as packets flow from the network toward userland programs.

  • Announcing README support for packagecloud repositories

    by packagecloud

    You can now add a README to all your packagecloud repositories! Use the embedded markdown editor on your repository homepage (or settings page) to share important information about your packages with users.

  • Free Fastly CDN support for all package repositories and more

    by packagecloud

    All repositories on packagecloud are now backed by the Fastly CDN for super fast download speeds! In addition, we’ve completely redesigned search to make it faster and easier to use, added an indexing badge to repository pages, and dramatically improved the performance of our RPM indexers.

  • Philly ETE 2016: Infrastructure as code might be literally impossible

    by packagecloud

    This is the video and the slides from Joe Damato’s talk at Philly ETE 2016, titled “Infrastructure as code might be literally impossible”. This talk covers: package managers, puppet, chef, scary stories, and more!

  • The Definitive Guide to Linux System Calls

    by packagecloud

    This blog post explains how Linux programs call functions in the Linux kernel. It will outline several different methods of making systems calls, how to handcraft your own assembly to make system calls (examples included), kernel entry points into system calls, kernel exit points from system calls, glibc wrappers, bugs, and much, much more....

  • Pushing packages to packagecloud

    by packagecloud

    This blog post details all ways you can push packages to packagecloud using different languages and platforms.

  • APT Hash sum mismatch

    by packagecloud

    APT repository can be provided uncompressed or compressed in a variety of archive formats. The most commonly offered formats are gzip, bzip, and lzma. A bug in apt’s code which deals with reading and writing lzma (.xz) archives causes apt to occasionally report the error “Hash sum mismatch.”

  • March Outages post-mortem

    by packagecloud

    We had a few brief outages in the past couple of weeks, this post-mortem aims to detail what happened, how we responded, and what was done to prevent similar incidents in the future.

  • How does ltrace work?

    by packagecloud

    This blog post explains how ltrace works, internally. This is a great companion post to our previous blog post which describes strace internals.

  • How to extract and disassemble a Linux kernel image (vmlinuz)

    by packagecloud

    This blog post explains how to extract and disassemble a Linux kernel image. It will cover the extract-vmlinux script, how to use objdump, and how to use /boot/System.map to locate functions and other symbols. Store Deb, RPM, RubyGem, and Python packages, free. Sign up! Extracting the Linux kernel image (vmlinuz) First, you’ll need to...

  • How does strace work?

    by packagecloud

    This blog post explains how strace works, internally. We’ll examine the ptrace system call, which strace relies on, at the API layer and internally to understand how exactly strace can get information about the system calls being made in a running process. ptrace ptrace is a system call which a program can use to:...

  • Announcing Repository Install and Package Download Statistics

    by packagecloud

    We just launched the API and graphs for Repository Install and Package Downloads statistics! Pagination and Metadata Pagination is handled similarly to the Package and Versions API, using the Link: response header. Metadata about the returned collection, such as Start-Date, End-Date, Total, and Per-Page, is also available in the response headers. NOTE: The default...

  • Acceptance Testing Using Capybara and PhantomJS

    by packagecloud

    Running acceptance tests against a full web stack, like PhantomJS, can decrease overall testing time by reducing the number dependencies (i.e. Xvfb) needed by your CI server. This post will go over how we package and distribute PhantomJS and how to write acceptance tests to catch JavaScript errors before they hit production. Benefits of...

  • Python PyPI repository internals

    by packagecloud

    This blog post dives in to the Python PyPI repository metadata format. We’ll cover the different metadata files that make up a PyPI repository, what the files mean, and show how a user can inspect metadata themselves. What is a Python PyPI repository? A Python PyPI repository is a collection of Python packages and...

  • Client updates roundup

    by packagecloud

    We’ve made a few changes and improvements to our client libraries. This short post aims to provide a quick summary. Look forward to these roundups as we continue to add features and improve our integrations. Latest Versions As of writing, these are the latest versions that support the features listed below. NOTE: the major...

  • Announcing PyPI repository support

    by packagecloud

    packagecloud now supports Python packages! You can upload Python source distributions, eggs, and wheels to public and private packagecloud repositories using our CLI or our API. You should update to the latest packagecloud CLI, version 0.2.28 (or newer) from RubyGems to upload python packages. Once you’ve uploaded your packages, you can add the repository...

  • RubyGem Index Internals

    by packagecloud

    This post briefly goes over the contents of a gem package, the RubyGem Gem::Specification, Gem::Indexer and Gem::Server classes, a breakdown of the different RubyGem index files (specs.4.8, prerelease_specs.4.8, and latest_specs.4.8) and how they are used when determining dependencies and installing gem packages onto a system. What’s in a gem? A gem is just a...

  • strace cheat sheet

    by packagecloud

    strace traces system calls and signals and is an invaluable tool for gathering context when debugging. This cheat sheet will show a few useful ways of using strace, how to filter the output, and summarize some of the more useful commands line arguments that strace accepts. strace PTRACE_TRACEME EPERM (Operation not permitted) You should...

  • Outage postmortem (2015-11-05)

    by packagecloud

    Incident summary This past Thursday (November 5, 2015), our primary database server had elevated error rates and was taken offline. It was determined that the cause of elevated error rates on that machine were due to some of the RAM on the machine going bad. The packagecloud website was taken down for approximately 35 minutes,...

  • Introducing the packagecloud ansible role

    by packagecloud

    We’ve just released a packagecloud ansible role for installing packagecloud.io repositories! Usage Here is an example using this role to install a public and private repository on all of our hosts. Note: This role only supports Debian and RedHat ansible os families. -- hosts: all roles: - { role: capotej.packagecloud, repository: capotej/apt-cacher-ng, os: ubuntu,...

  • Use alien to convert Deb to RPM (and RPM to Deb)

    by packagecloud

    Alien is a command line tool that allows you to convert Debian packages to RPM packages, and vice versa. This blog post will illustrate how to convert a Debian package to an RPM and similarly, how to convert an RPM package to a Debian package. Installing Alien Installation on Debian systems alien can usually...

  • Inspecting and extracting RPM package contents

    by packagecloud

    This post covers how to list files, show package information and extract the contents of an RPM package. There will be example commands presented for extracting RPM package files and showing information for packages that are both installed, and not-installed on a system. Extract files from an RPM (quick start) $ rpm2cpio ./packagecloud-test-1.1-1.x86_64.rpm |...

  • Inspecting and extracting Debian package contents

    by packagecloud

    This post covers how to list and extract the contents of a Debian package. There will be examples used to show how to list the contents of debian packages that are installed and not-installed on a system, as well as, how to extract the debian control information and program files. Related Post Inspecting and...

  • Package Managers and Puppet

    by packagecloud

    These are the slides from Joe Damato’s talk at PuppetConf 2015, titled “Package Managers and Puppet”. This talk covers: package managers, puppet, yum, apt, gpg, and more! Presentation

  • APT and YUM repository mirroring made easy

    by packagecloud

    Mirror your packagecloud.io APT and YUM repositories We’ve added a Mirroring tab to repository pages to make it super easy to mirror your YUM and APT repositories on packagecloud! Step by step directions and configuration data have been added so you don’t need to hunt down information from mailing lists or read perl source to...

  • Announcing Official Support for LinuxMint and Raspbian

    by packagecloud

    Support for LinuxMint and Raspbian LinuxMint and Raspbian are now officially supported by packagecloud! You can push and yank packages to both operating systems as you normally would. For example, to push file.deb to LinuxMint Rebecca: $ package_cloud push user/repo/linuxmint/rebecca file.deb Similarly, to push file.deb to Raspbian Wheezy: $ package_cloud push user/repo/raspbian/wheezy file.deb You can...

  • Infrastructure as code might be literally impossible

    by packagecloud

    UPDATE: 10/28/2015 Video of the talk is now available! This is the video and the slides from Joe Damato’s talk at Automacon 2015, titled “Infrastructure as code might be literally impossible”. This talk covers: package managers, puppet, chef, scary stories, and more! Video Slides

  • Announcing packagecloud Consulting Services

    by packagecloud

    We’re excited to announce packagecloud consulting services! We receive lots of email requests for help with packaging, build pipelines, automation, and software delivery. Check out our new services page for information on how we can help, initial rates, and get in touch with us! Deb and RPM packaging We’re experts at creating RPM and...

  • New Plans and Pricing!

    by packagecloud

    We’re excited to announce updated billing for packagecloud! These changes will allow most customers to upload a lot more packages while paying less money. Check out our new plans and billing FAQ on our pricing page. We’ll be following up with each customer via email to explain how the pricing changes will affect you....

  • APT repository internals

    by packagecloud

    Following up on our previous post about yum repository internals, this blog post will dive into the internals of APT repositories. Similarly, we’ll cover what each index file does and take a look at how a user can inspect and verify the metadata themselves. What is an APT repository? An APT repository is a...

  • yum repository internals

    by packagecloud

    This blog post will go into details on the internals of yum repositories by examining each of the index files created as part of yum repository’s metadata. We’ll cover what each index file means and take a look at how a user can inspect the metadata themselves. What is a yum repository? A yum...

  • Using dh-make to prepare debian packages

    by packagecloud

    This blog post will cover some basics about debian package names and version strings, and how to build debian packaging boilerplate using dh_make to streamline the creation of packages. Install the packaging essentials $ sudo apt-get install build-essential dh-make Understanding the package name and version Let’s assume we have an upstream source with the...

  • Announcing official support for Buildkite

    by packagecloud

    packagecloud is excited to officially announce support for Buildkite. Take a look at the updated docs with example configurations and information on how to push deb, rpm, and gem packages directly to packagecloud from your build process. The Continuous Integration tab on repository pages has also been updated to include Buildkite integration information. Buildkite...

  • Pruning packages using the API

    by packagecloud

    Since releasing the Packages & Versions API, several customers have used it prune packages in their repository, automatically yanking old packages as new ones are uploaded. This blog post will show an example of how to implement pruning yourself, using Ruby. Requirements To follow along, you’ll need a packagecloud.io account, an API Token, and...

  • Building RPM packages with rpmbuild

    by packagecloud

    This post will walk you through creating a RPM package from a simple hello world C program using rpmbuild. Setup On an RPM-based system, install the following programs: $ sudo yum install rpm-build Additionally, you can create an .rpmmacros file in your home directory, which rpmbuild can use for determining various settings. A helpful...

  • Announcing Web Delete

    by packagecloud

    We’re pleased to announce the ability to remove packages without relying on the CLI or constructing a request to the packagecloud API. Users can now delete packages directly from the web by visiting the repository page and clicking on the delete button associated with the package. How to delete a package from the web Step...

  • Building debian packages with debuild

    by packagecloud

    This post will walk you through creating a debian package from a simple hello world C program using debuild. Setup On a debian-based system, install the following programs: $ sudo apt-get install devscripts build-essential lintian Upload your Debian packages to a free repository in seconds. Sign up! The debuild tool debuild is a convenient...

  • Announcing Web Upload

    by packagecloud

    We’re excited to announce our web upload feature to the public. Users will now be able to upload packages directly to their public and private repositories from the web. How to upload a package from the web Step 1 - Select a repository and find the “Add a package” button. Step 2 - Choose a...

  • HOWTO: Set up a private gem server

    by packagecloud

    This post covers how to run a simple gem server to host your ruby gems. If you require the ability to push packages and host them, you can use something like the Gem in a Box Project. packagecloud.io is a hosted solution which allows you to push, host and manage gems in a secure...

  • Building Debian and Ubuntu packages with pbuilder

    by packagecloud

    pbuilder is a tool for building Debian and Ubuntu packages. You can use pbuilder to build packages for many different versions of Debian and Ubuntu. The main advantage of using pbuilder to build Debian and Ubuntu packages instead of debuild is that pbuilder builds Deb packages in a cleanroom environment. pbuilder does this by...

  • Building RPM packages with mock

    by packagecloud

    mock is a tool for building RPM packages. You can use mock to build packages for many different versions of CentOS/Red Hat and Fedora. The main advantage of using mock to build RPMs instead of rpmbuild is that mock builds RPMs in a cleanroom environment. mock does this by creating a chroot and performing...

  • Using apt-cacher-ng with SSL/TLS

    by packagecloud

    apt-cacher-ng is a write-through proxy that caches repository metadata and package indexes for other hosts, typically on the same network. It generally works out-of-the-box, except for when the repository is served over SSL/TLS, in which case special configuration is needed. This blog post will cover apt-cacher-ng basics, then how to set it up to...

  • Announcing the Package & Versions API

    by packagecloud

    You can finally list, filter, and view packages via the packagecloud.io API! Feel free to jump right into the docs: Packages “All” API Packages Filtering API Versions API Package API Or, continue reading for details and examples. A note about Pagination All of the API’s in this post (excluding the Package API) return a...

  • Working with Source RPMs

    by packagecloud

    What are source RPMs? A package is a collection of binaries, scripts, and associated data that is installed by your package manager. Packages are typically generated from source code and a set of a metadata written by the package maintainer. Occasionally, the source may by patched by the package maintainer at build time. A source...

  • Working with Debian and Ubuntu Source Packages

    by packagecloud

    What are source packages? A package is a collection of binaries, scripts, and associated data that is installed by your package manager. Packages are typically generated from source code and a set of a metadata written by the package maintainer. Occasionally, the source may by patched by the package maintainer at build time. A source...

  • Yum Cheat Sheet

    by packagecloud

    What is yum? yum is the default package manager for RPM-based linux distributions (CentOS, Fedora, RHEL, Oracle). It’s written in python and it stands for “Yellowdog Updater, Modified”, as it was originally called “yup”, the package manager for Yellow Dog Linux. Unlike it’s debian cousin, which uses various commands for package management, yum can perform...

  • Chef Conf 2015: Package Management & Chef

    by packagecloud

    These are the slides from Joe Damato’s talk at Chef Conf 2015, titled “Package Management & Chef”. This talk covers: packages, package managers, tips, tricks, and chef cookbooks for setting up secure package repositories. Presentation

  • APT Cheat Sheet

    by packagecloud

    Getting Started: What does APT do? APT is a set of core tools found inside the Debian operating system. It provides utilities for the installation and removal of software packages and dependencies on a system. apt-get / high level package handling utility apt-get is the command-line tool for handling packages and provides functions such as...

  • Cook your own packages: Getting more out of fpm

    by Mathias Lafeldt

    Guest post This is a guest post by Mathias Lafeldt, an Infrastructure Developer living in Hamburg, Germany. Mathias likes to blog and tweet about all things infrastructure automation. One of the areas he’s passionate about is packaging. While he knows a lot about building Debian packages, he loves to use packagecloud for hosting them. Introduction...

  • Announcing packagecloud:enterprise

    by packagecloud

    packagecloud:enterprise 1.0 is now available! packagecloud:enterprise is a completely stand-alone, on-premises installation of packagecloud.io. It can be installed on physical hardware or in the cloud and provides all the amazing features you already love about packagecloud.io: fine grained access control private repositories collaboration multi-distribution support build automation Chef and Puppet modules packagecloud:enterprise is an ideal...

  • Puppet Camp LA 2015 presentation slides

    by packagecloud

    These are the slides from Joe Damato’s talk at Puppet Camp LA 2015, titled “Package Managers and Puppet”. This talk covers: packages, package managers, puppet, and tips, tricks, and puppet modules for setting up secure package repositories. Presentation

  • DNS outage post-mortem

    by packagecloud

    This past Monday, our DNS provider, DNS Simple, experienced a distributed denial of service attack which took down their DNS resolution service. You can find more information about the DNS outage at our provider here. Our monitoring alerted us that there was a problem with domain resolution and we began investigating. Our DNS provider...

  • HOWTO: GPG sign and verify RPM packages and yum repositories

    by packagecloud

    This blog post will explain how GPG signatures are implemented for RPM files and yum repository metadata, as well as how to generate and verify those signatures. This blog post also explains what the purpose of the pygpgme python library is, how it is used for verifying GPG signatures in RPMs and yum repository...

  • Debugging an MRI Ruby GC segfault caused by a buggy RubyGem

    by packagecloud

    This blog post examines a tricky bug in the incredibly useful libarchive-ruby-swig ruby gem. This gem wraps the libarchive C library which can be used to read and write archives of many different formats. The bug in the C++ code of the RubyGem itself causes Ruby’s GC to mistakenly free an in-use object which...

  • Announcing official support for Jenkins, CircleCI, and TravisCI

    by packagecloud

    packagecloud is excited to officially announce support for Jenkins, CircleCI, and TravisCI. Take a look at the updated docs with example configurations and information on how to push deb, rpm, and gem packages directly to packagecloud from your build process. If you use a continuous integration system other than Jenkins, CircleCI, or TravisCI, let...

  • HOWTO: GPG sign and verify deb packages and APT repositories

    by Joe Damato

    GPG can be used to create a digital signature for both Debian package files and for APT repository metadata. Many Debian-based Linux distributions (e.g., Ubuntu) have GPG signature verification of Debian package files (.deb) disabled by default and instead choose to verify GPG signatures of repository metadata and source packages (.dsc). The setting which...

  • yum and createrepo generate incorrect metadata

    by Joe Damato

    createrepo 0.9.9 uses a library called rpmUtils which is provided by yum. This library contains code which parses version strings from an RPM package. This code contains a bug which results in incorrect version and release strings being output by rpmUtils and further results in createrepo generating incorrect metadata for several packages. CentOS 6...