This page describes how to contribute to AppArmor, both upstream and in Debian packages.
There are several ways to do this:
Enable AppArmor, enforce a bunch of profiles, test and report bugs and/or happiness.
Update profiles shipped in apparmor-profiles-extra to the latest upstream version
Fix bugs in the packages we maintain
Fix bugs in the apparmor package
Fix usertagged bugs
Read, organize and update the Documentation and the progress tracking page
As a Debian package maintainer, use dh_apparmor to import a profile to your package
Debian / Upstream relationship
We want to keep our delta with upstream as low as possible. If you want to submit a new profile or modify an existing one, this should be done upstream first. This process will also allow for better cross-distribution sharing and maintenance of profiles.
Every distribution has adopted a different strategy to handle their profiles. Most of Debian's AppArmor profiles are imported directly from the upstream repositories. The development of profiles takes place in Git: https://gitlab.com/apparmor/apparmor-profiles,
Ubuntu and openSUSE enable AppArmor by default. For Ubuntu, who base their profiles on the same upstream source, once a profile is "ready", it is taken out of the profile development branch and inserted directly into the corresponding package: e.g. the AppArmor profile for evince is included into Ubuntu's evince package.
In Debian, on the long run, a profile should also be delivered in the package that ships the software it is confining. This is already the case for some packages. However, for now package maintainers can still rely on the Debian AppArmor packaging team which provides additional profiles via the apparmor-profiles-extra package.
Debian source package
Debian binary package
Ubuntu source package
Ubuntu binary package
Note: we merely use evince and libvirt as example packages in this table. The libvirt upstream tarball includes an own AppArmor profile, whereas the evince upstream tarball does not.
Contribute to upstream AppArmor profiles
Upstream AppArmor profiles live in many different repositories. This documentation focuses on contributing to profiles that live in the upstream apparmor-profiles repository, but the procedure is quite similar for the other repositories.
If you want to contribute to existing/upstream AppArmor profiles, you need to:
Generate and update your profiles: see AppArmor/HowToUse#Edit_AppArmor_profiles
Test your profiles: see AppArmor/Debug
create an account on GitLab.com
- upload a SSH key to be able to push your changes.
install the Git version control system: sudo apt install git
Fork the upstream project: https://gitlab.com/apparmor/apparmor-profiles/forks/new
git clone your brand new fork.
Create a topic branch git checkout -b BRANCHNAME origin/master
Once done, you can commit the changes to your local repository: git add -p && git commit
Push the changes to your remote repository on a dedicated branch: git push -u origin BRANCHNAME
- Then you will see a link that proposes you send a merge request through the web interface.
Get in touch with upstream
AppArmor upstream mailing list - anything that is not a merge request
file a bug against apparmor on Launchpad - to get a new profile into the upstream apparmor-profiles package (see also Launchpad tutorial)
Get in touch with the Debian AppArmor Packaging team
To update Debian profiles from upstream, please contact the packaging team:
email@example.com mailing list
#apparmor IRC channel on irc.oftc.net
report a bug with the usertag "new-profile" or "modify-profile"