|
Rationale
At the moment, updates with apt are done by downloading the entire new package, removing the old package, and installing the entire new package. It seems to me to be a waste for huge packages like games to download and overwrite all of the files even if they haven't changed. It is mitigated to an extent by dividing up packages into -media -bin, etc., but that only works if the package is designed well. Would it be a large resource hit to stop considering packages as discrete units but instead consider files. This would also eliminate the sometimes confusing (especially for new users) -bin, etc. packages from the system as well. The concept of a package could become more as an aggregation of files, each of which have revisions. This would be down the road a bit I realize, and it would make providing discrete .debs harder; but for now at least work could be done on downloading or installing only changed files.
|
|
Propose your solution
Attachments
No attachments.
Duplicates
Comments
|
sawjew2
wrote on the 4 Mar 08 at 07:39
|
|
|
|
This is what the conary package management system in Foresight and Rpath does. It seems like an excellent idea to me.
|
|
squid0
wrote on the 4 Mar 08 at 08:26
|
|
|
|
Great idea, especially for those of us with limited internet availability.
|
|
skerit
wrote on the 4 Mar 08 at 11:41
|
|
|
|
It does sound like a great improvement, but isn't this changing the core ways of apt-get? Shouldn't Debian handle something like this as it would only create more incompatible repositories...
|
|
Kjella
wrote on the 4 Mar 08 at 15:26
|
|
|
Working on a file basis is probably not that good an idea, since you want to run prescripts and postscripts and remove redundant files and whatnot, and would be a major change. However, you could do this simpler and make diff packages. Like you start with two packages and make a binary diff (either on the package as a whole or the files inside) then use the apt cache (alternatively the installed system, but that's trickier) to patch your own package.
Repo side:
foo3.2.5 - foo3.2.4 = binary diff
Send diff
Client side:
foo3.2.4 + diff = foo3.2.5
Install 3.2.5
Fallback options:
If server or client don't support diffs, install full package. If client doesn't have a previous package (or no diff is available for that version), install full package.
This could be done without meddling with any core apt-get code, diffs would patch signature so it'd all be just an advanced preprocessor to make a bog standard package.
|
|
jan1
wrote on the 4 Mar 08 at 20:23
|
|
|
|
Aren't you talking about so called "delta updates"?
|
|
masterpi
wrote on the 10 Mar 08 at 15:38
|
|
|
Oops, didn't see that. I searched for "apt" to find duplicates, thinking any discussion would involve that, but that idea doesn't say it specifically. :/
I actually have Foresight installed, because of this feature, though it's quite buggy at the moment.
|
Post your comment
|