New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Binary packaging for distros #864
Comments
First read through, those don't look crazy. That list is really only supporting two platforms, with minor variations among the flavors of those platforms (init scripts, dependency package names, versions on older releases like EL5 and Ubuntu 12.04 LTS). We'd need to work out the dependencies, what's provided by the vendor already, what's provided but too old to use, and then how to resolve that. I haven't looked at any existing binary packages in about 12-18 months but I can do that this weekend. Any documentation about how they're built right now? |
I think the only bits (at least in graphite-web) currently involved in packaging are |
P.S. I think that @thorrsson has started to dig into the rpm stuff already, so please be sure to sync up before duplicating efforts. |
I can say that support 0.9.13 in Ubuntu 12.04 and Debian 6 will be quite hard. AFAIK Ubuntu 12.04 has only Django 1.3 - http://packages.ubuntu.com/precise/python-django and Debian 6 has Django 1.2 - https://packages.debian.org/squeeze/python-django and 0.9.13 requires Django 1.4 |
Do we want to have the files live in the same directories across platform or stick to debian/ubuntu standards vs redhat standards. Sometimes they don't differ much but mainly configs they differ. |
I'm using 0.9.12 on Ubuntu 12.04 by judicious application of hw-cookbooks/graphite. Would it be crazy to go down the path of an omnibus package install of graphite and all its dependencies? I think most of what the Heavy Water graphite cookbook installs by way of python packages could be done in an embedded python in an omnibus install. |
IMHO https://github.com/hw-cookbooks/graphite is good candidate for filling 'Install by Chef' docs section. Binary package implies installation of some amount deb or rpm packages and that's all. You can transfer these packages to own repo and install it even without Internet access - and it must work after that. |
👍 to not building omnibus packages if it can be avoided. It'll inflate packages considerably (where do you dry the line in the stack?) and it'll increase complexity. @deniszh Have you already started digging into deb packages? |
I'd prefer to provide the debs via a launchpad ppa. 90% of the challenge there is just following debian packaging guidelines. I'm already acquainted with For the debian stack, I recommend we focus on Ubuntu 14.04 first and try to get into Utopic (14.10). Then we can figure out a backporting strategy for Ubuntu 12.04, Debian 7 & Debian 6. Do we want to support both apache and nginx webservers? mod_python? uwsgi? gunicorn? I've personally liked boring apache+mod_python, but I understand that's not the coolest tech. For carbon, we'll probably want to support sysv-init, upstart & systemd. It'll almost certainly need tweaked |
I would also prefer to avoid omnibus packages, as well as using external cookbooks as our build specification. Anything we release should be managed in-tree imho. |
I think we should start w/ HTTPD + mod_python if it's the simplest supportable configuration; it doesn't need to be cool. It's easier to pick one target and increment than to try to shotgun them all. It'll also make reusing logic a little easier, so that even though we can't reuse post/pre scripts we can make sure that the packages do the same things on different platforms. |
Oh, and (unfortunately) 👍 to supporting sysv-init, upstart, and systemd. It's a pain, but it's an upfront pain. Quick status check for the names that have chimed in, who's working on what specifically already? Would like to avoid duplicating effort or competing implementations if we can suss out who will tackle what. |
Oh, I'm working on |
It sounds like @thorrsson and @mckern should sync up on rpm work and @josephholsten is taking lead on debs. Anyone else that wants to pitch in, please do, but touch base with those gentlemen first. Thanks everyone! 💖 P.S. I would prefer that we target apache + mod_wsgi over mod_python unless someone has a good reason not to. Our own example vhost config uses mod_wsgi and our documentation covers mod_wsgi for virtualenv installs. We currently have no documentation (other than a passing mention) for mod_python; I have no real arguments against standardizing our packages on it, but we should also add an example config and documentation for mod_python if we wish to go down that route. |
/me discards omnibus idea (Update: dh_python deprecated in 12.04+, apparently. Directs to using dh_python2) |
HTTPD + mod_wsgi sounds like a plan. @thorrsson, how's things on your end? |
got it, mod_wsgi it is. |
I'm working on the debian packaging in #865. My debian-specific notes will be going there. |
Hey folks,
Hi @mckern! This is where I am at as of last night: I can produce an RPM that is targeted at python 2.7 and manages Carbon and On Sat, Aug 23, 2014 at 5:24 PM, Ryan McKern notifications@github.com
|
Currently I'm installing Graphite on my prod envs using deb packages built
|
It seems to me that having a real build spec for debs would be a good thing. But to be honest, I haven't followed the development of fpm closely to know how well a job it does at porting one format to another. |
As someone who has previously deployed Graphite via packages (rpms, then debs, now straight python packages installed by pip), I think this thread is headed in the right direction. Some thoughts:
|
@deniszh The hw-cookbooks/graphite cookbook is what I intend on using as the recommendation for the 'install-via-chef' section of the docs, though this is heavily caveated. First, is that last I checked a week or two ago, they are looking to cut a new release that is much more library/provider oriented than the current version. Second, is that if we get the packaging more sane, that could simplify the cookbooks needed overall. |
So, now that I've dropped a bunch of random thoughts, let me approach this a different way. Pre-caveat: I believe strongly in OS packages wherever applicable. I don't love the proliferation of every language gets it's own package manager. So here goes: What problem are we trying to solve by packaging Graphite into OS packages? As is probably obvious from my above comment, I used to invest a lot of effort into packaging Graphite. But I also invested an equal amount of effort into making sure my configuration manager understood what the package was doing so it could "correct" it for my deployment (eg, move /opt/graphite/storage/ to a larger partition). Each thing the package did in a roughly 'standards' way, I had to go back and tweak to make things work better for my particular deployment. Every time Graphite needed to be upgraded, I was amazed at the amount of changes that went into both packaging and configuring it vs. the previous version. Ultimately, I ended up in a place where I just mirror the pypi tarballs and install them using pip, then perform my configuration tasks as needed. Somehow, it ends up feeling simpler, though I agree it's a lot of work repeated community wide. Anyways, I think it's worth being clear what goals we are trying to achieve by creating 'the way' of installing Graphite; to make sure that we actually achieve them. Packaging won't in and of itself make deploying Graphite meaningfully easier, given that much of the challenge of installing it comes after the bits are actually installed onto the machine. EDIT: PS, to make sure this is super clear: I am pro-binary packages for Graphite. But it'd be a good idea to align on what problems we can solve, vs which we cannot. We can likely solve "make getting the bits on the machine" more like what Admins are used to w/r/t to 'sudo aptitude install graphite-web' or something, but probably not make it particularly easier to install Graphite. |
On Sun, Aug 24, 2014 at 09:23:17AM -0700, Brian Hatfield wrote:
IMHO we're trying to solve the problem of installing Graphite for users
I don't expect anything beyond this, i.e. we should not lean on our Jason Dixon |
Graphite is popular enough that it's already provided in official distro packages (at least for debian and ubuntu). IMO, if we want to provide distro package files we have to work with debian / ubuntu / centos people to write packaging scripts they're happy with directly in our repos. This way distro packages and user-built packages will look the same and it'll be easer for people to switch from an official package to a custom one. So, can we get in touch whith Debian / Ubuntu / Centos developers to have them bless the results of what we're doing? Or look at what they've done in official repos and start from there? We need to get to a point where distro developers don't have to maintain packaging patches. Also let's hear what they say about supporting older OS versions than current stable/LTS… I'm not sure 12.04 / debian 6 is doable, might have to check. (and if they're all in favor of dropping the What I did for graphite-api is an omnibus package (fpm) that provides all dependencies, completely isolated from system packages and with an init script that starts a service with gunicorn. I left apache/nginx configuration instructions in the docs. Debian people seem to be interested in having it packaged in sid+backports, in which case I'll merge whatever pull request they make to get a |
@brutasse, only 14.04 and 14.10 ubuntu has current graphite packages. RHEL / CentOS / Fedora / Debian 6 / Debian 7 / Ubuntu 12.04 are not. And yep, in Ubuntu there's no /opt/graphite prefix, all packages are installing to appropriate (by distro) places. /etc/graphite/local_settings.py looks odd to me, but good from distro perspective. |
@thorrsson Have you got this work in a branch somewhere? And have you got the .spec files you've created available anywhere? |
Current distro packaging for Debian/Ubuntu can be found here: |
Here's something that Fedora is cooking up: |
Hey folks, On Tue, Aug 26, 2014 at 10:06 AM, Ryan McKern notifications@github.com
|
Taking a look at the Fedora RPM spec files today, and experimenting to see if they're of use/benefit here. Will try building across all the requested RPM platforms, and will report back. |
🔥 |
@obfuscurity thoughts on the use in Fedora of the |
@mckern I've never been fond of the |
Usually denotes that something is specifically going to drop libraries into your python libpath 9r requires python to be of any use (much like the |
Can we reconcile between Fedora's prefix requirements and a clean upgrade path for existing RPM users? |
Where can I find some existing non-Fedora RPMs or spec files? Using metadata like Or am I misunderstanding, and you're proposing that we make it possible to upgrade from Fedora/EPEL graphite/carbon/whisper packages to ones provided first-hand by the Graphite project? |
@obfuscurity Any followup to the outstanding questions ^^ ? |
@mckern Hmm, I don't know about the specs. I would have assumed that someone on this thread might know where to find them. @bmhatfield perhaps? I would love to bring in the official distro maintainers and get their $0.02 on this effort. I worry now that this is seen as duplication of their work, but I'd still rather have an officially maintained package hooked into our build (and tests /cc @jssjr) than force users to wait on the upstream maintenance cycles. |
I may have misunderstood; I was working from the assumption that there were already pre-existing but less-than-immaculate packages. |
Can anyone take a look at graphite-project/carbon#355 with me? |
Any reason you can't Omnibus Graphite? there's only really a few targets and trying to address many versions will only complicate life. |
Not a fan of omnibus, I'd rather be a good upstream and work with distributions to get our software included in their repos, and make it easy for our users to install on the various distros with somewhat reasonable native support. Omnibus encourages curl ...| sh, which makes me a very sad Keanu. |
I'm actually a member of the fedora-admin community and have been touting On Monday, January 12, 2015, Jeff Schroeder notifications@github.com
|
@sebito91 That would be great, and now's the time to pitch in. Per graphite-project/carbon#355, it seems that our build tarball is missing some distro stuff. Admittedly, I built it on a Mac, but I'm surprised that would matter. We can't very well make multiple tarballs available, one per distro/platform, for a single release (for PyPI). |
PGP: EDC2 BF61 4B91 14F2 AAB4 06C9 3744 7F3F E411 0D3E
|
@sebito91 Awesome. |
Any chance to have 1.0.2 RPMs for centos anytime soon? |
@ArturGajowy Do you mean 1.0.2 in EPEL 7 repository? For that to work Django will need to be updated first. |
Does this mean "just forget it, the python world uses pip"? |
@ArturGajowy I'm still not really sure which packages you are referring to. |
I'm quite sure pip does not install in |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
The project has been pretty slack in the past about making sure the binary packages work properly and are supported across the most popular versions. I don't think we need to go crazy, but it would be nice to set some goals, achieve them in
master
, and then backport the necessary bits for0.9.x
.Here's a shopping list of the distro versions I'd like to see us support. If I'm crazy or there are dependency issues (i.e. Python or Django), let's talk about that here.
/cc @thorrsson @bmhatfield @robbkidd @mzupan @mckern @rwoolley, who have all volunteered to help with packaging or have worked on Graphite packaging in the past.
/cc @brutasse @SEJeff @bitprophet
P.S. This issue is currently only open in graphite-web, but obviously we'll need to consider carbon, whisper and ceres as well.
The text was updated successfully, but these errors were encountered: