Useful bash scripts to download all rpms of a project.

Don't judge this set of fugly scripts too harsh. They're very useful!

rpmResolver takes a name of a package (my understanding is that the package has to be already installed on the system) and works out a space-separated list of its dependencies. This script is ripped off Jeff Johnson's SO answer.

rpmDownloader takes a name of a package, resolves its dependencies using rpmResolver and then downloads all dependent packages using dnf. One thing I noticed is that the dependencies might be quite heavy. A hello world website written in go actually depends on 150 MB of packages, so you probably don't want to deploy go websites using this approach (A single go binary will rarely weight more than 30 MB!)

I plan to implement a script to scp these rpms onto a machine and install them there, which hopefully will mean that the application works on the deployed system (there's a warning about this in the linked SO answer).

Happy deployments!

PS

In case you're interested, these are all the rpms, which were installed on the system with a minimal website written in go:

(1/79): basesystem-11-1.fc23.noarch.rpm 51 kB/s | 9.6 kB 00:00
(2/79): pcre-8.39-1.fc23_8.39-2.fc23.x86_64.drpm 124 kB/s | 24 kB 00:00
(3/79): ca-certificates-2016.2.7-1.0.fc23.noarch.rpm 234 kB/s | 425 kB 00:01
(4/79): coreutils-8.24-7.fc23.x86_64.rpm 617 kB/s | 2.8 MB 00:04
(5/79): crypto-policies-20151104-1.gitf1cba5f.fc23.noarch.rpm 289 kB/s | 30 kB 00:00
(6/79): fedora-release-23-1.noarch.rpm 280 kB/s | 16 kB 00:00
(7/79): fedora-repos-23-1.noarch.rpm 453 kB/s | 78 kB 00:00
(8/79): filesystem-3.2-35.fc23.x86_64.rpm 606 kB/s | 1.0 MB 00:01
(9/79): gawk-4.1.3-2.fc23.x86_64.rpm 517 kB/s | 1.0 MB 00:02
(10/79): binutils-2.25-17.fc23.x86_64.rpm 565 kB/s | 5.6 MB 00:10
(11/79): cpp-5.3.1-6.fc23.x86_64.rpm 588 kB/s | 8.3 MB 00:14
(12/79): glibc-2.22-17.fc23.i686.rpm 593 kB/s | 4.3 MB 00:07
(13/79): glibc-2.22-17.fc23.x86_64.rpm 563 kB/s | 3.6 MB 00:06
(14/79): gcc-5.3.1-6.fc23.i686.rpm 615 kB/s | 17 MB 00:29
(15/79): glibc-devel-2.22-17.fc23.i686.rpm 588 kB/s | 914 kB 00:01
(16/79): glibc-devel-2.22-17.fc23.x86_64.rpm 499 kB/s | 913 kB 00:01
(17/79): glibc-headers-2.22-17.fc23.i686.rpm 483 kB/s | 496 kB 00:01
(18/79): glibc-headers-2.22-17.fc23.x86_64.rpm 525 kB/s | 496 kB 00:00
(19/79): gmp-6.0.0-12.fc23.i686.rpm 508 kB/s | 424 kB 00:00
(20/79): gmp-6.0.0-12.fc23.x86_64.rpm 551 kB/s | 282 kB 00:00
(21/79): golang-1.5.4-1.fc23.x86_64.rpm 583 kB/s | 1.2 MB 00:02
(22/79): gcc-5.3.1-6.fc23.x86_64.rpm 520 kB/s | 19 MB 00:37
(23/79): glibc-common-2.22-17.fc23.x86_64.rpm 547 kB/s | 12 MB 00:21
(24/79): go-srpm-macros-2-3.fc23.noarch.rpm 133 kB/s | 8.0 kB 00:00
(25/79): grep-2.22-6.fc23.x86_64.rpm 549 kB/s | 275 kB 00:00
(26/79): isl-0.14-4.fc23.i686.rpm 583 kB/s | 511 kB 00:00
(27/79): golang-src-1.5.4-1.fc23.noarch.rpm 557 kB/s | 3.6 MB 00:06
(28/79): isl-0.14-4.fc23.x86_64.rpm 559 kB/s | 490 kB 00:00
(29/79): keyutils-libs-1.5.9-7.fc23.i686.rpm 449 kB/s | 45 kB 00:00
(30/79): keyutils-libs-1.5.9-7.fc23.x86_64.rpm 413 kB/s | 45 kB 00:00
(31/79): kernel-headers-4.5.7-200.fc23.x86_64.rpm 488 kB/s | 1.0 MB 00:02
(32/79): krb5-libs-1.14.1-6.fc23.i686.rpm 442 kB/s | 858 kB 00:01
(33/79): libacl-2.2.52-10.fc23.i686.rpm 343 kB/s | 32 kB 00:00
(34/79): libacl-2.2.52-10.fc23.x86_64.rpm 320 kB/s | 32 kB 00:00
(35/79): libattr-2.4.47-14.fc23.i686.rpm 250 kB/s | 24 kB 00:00
(36/79): libattr-2.4.47-14.fc23.x86_64.rpm 225 kB/s | 24 kB 00:00
(37/79): libcap-2.24-8.fc23.i686.rpm 351 kB/s | 53 kB 00:00
(38/79): libcap-2.24-8.fc23.x86_64.rpm 332 kB/s | 51 kB 00:00
(39/79): libcom_err-1.42.13-3.fc23.i686.rpm 391 kB/s | 45 kB 00:00
(40/79): libcom_err-1.42.13-3.fc23.x86_64.rpm 337 kB/s | 45 kB 00:00
(41/79): libffi-3.1-8.fc23.i686.rpm 338 kB/s | 34 kB 00:00
(42/79): libffi-3.1-8.fc23.x86_64.rpm 354 kB/s | 34 kB 00:00
(43/79): libgcc-5.3.1-6.fc23.i686.rpm 457 kB/s | 101 kB 00:00
(44/79): krb5-libs-1.14.1-6.fc23.x86_64.rpm 517 kB/s | 842 kB 00:01
(45/79): libgcc-5.3.1-6.fc23.x86_64.rpm 518 kB/s | 92 kB 00:00
(46/79): libgomp-5.3.1-6.fc23.x86_64.rpm 606 kB/s | 156 kB 00:00
(47/79): libgomp-5.3.1-6.fc23.i686.rpm 385 kB/s | 159 kB 00:00
(48/79): libmpc-1.0.2-4.fc23.i686.rpm 538 kB/s | 56 kB 00:00
(49/79): libmpc-1.0.2-4.fc23.x86_64.rpm 365 kB/s | 55 kB 00:00
(50/79): libselinux-2.4-4.fc23.i686.rpm 683 kB/s | 148 kB 00:00
(51/79): libselinux-2.4-4.fc23.x86_64.rpm 445 kB/s | 147 kB 00:00
(52/79): libsepol-2.4-1.fc23.i686.rpm 686 kB/s | 262 kB 00:00
(53/79): libsepol-2.4-1.fc23.x86_64.rpm 448 kB/s | 257 kB 00:00
(54/79): libstdc++-5.3.1-6.fc23.i686.rpm 698 kB/s | 454 kB 00:00
(55/79): libtasn1-4.8-1.fc23.i686.rpm 624 kB/s | 328 kB 00:00
(56/79): libstdc++-5.3.1-6.fc23.x86_64.rpm 453 kB/s | 429 kB 00:00
(57/79): libverto-0.2.6-5.fc23.i686.rpm 318 kB/s | 21 kB 00:00
(58/79): libverto-0.2.6-5.fc23.x86_64.rpm 298 kB/s | 21 kB 00:00
(59/79): libtasn1-4.8-1.fc23.x86_64.rpm 718 kB/s | 325 kB 00:00
(60/79): mpfr-3.1.3-2.fc23.x86_64.rpm 613 kB/s | 214 kB 00:00
(61/79): mpfr-3.1.3-2.fc23.i686.rpm 285 kB/s | 216 kB 00:00
(62/79): ncurses-5.9-21.20150214.fc23.x86_64.rpm 741 kB/s | 321 kB 00:00
(63/79): ncurses-base-5.9-21.20150214.fc23.noarch.rpm 258 kB/s | 75 kB 00:00
(64/79): ncurses-libs-5.9-21.20150214.fc23.i686.rpm 532 kB/s | 313 kB 00:00
(65/79): ncurses-libs-5.9-21.20150214.fc23.x86_64.rpm 396 kB/s | 306 kB 00:00
(66/79): nss-softokn-freebl-3.24.0-1.0.fc23.i686.rpm 615 kB/s | 209 kB 00:00
(67/79): nss-softokn-freebl-3.24.0-1.0.fc23.x86_64.rpm 434 kB/s | 222 kB 00:00
(68/79): openssl-libs-1.0.2h-1.fc23.i686.rpm 463 kB/s | 988 kB 00:02
(69/79): p11-kit-0.23.2-1.fc23.i686.rpm 405 kB/s | 149 kB 00:00
(70/79): p11-kit-0.23.2-1.fc23.x86_64.rpm 386 kB/s | 151 kB 00:00
(71/79): p11-kit-trust-0.23.2-1.fc23.x86_64.rpm 443 kB/s | 131 kB 00:00
(72/79): openssl-libs-1.0.2h-1.fc23.x86_64.rpm 394 kB/s | 1.2 MB 00:03
(73/79): sed-4.2.2-11.fc23.x86_64.rpm 450 kB/s | 237 kB 00:00
(74/79): pcre-8.39-2.fc23.i686.rpm 504 kB/s | 516 kB 00:01
(75/79): setup-2.10.1-1.fc23.noarch.rpm 487 kB/s | 172 kB 00:00
(76/79): zlib-1.2.8-9.fc23.i686.rpm 486 kB/s | 98 kB 00:00
(77/79): zlib-1.2.8-9.fc23.x86_64.rpm 443 kB/s | 95 kB 00:00
(78/79): tzdata-2016e-1.fc23.noarch.rpm 567 kB/s | 414 kB 00:00
(79/79): golang-bin-1.5.4-1.fc23.x86_64.rpm 1.0 MB/s | 40 MB 00:38