I know about Debian source packages. I use Debian source packages. I know how to make Debian source packages. I make Debian source packages.
This is not about Debian source packages. This is not about RedHat source packages. This is about abstracting source packages so that one set of build files will do source installs, straight binary installs, binary.tar.gzs, debs, rpms, slps, and FooPkg packages. And personally, I think that it's a good idea *EVEN IF* it's technically impossible due to the complexity of integrating a package into an existing system. It's still something to think about as a possibility if the opportunity to do it ever comes up.
I do know the difference--I currently am working on two (vaguely related) projects that link against libapt, so I'd better know the difference;-) -- but this isn't about apt or dpkg, it's about.tar.gz,.{dsc,tar.gz,diff.gz} and.srpm (?). As you pointed out.
In any event, I agree that abstracting the packaging process out is nontrivial and maybe even impossible, but I think taking a crack at it would be nice, just because it would be so incredibly useful if it worked. (not that I have any time to work on it:) )
As I said (or maybe didn't), I checked the console-apt bugs page and it looked to me like it wasn't really a release-critical bug. So I agree that removing console-apt was probably overboard.
Second, they LEFT IN aptitude, which DOESN'T EVEN WORK!!
As the author of Aptitude, I have to take some offense to this, particularly since I use it daily for my own package management and just finished using it to purge a lot of cruft packages from my system and perform my daily upgrade. Not too much offense, though, espcially since it has been known to break from time to time:-) Would you mind telling me what doesn't work for you -- filing a bug report with debbugs or Sourceforge would be favorite -- and seeing if you can reproduce it with the latest version? (0.0.6, available from Sourceforge or with the apt line: deb http://aptitude.sourceforge.net/debian./ )
I like Debian, but I'm not sure the package manager is that much better; I think there's just a lot more work put into making sure packages play nicely with one another and with the system as a whole. In particular, there are a couple of nits to pick: -> RedHat can use debs just as well as Debian can use RPMs (that is, not too well:) ) -- joeyh's alien package will happily convert both ways. -> RedHat users claim they have an apt-like program. Not having used it, I can't comment on its utility, but you should be aware it exists. (rpmfind) -> Config file handling and rebootless upgrades are cool. Oh wait, you said that already:-)
One other note -- if you go to console-apt's bug page you can see why it was removed from potato -- there were evidently some release-critical bugs filed against it (segfaulting) that the maintainer didn't get to in time. Whether they really should be release-critical, and whether they were fixed..I'm not sure; I don't use console-apt, so I can't comment.
Note that this isn't apt's fault; the problem is (perhaps) that the dependencies are incorrect. In particular, if libesd-alsa0 is a replacement for libesd0, and Conflicts: with it, it should also (..I think..) declare that it Provide:s libesd0. File a bug against libesd-alsa0 requesting that it provide libesd0 if my analysis is correct and you want this fixed in Potato.
Yes, apt rocks, etc, but the article wasn't about package formats, it was about packaging: that is, how can authors create their build scripts in such a way that any package system they can target any package system they feel like?
The fact that it is as fast as Netscape 4.7 is one of the problems with it. Dead dog in treacle, remember? It also chews a *lot* of memory (I think around 20MB), although not as much as Netscape. Maybe the AOL programmers all have 400 Mhz systems with 64 or 128 megabytes of memory, but not everyone does! Daniel
Python is a nice, lightweight, embeddable, easy-to-learn scripting language that you could take a look at. I've read your other comments; it appears to have some sort of numerical modules, although I'm not sure what level they're at. (most of what I do is non-numerical..)
Well, I think the default Debian install includes Emacs and all of TeX (!). But aside from that I don't think it's too bad..:) And it does make it fairly simple to strip the system down to its base components.
I recently gave up on a Linux desktop. Got sick of having to upgrade 5 libraries every time I wanted to install a new app. I also gave up on win98, it just gets flakier with the age of the installation, until one day it does not boot and you have to reinstall.
Uh, you realize, do you not, that these two fascts are related? The reason (well, one reason, but a big one) that Linux doesn't bitrot is that (a) there are mechanisms in the operating system to keep you from running programs with mismatched version numbers (sonames and so on), and (b) most distributions make sure that you have the correct libraries for your programs. Windows has essentially no such safeguards, which leads to a lot of the chronic problems that you see with it; the phrase, I believe, is "DLL Hell". In fact, many programs *do* install new versions of base libraries on a Windows system; they just ship with the program, never mind that there's no way to guess how overwriting random files in c:\windows\system will affect other programs on the system. Easier for the user -> more bitrot. If you don't like downloading the libraries manually you should try a distribution with better autoupdate tools than yours had; Debian springs immediately to mind, although with your low frustration threshold something else might be appropriate.
After seeing this article I decided to check out Glade, and it looks like it does pretty much the same thing, only it has the advantage of having documentation that makes sense:) Also, you can export the interfaces to XML and (I think) dynamically load them back in, adding a lot of customizability; does C++ Builder do this? (shouldn't be hard) There are a few UI annoyances; for example, if you select a widget and then place it, the next click will revert to "select" mode instead of placing another widget of that type, but those are easy to deal with (if I ever am in a position where Glade could help, I may send a short patch -- probably no more than 10 lines -- to the Glade folks to fix this)
Anyway, I'm obviously pretty ignorant about "visual" design; I've only tried to write one Windows program, and did it with very little assistance (I did use some buggy Borland dialog creation tool -- a resource editor, I think they called it). It was an enormous pain. I think the complexity and hackiness of the Windows API may be a major reason for the popularity of this sort of tool over there. If I want to write a UNIX GUI program, I generally use GTK+. If I want to write it quickly, I use GTK+ in Python. The API for GTK+ is logical and consistent enough that I'm not sure that GUI drawing tools aren't redundant -- except for the rather cool dynamic-loading and design-by-nonprogrammer aspect I mentioned earlier.
I *did* try to use C++ builder, "try" being the operative word. I still haven't figured out what the point is..or for that matter, how to compile a simple program. Mind, I haven't tried particularly hard since I stopped using Windows soon after I bought it (waste of $100, but anyway..)
I was under the impression that gcc still didn't do this. Since I've got some rather large bits of C++ code that I compile fairly often, I'd be interested in activating this feature if it works. Do you have more information?
There have been a couple comments that this guy isn't an average user. This is true, but it's not because he knows the difference between a CD-ROM drive and a coffee-cup holder. There are two revealing comments he makes which don't even have anything to do with the main thread of his article:
-> Learning is fun -> Changing one's habits is good
90%-99% of the people in the developed world (a) actively avoid learning anything unless they absolutely have to and (b) actively avoid having to do anything that is the least bit different from their normal routines. Trying new things instead of running in terror immediately marks this fellow as Different.
Actually, if the Earth were a closed system, you might be able to go somewhere with the entropy argument. The problem with that argument is that the law they're trying to invoke states that the entropy of the universe increases; the Earth's entropy may not be increasing, but I believe that the entropy of the Sun *is* going up. Correct me if I'm totally clueless.:)
Actually, while I'm no great fan of ESR, he did do one thing more appropriate for his skillset. It's truly amazing how much of the documentation on, say, my Debian system he has contributed to at one time or another.
You might not call it that, but you'd almost certainly call it (say) a wood and metal birdhouse.
Personally, I don't mind when people say "Linux", since "GNU/Linux" is a mouthful for the same reason that "wood and metal birdhouse" is, but the full name *is* GNU/Linux, or even more properly the distribution: Debian GNU/Linux.
(ok, not a perfect analogy, but you get the point I hope? If not, please rm -f/lib/libc.*/bin/{bash,sh,ls,mv,cp,ln,sed}/usr/bin/{tar,gzip} and then tell me how well your system is running;-) )
You might not call it that, but you'd almost certainly call it (say) a wood and metal birdhouse.
Personally, I don't mind when people say "Linux", since "GNU/Linux" is a mouthful for the same reason that "wood and metal birdhouse" is, but
(ok, not a perfect analogy, but you get the point I hope? If not, please rm -f/lib/libc.*/bin/{bash,sh,ls,mv,cp,ln,sed}/usr/bin/{tar,gzip} and then tell me how well your system is running;-) )
Anonoymous inner classes are lambda expressions, something I missed dearly from Lisp.
This is true, but they're lambda expressions the same way that you can make a real lambda expression in Python (I don't mean the builtin lambda but something that actually can create closures), ie, a huge nuisance to type and a distraction to the control flow. Personally, I find it to be almost as bad as having to type the class outside the function (but not quite)
In theory, software that doesn't do direct syscalls should work correctly when run on the Hurd -- in fact, you should get exactly the same results from compiling it on the Hurd as from compiling it on Linux. The reason is that most system-dependent stuff is actually accessed via a dynamically-linked libc, which can provide the same interface on Linux and on the Hurd (in fact, on the Hurd, a lot of traditionally "kernely" things such as signals are done entirely in libc) Non-free software like netscape and quake wouldn't work, but by the time the Hurd is working, I suspect that Mozilla, Mnemonic, and Crystal Space will all have finally released a usable version (although it'll probably be a close shave for one or two of those:) )
In practice -- well, the current Debian GNU/Hurd snapshots use a slightly different libc than Debian GNU/Linux, and all in all I don't think anyone's bothered to try it yet. If it could be done, it could (in theory) save a lot of compiling and diskspace..but compiling on the Hurd is also useful to test it (compilation is pretty intensive) and to verify that programs really are compilable on the Hurd; even if Debian doesn't precompile things for it, a user might want to.
One other note: you could probably also write a syscall emulator. I'm not sure which level it'd go at, though (ie, gnumach..a Hurd server,.. ?)
I know about Debian source packages. I use Debian source packages. I know how to make Debian source packages. I make Debian source packages.
.tar.gzs, debs, rpms, slps, and FooPkg packages. And personally, I think that it's a good idea *EVEN IF* it's technically impossible due to the complexity of integrating a package into an existing system. It's still something to think about as a possibility if the opportunity to do it ever comes up.
This is not about Debian source packages. This is not about RedHat source packages. This is about abstracting source packages so that one set of build files will do source installs, straight binary installs, binary
Daniel
I do know the difference--I currently am working on two (vaguely related) projects that link against libapt, so I'd better know the difference ;-) -- but this isn't about apt or dpkg, it's about .tar.gz, .{dsc,tar.gz,diff.gz} and .srpm (?). As you pointed out.
:) )
In any event, I agree that abstracting the packaging process out is nontrivial and maybe even impossible, but I think taking a crack at it would be nice, just
because it would be so incredibly useful if it worked. (not that I have any
time to work on it
Daniel
As I said (or maybe didn't), I checked the console-apt bugs page and it looked
:-) ./ )
to me like it wasn't really a release-critical bug. So I agree that removing
console-apt was probably overboard.
Second, they LEFT IN aptitude, which DOESN'T EVEN WORK!!
As the author of Aptitude, I have to take some offense to this, particularly since I use it daily for my own package management and just finished using it to purge a lot of cruft packages from my system and perform my daily upgrade. Not too much offense, though, espcially since it has been known to break from time to time
Would you mind telling me what doesn't work for you -- filing a bug report with debbugs or Sourceforge would be favorite -- and seeing if you can reproduce it with the latest version? (0.0.6, available from Sourceforge or with the apt line: deb http://aptitude.sourceforge.net/debian
Thanks,
Daniel
Bah, libesd-alsa0 does Provide: libesd0. I think maybe it's missing a Replaces: line, but I'll shut up now :-)
Daniel
I like Debian, but I'm not sure the package manager is that much better; I think there's just a lot more work put into making sure packages play nicely with one another and with the system as a whole. In particular, there are a couple of nits to pick: :) ) -- joeyh's alien package will happily convert both ways. :-)
-> RedHat can use debs just as well as Debian can use RPMs (that is, not too well
-> RedHat users claim they have an apt-like program. Not having used it, I can't comment on its utility, but you should be aware it exists. (rpmfind)
-> Config file handling and rebootless upgrades are cool. Oh wait, you said that already
One other note -- if you go to console-apt's bug page you can see why it was removed from potato -- there were evidently some release-critical bugs filed against it (segfaulting) that the maintainer didn't get to in time. Whether they really should be release-critical, and whether they were fixed..I'm not sure; I don't use console-apt, so I can't comment.
Daniel
Note that this isn't apt's fault; the problem is (perhaps) that the dependencies are incorrect. In particular, if libesd-alsa0 is a replacement for libesd0, and Conflicts: with it, it should also (..I think..) declare that it Provide:s libesd0. File a bug against libesd-alsa0 requesting that it provide libesd0 if my analysis is correct and you want this fixed in Potato.
Thanks,
Daniel
Yes, apt rocks, etc, but the article wasn't about package formats, it was about packaging: that is, how can authors create their build scripts in such a way that any package system they can target any package system they feel like?
Daniel
The fact that it is as fast as Netscape 4.7 is one of the problems with it. Dead dog in treacle, remember?
It also chews a *lot* of memory (I think around 20MB), although not as much as Netscape. Maybe the AOL programmers all have 400 Mhz systems with 64 or 128 megabytes of memory, but not everyone does!
Daniel
Python is a nice, lightweight, embeddable, easy-to-learn scripting language that you could take a look at. I've read your other comments; it appears to have some sort of numerical modules, although I'm not sure what level they're at. (most of what I do is non-numerical..)
Daniel
Well, I think the default Debian install includes Emacs and all of TeX (!). But aside from that I don't think it's too bad.. :) And it does make it fairly simple to strip the system down to its base components.
Daniel
I recently gave up on a Linux desktop. Got sick of having to upgrade 5 libraries every time I wanted to install a new app. I also gave up on win98, it just gets flakier with the age of the installation, until one day it does not boot and you have to reinstall.
Uh, you realize, do you not, that these two fascts are related? The reason (well, one reason, but a big one) that Linux doesn't bitrot is that (a) there are mechanisms in the operating system to keep you from running programs with mismatched version numbers (sonames and so on), and (b) most distributions make sure that you have the correct libraries for your programs. Windows has essentially no such safeguards, which leads to a lot of the chronic problems that you see with it; the phrase, I believe, is "DLL Hell". In fact, many programs *do* install new versions of base libraries on a Windows system; they just ship with the program, never mind that there's no way to guess how overwriting random files in c:\windows\system will affect other programs on the system. Easier for the user -> more bitrot.
If you don't like downloading the libraries manually you should try a distribution with better autoupdate tools than yours had; Debian springs immediately to mind, although with your low frustration threshold something else might be appropriate.
Daniel
After seeing this article I decided to check out Glade, and it looks like it does pretty much the same thing, only it has the advantage of having documentation that makes sense :) Also, you can export the interfaces to XML and (I think) dynamically load them back in, adding a lot of customizability; does C++ Builder do this? (shouldn't be hard) There are a few UI annoyances; for example, if you select a widget and then place it, the next click will revert to "select" mode instead of placing another widget of that type, but those are easy to deal with (if I ever am in a position where Glade could help, I may send a short patch -- probably no more than 10 lines -- to the Glade folks to fix this)
Anyway, I'm obviously pretty ignorant about "visual" design; I've only tried to write one Windows program, and did it with very little assistance (I did use some buggy Borland dialog creation tool -- a resource editor, I think they called it). It was an enormous pain. I think the complexity and hackiness of the Windows API may be a major reason for the popularity of this sort of tool over there.
If I want to write a UNIX GUI program, I generally use GTK+. If I want to write it quickly, I use GTK+ in Python. The API for GTK+ is logical and consistent enough that I'm not sure that GUI drawing tools aren't redundant -- except for the rather cool dynamic-loading and design-by-nonprogrammer aspect I mentioned earlier.
Daniel
I *did* try to use C++ builder, "try" being the operative word. I still haven't figured out what the point is..or for that matter, how to compile a simple program. Mind, I haven't tried particularly hard since I stopped using Windows soon after I bought it (waste of $100, but anyway..)
Daniel
I was under the impression that gcc still didn't do this. Since I've got some rather large bits of C++ code that I compile fairly often, I'd be interested in activating this feature if it works. Do you have more information?
Thanks,
Daniel
There have been a couple comments that this guy isn't an average user. This is true, but it's not because he knows the difference between a CD-ROM drive and a coffee-cup holder. There are two revealing comments he makes which don't even have anything to do with the main thread of his article:
-> Learning is fun
-> Changing one's habits is good
90%-99% of the people in the developed world (a) actively avoid learning anything unless they absolutely have to and (b) actively avoid having to do anything that is the least bit different from their normal routines. Trying new things instead of running in terror immediately marks this fellow as Different.
Daniel
Actually, if the Earth were a closed system, you might be able to go somewhere with the entropy argument. The problem with that argument is that the law they're trying to invoke states that the entropy of the universe increases; the Earth's entropy may not be increasing, but I believe that the entropy of the Sun *is* going up. Correct me if I'm totally clueless. :)
Daniel
Well, there is w3m, which I use for 99% of Web browsing now. It was mentioned in this article.
Daniel
No, no, no, you're missing the point. The parentheses are *part of* the code!
Daniel
Actually, while I'm no great fan of ESR, he did do one thing more appropriate for his skillset. It's truly amazing how much of the documentation on, say, my Debian system he has contributed to at one time or another.
Daniel
You might not call it that, but you'd almost certainly call it (say) a wood and metal birdhouse.
/lib/libc.* /bin/{bash,sh,ls,mv,cp,ln,sed} /usr/bin/{tar,gzip} and then tell me how well your system is running ;-) )
Personally, I don't mind when people say "Linux", since "GNU/Linux" is a mouthful for the same reason that "wood and metal birdhouse" is, but the full name *is* GNU/Linux, or even more properly the distribution: Debian GNU/Linux.
(ok, not a perfect analogy, but you get the point I hope? If not, please rm -f
Daniel
You might not call it that, but you'd almost certainly call it (say) a wood and metal birdhouse.
/lib/libc.* /bin/{bash,sh,ls,mv,cp,ln,sed} /usr/bin/{tar,gzip} and then tell me how well your system is running ;-) )
Personally, I don't mind when people say "Linux", since "GNU/Linux" is a mouthful for the same reason that "wood and metal birdhouse" is, but
(ok, not a perfect analogy, but you get the point I hope? If not, please rm -f
Daniel
How many people...are not loyalists and purists? /Linux/.
Me. That is, I can be a purist from time to time but I am certainly not a loyalist of
While I agree with your point, I think that loyalty to an operating system is an immature position; the only things worth being loyal to are ideas.
Daniel
Sorry, I have to take issue with one thing..
Anonoymous inner classes are lambda expressions, something I missed dearly from Lisp.
This is true, but they're lambda expressions the same way that you can make
a real lambda expression in Python (I don't mean the builtin lambda but
something that actually can create closures), ie, a huge nuisance to type and
a distraction to the control flow. Personally, I find it to be almost as bad
as having to type the class outside the function (but not quite)
Daniel
In theory, software that doesn't do direct syscalls should work correctly when run on the Hurd -- in fact, you should get exactly the same results from compiling it on the Hurd as from compiling it on Linux. The reason is that most system-dependent stuff is actually accessed via a dynamically-linked libc, which can provide the same interface on Linux and on the Hurd (in fact, on the Hurd, a lot of traditionally "kernely" things such as signals are done entirely in libc) Non-free software like netscape and quake wouldn't work, but by the time the Hurd is working, I suspect that Mozilla, Mnemonic, and Crystal Space will all have finally released a usable version (although it'll probably be a close shave for one or two of those :) )
.. ?)
In practice -- well, the current Debian GNU/Hurd snapshots use a slightly different libc than Debian GNU/Linux, and all in all I don't think anyone's bothered to try it yet. If it could be done, it could (in theory) save a lot of compiling and diskspace..but compiling on the Hurd is also useful to test it (compilation is pretty intensive) and to verify that programs really are compilable on the Hurd; even if Debian doesn't precompile things for it, a user might want to.
One other note: you could probably also write a syscall emulator. I'm not sure which level it'd go at, though (ie, gnumach..a Hurd server,
Daniel
'sides, they probably port relatively easily from Linux
In fact, that's exactly how Hurd (or rather, GNUMach) got a lot of its device drivers.
Daniel