3 ms·
Hi! I maintain a "curl | bash" installer script [1][2]. such as only working on specific variants of Ubuntu, with specific packages installed in speci
by cbr 10y ago
Hi! I maintain a "curl | bash" installer script [1][2].
such as only working on specific variants of Ubuntu,
with specific packages installed in specific version,
and/or RedHat
Our installer is capable of automatically installing dependencies on current versions of Debian, Ubuntu, and CentOS. If you're running something else it prints out "This doesn't appear to be a deb-based distro or an rpm-based one. Not going to be able to install dependencies. Please install dependencies manually and rerun with --no-deps-check.", which seems pretty reasonable to me?
submit this data to that platform as an
debian/{control,etc} to make a .deb or specfile for
.rpm or PKGBUILD or whatever, and use the platforms
_build tools_ to generate a platform specific package
- be a package mantainer if you have to
Building a binary package for ngx_pagespeed isn't really practical. It needs to depend on nginx, but nginx doesn't have an ABI, so it needs to be built from source alongside your existing nginx or as part of a new nginx install. Getting into the distributions, so that they can build the ngx_pagespeed module at the same time as they build their main nginx would work, and is somewhere I would like to be eventually, but requires a lot of coordination with distros.
Another side effect of telling your users to curl | bash,
is I wont ever use your software. You didnt make the
effort to do the right thing with packaging, why would
you have done any better for whatever it is youre trying
to do with your shit software?
I do think what we've done in this case is "the right thing" in terms of how we should be spending our development time. Our installation page does still offer manual install instructions, however, for people who would rather not run a script.
[1] https://developers.google.com/speed/pagespeed/module/build_ngx_pagespeed_from_source https://developers.google.com/speed/pagespeed/module/build_n...
[2] https://ngxpagespeed.com/install https://ngxpagespeed.com/install
- antocv 10y ago> Our installer is capable of automatically installing dependencies on current versions of So you dirty the system where its supposed to be installed, a server, with gcc, make and friends? > . If you're running something else it prints out "This doesn't appea State so on your documentation/page before telling the user curl | bash, as I wrote in another post here, that is nice. Your script does not support transactionional installations, as it is it can break at any point in the script and leave the target system broken/dirty. With a simple PKGBUILD youd also have solved the "binary ABI" part. If it really is tedious to coordinate with several distros, you can take a shortcut and dont deliver a "pkgspeed-for_nginx_module-1.2.3@v1.2" package but instead a "pkgspeed-1.2.3" which conflicts with the normal nginx package and thats it.
- cbr 10y agoSo you dirty the system where its supposed to be installed, a server, with gcc, make and friends? That's the way nginx is traditionally installed, and we're shipping an nginx plugin. State so on your documentation/page before telling the user curl | bash The first thing the install script does is check if you're on a supported system, and if not it exits. Since the vast majority of people running the script are on supported systems, this seems better than putting a lot of warnings up front. Your script does not support transactional installations, as it is it can break at any point in the script leave the target system broken/dirty By default the script only builds ngx_pagespeed, and doesn't install it. If you ask it to handle the install, it call's nginx's "make install", which again is the standard way you install nginx.
- antocv 10y ago> That's the way nginx is traditionally installed No. That is not how nginx is traditionally installed. You misunderstand basic Linux package management and build systems, which is why you end up in this mess. But thats okay, world is keepin on spinnin. To each their own.