Packaging Guide

The transportation of dangerous goods implies a delicate process that puts a number of interests as risk. UN packaging requirements involve a series of protocols to guarantee safety during the transportation and storage of these goods.

What is UN packaging testing?

DOE Packaging and Transportation Safety Guide. Non-Governmental Standards. American Society of Testing and Materiel (ASTM) The American Society for Testing and Material develops and maintains commercial packaging standards that are widely followed and referenced throughout the commercial packaging area. Welcome to the Ubuntu Packaging and Development Guide! This is the official place for learning all about Ubuntu Development and packaging. After reading this guide you will have: Heard about the most important players, processes and tools in Ubuntu development.

  1. UN packaging requirements involve a series of protocols to guarantee safety during the transportation and storage of these goods. What is UN packaging testing? UN packaging testing is a series of tests and requirements to determine the integrity and safety of the package when facing various situations.
  2. This guidance is a summary of the required statements for food labels under the Federal Food, Drug, and Cosmetic Act and the Fair Packaging and Labeling Act.
  3. Evidence Packaging: A How-To Guide Terry Sp ear, John Rush, Jerry Massetti, Jim. Weigand and Mark Traughber. California Department of Justice Bureau of Forensic Services.

UN packaging testing is a series of tests and requirements to determine the integrity and safety of the package when facing various situations.

These UN packaging requirements focus on goods that are considered to be dangerous, and their level of stringency depends on the risks posed by the transported goods, which are divided into different groups based on their dangerousness.

The main goal of UN certified packaging is therefore to prevent any chances of leaks or accidents involving these goods.

A series of packaging tests are applied based on the types of goods, in order to test the protective capabilities of the packaging when facing unforeseen events.

The organization in charge of establishing and regulating these requirements is the United Nations Economic Commission for Europe (UNECE).

Packaging

UN packaging requirements and the certification process

As the dangerousness of transported substances rises, the UN packaging requirements become increasingly stringent.

The first step to become a UN approved packaging supplier is to establish the category of the products to be tested. Existing categories are:

  • Type 1: explosives
  • Type 2: gases
  • Type 3: flammable liquids
  • Type 4: flammable solids
  • Type 5: oxidizing agents and organic peroxide
  • Type 6: toxic and infectious substances
  • Type 7: radioactive substances
  • Type 8: corrosive substances
  • Type 9: miscellaneous dangerous goods

Once the categories have been determined, testing is performed based on the characteristics of each type of good.

Tests required to obtain a UN certified packaging

Drop Test

This test verifies the packaging’s ability to protect goods in free fall, which may occur during transportation.

The test is performed using a Drop Tester that can perform flat, edge and corner drops, as outlined by the UN packaging requirements.

Leakproofness test

This is performed on any packaging designed to contain liquids and consists of submerging the packaging underwater while applying some internal pressure.

Depending on the category of the goods, a different pressure is applied, and the test is considered to be successful if the package experiences no leaks.

Pressure test

During the transportation process, goods may be subject to different degrees of pressure; therefore, it is vital to know the protective ability of the packaging against this force.

This is particularly necessary for goods that will face the hazards of air travel.

Stacking test

The merchandise distribution cycle usually includes stacking, and a stacking test aims to verify how the package can withstand these conditions.

The test consists of applying a pressure to the package that is similar to the total weight that stacked packages would exert. This pressure is established among the UN packaging requirements with the goal of verifying that the package is capable of withstanding stacking, and this is tested for at least 24 hours.

Burst test

This step follows the pressure test. In this case, the pressure of the first test is increased by 20% to certify that, even under these conditions, the packaging is capable of protecting the goods.

Piercing test

This tests the resistance of the package to sharp objects that try to pierce it at different speeds and forces. This test is considered to be successful if the sharp object fails to breach the goods.

In addition to these tests, which are performed for any goods that are considered as dangerous by the UN, some goods may also be subjected to specific tests, as the leak test or the Hot Water Bath.

In order to obtain UNECE certified boxes, any of these tests is performed with the packaging and the product ready to be transported, so that the tests come as close as possible to the real transportation conditions.

After performing the required tests, a report is prepared specifying the tests performed and whether they were successful. Then, it is filed with the corresponding national authority, which may give the packages the status of UNECE approved boxes.

UNECE recommendations for the transportation of dangerous goods

In addition to establishing the UN packagingrequirements, the organization has outlined the main recommendations for the transportation of dangerous goods, with the most recent agreement having been adopted in 2019.

Contained in two volumes, the recommendations touch on different subjects: from the different criteria to establish the category of the goods (accompanied by a detailed description of each category) to suggestions when packaging goods.

Packaging guidelines fda

Other considerations for UN approved packaging

There are other things to be considered in regard to UNECE certified packaging. For example, it is essential to know in-depth the mark or label that the package is assigned when it is considered that it has fulfilled the UN packaging requirements.

Packaging Guidelines Standards Nmfc

This code includes:

  • The UN certified packaging symbol
  • The UNECE codes for the type of packaging and material with which it has been
    manufactured.
  • The packaging group, which determines the dangerousness of shipped goods.
  • The maximum weight for which it has been tested
  • Year of manufacturing
  • Manufacturing origin
  • The manufacturing code, that specifies who the UN approved packaging suppliers
    are or who have tested it.

Knowing this information allows for a safe transportation, since UN boxes would no longer be effective if used to transport a weight that is higher than the one they have been tested for.

Packaging Guide

Do you need help complying with UN packaging requirements?

At Safe Load Testing we can help you. Get in touch with us and we will work to guide and walk you through the process.

This guide shows how to make software available through Zero Install. We will start by packaging Blender, an open source 3D modelling and animation program.

You should already be familiar with the general operation of Zero Install. If not, start by reading the Introduction tutorial.

We assume here that a binary release already exists (perhaps published by someone else) and you want to make it available through 0install. If you want to publish your own programs, you might also be interested in 0release, which generates a release from a Git repository.

Tip

To check whether someone has already packaged a program, use the 0install search command to search all known existing feeds.

Tutorial¶

To make a program available via Zero Install you need to create an XML 'feed' file, describing which versions are available, where they can be downloaded, and what other software they require. In this tutorial, we'll use the graphical 0publish-gui application to create this file. If you don't want to use a graphical interface (for example, because you want to publish new versions using a script) then you should read the command-line tutorial instead.

Start by getting 0publish-gui in the usual way:

This program requires GTK >= 2.6 and Python >= 2.4 (these are not fetched using Zero Install at present).

Note

On Windows use 0publish-win instead.

Run the program, giving it the name of the feed file you want to create, which should be named after the program:

A window appears prompting you to enter some details about the program. Here, I've copied the details from the project's freshmeat.net page. The Icon field is optional, but I've added one anyway:

The next step is to add one or move versions of Blender to the feed, which we can do from the Versions tab using the Add Archive button:

Enter the URL of the archive for the new version (copy the link from the Blender site). This URL tells other people where to get it, so it must be present. If you've already downloaded the archive then choose it in the Local copy section. Otherwise, click on Download to download it now:

The top-level items in the archive are displayed in the Extract area. The reason for this is that there are two common ways of laying out archives. Some people put the files in the archive directly, while others create an extra top-level directory. In blender's case, the archive contains a single top-level directory called blender-2.42a-linux-glibc232-py24-i386-static.

The reason this matters is because we need each version to have a similar structure. We don't want a directory name that's going to be different each time, so we select to extract just the contents of this directory. 0publish-gui is pretty smart about guessing whether to extract everything or just a sub-directory, so just go with the default.

Now we are prompted to enter some extra information about this version. The most important field to set is Main, which is the executable program inside the archive that is run when someone tries to use your feed. The drop-down menu shows the available executables.

The License and Released fields are just for information. Released is the date you added this version to the feed, so the default of today's date is correct. The OS and CPU fields prevent people from trying to use this version on incompatible machines. The Docs field can be used to say which directory contains the documentation, if any.

I've left Stability set to (inherit), which means that the rating will be inherited from any containing group. Since we don't have a group, it will get the default value of Testing. You can also inherit the other fields (by leaving them blank), although OS and CPU are inherited together (you can't inherit one and not the other). Groups are useful when you have lots of versions, so you don't have to keep specifying the same information for each one.

Packaging Guidelines Pdf

Finally, the shaded ID field displays a cryptographic digest of the archive's contents. When other people use this feed to get Blender 2.42, this is how they know that they've downloaded exactly the same files as you have (in case an attacker replaces the download with a modified version).

You'll now see your new version shown in the list of versions, along with the single archive, which says where to get it. The names in parenthesis show which attributes we set. We can try out the interface by clicking on the Save and Test button:

This runs 0install run on our XML file, in the usual way. Note that version 2.42 is already cached; it was added when we clicked OK in the Add Archive box. Click on Execute and check that it runs.

It all works perfectly, so we'll publish this feed on the web for other people to use. To do this, we need to sign the feed so people can check that it's really from us. Go to the Publishing tab and choose your GPG key from the menu. If you don't have a key, click on the Add button to create one now.

When generating a key, you'll be asked a few difficult-looking questions; if unsure, just accept the defaults offered. Enter your name and e-mail address when prompted, and choose a good passphrase to protect the key:

There's one final thing left to do: we need to decide where on the web we'll publish the XML file. Enter the URL that people will use to download your feed in the section titled This feed's URL. Try to pick a location that won't change, as people will keep coming back here for updates.

Click on Save to save it again. This time, you'll be prompted to enter your key passphrase (the one you chose when creating the key above):

The final result of all this is three files: the signed XML feed file itself, listing our single version, your GPG public key, which lets people check the signature, and an XSLT stylesheet, in case anyone wants to view the feed in their browser.

Upload all three files to your web-server. I put mine in http://0install.net/2007/3rd-party/. Now anyone can run Blender with the command:

Check your feed!¶

It's surprising how easy it is to forget to set the right permissions, etc, so check your new feed! FeedLint is an easy first step:

Groups and dependencies¶

Packaging Guide

If the software depends on something else (e.g. a library) then use the Add Requires button to specify this. For example, 0publish-gui depends on ROX-Lib, which I specified like this:

This ensures that .../ROX-Lib2/python is in PYTHONPATH. When 0publish-gui does import rox, the import thus uses the directory .../ROX-Lib2/python/rox.

Packaging Guidelines For Shipping Freight

When you want to add more versions, you should use the Add Group button to create a group. Make sure both versions are inside the new group (use drag-and-drop to move them). Then you only need to set the license, main, OS and CPU settings in one place. You can also share dependencies using groups.

Trouble-shooting¶

I can't find a generic binary for the program I want to package!

Popular projects usually provide a 'generic' binary tarball, which works on most Linux distributions. This is the best archive to put in the feed. If there isn't one, it might mean that the developers couldn't get a single binary to work on multiple distributions, or it might just mean they haven't tried.

Often, a Red Hat RPM will work just fine on Debian (e.g. the LyX feed), or a .deb will work on Red Hat, etc. If there are several options, pick the one for the distribution which is furthest behind (e.g. Red Hat rather than Fedora). Packages for old systems often still work with newer ones, but not the other way around.

My program assumes it's running from /usr/games.

Games have an annoying habit of trying to cd to a hard-coded directory in their start-up script. You could try asking the author to fix it (cd '$(dirname $0)' would work just as well). It's also possible to patch the download using a <recipe> element, but the GUI doesn't provide an interface for this. The trick here is getting the ID right; you need the digest of the directory structure after the patch has been applied. 0install digest can help here.

Further reading¶

Example: Find
Find is a Python program with a dependency on a Python library. This example shows how to depend on other components.
Example: Inkscape
Inkscape is distributed as a binary RPM (among other formats). This guide shows how to publish these RPMs so that they can be run using Zero Install (by users without root access or on Debian systems, for example).
Example: ROX-Filer
ROX-Filer is a C program, which requires different binaries for different platforms. These binaries are built and published in interface files maintained by different people. Using the injector's feed mechanism, users only need to use the main ROX-Filer interface and will automatically get a binary for their platform, from the maintainer of that binary.
0publish
A command reference for the 0publish command.
Compiling with SCons and GTK
Now that we've made SCons available through Zero Install, we can use it in our build scripts. This example shows how to build a GTK application written in C using Zero Install to get the build tool and the header files automatically.

Comments are closed.