Reputation: 41
I am creating an rpm which will scatter some files in different/specific locations on its installation. The problem I am facing is the size of the rpm, which is close to 1.5 GB. Is there a way in which I could place my files in aws s3 and get download during the rpm installation. As of now I included all my files inside the SOURCE directory.
Any help is appreciated.
Thanks. Balasekhar Nelli
Upvotes: 0
Views: 1528
Reputation: 5427
You can generate yum/dnf repository with deltas:
createrepo_c --deltas
It will create binary diff against old rpm file. It will not help you with initial download, but it will speed up upgrades.
Do not forget to have in yum.conf
deltarpm=2
See man yum.conf for what this value means.
You can also change compression parameters when building rpm. See this answer: rpmbuild change compression format
Upvotes: 1
Reputation: 33601
For that amount of data, do not put it in an rpm, not even 100 of them (e.g. mypgm-data-1.rpm, mypgm-data-2.rpm, ...). Personally, I hate it when I see some programs updating foobar-langpack-1.rpm to foobar-langpack-300.rpm when I'm running yum.
Consider using rsync [tunneled through http?] instead to AWS. It's perfect for the job.
Why are you "scattering them around"??? Why aren't you putting them under /home/mypgm or /usr/share/mypgm?
The rpm install should be quick. You can have the rpm post do the rsync, but I wouldn't do it until the user runs the program and/or config for the first time. It would ask: "Enable automatic/background data updates?"
Give the user a choice. When the program runs it can detect that the local data needs to be refreshed from AWS and [again] prompt the user: "I need to update the program data before I can run. Do it now? It will take X minutes"
For something this massive, give the user a choice about update policy. For example, on Android, you can select "update over wifi only".
Upvotes: 0