Years ago I used to beg for something like this to exist -- I couldn't understand why Cygwin's setup.exe was so obtuse.
But my boss at my current job showed me a trick that makes it all better: run setup.exe, click the root checkbox, wait a few minutes for the GUI to start responding again, and install everything.
It's only a few thousand crummy packages, none of which conflict with one another, only totaling up to a few gigs. It takes all the hassle out of the process, you never get frustrated that you're missing some package's goddamn headers -- If you don't have it, it wasn't there, so you can go straight to upstream without worrying you're doing it wrong.
I think I've tried that and run into trouble; possibly it would stall or get confused or something, and I have nothing installed.
Instead, I first install the key stuff (wget, bash, whatever), making sure it is saved to disk, and then go back and gradually add pretty much everything.
Usually that stuff goes into /usr/local (d:/cygwin/usr/local, or on my machine just c:/usr/local - I'm mapping cygwin to c:\ against their recommendations for mapping in root folder - but it works fine).
I wish it was even better integrated. For example all fake "short-links", gcc.exe being "<cygwin>gcc-SomeVer.exe" for example really drive me nuts. I know hard-links is not the solution, but someday I'm thinking of writing an app, that runs after Cygwin setup.exe and makes all these weird short links to NTFS hard links.
It drives me nuts, cause I can't use a lot of these apps from CMD.EXE, FAR.EXE, etc. I guess I'll end up with "gcc" "gcc.exe" "gcc-SomeVer.exe" all pointing to the same NTFS file.
I can swear some ancient version of Cygwin did employ NTFS links. I am not sure when that changed - I haven't used Windows for a good couple years since the time I think I saw that.
Stuff compiled from source should not be installed to the same prefix as stuff provided by the OS and/or package manager.
For programs that use the de-facto standard GNU Autocrap build system you can specify this by passing "--prefix=/usr/local" to the "./configure" script. It's also good to not install everything system-wide, and instead have a $HOME/bins prefix, with $HOME/bins/bin added to PATH. (And $HOME/bins/lib to LD_LIBRARY_PATH, and that pkg-config thing if it matters, etc)
FreeBSD takes this a radical step further -- its package system only ever installs things to /usr/local. Your own random shit needs a third prefix.
It won't even make a /bin/bash -- unless you fuck shit up, everything outside of /usr/local /home and /root came directly from the FreeBSD project, period. You can checkout the source to your system's entire userland from one repository, and build it with one make.
I wish there was a nice Linux distro that held itself to this. Gentoo makes a nice distinction in portage between the necessary system packages that come built in the tarball and the world packages that you installed and care about, but it mixes them together in the filesystem.
Nice: I just installed and played with this for 5 minutes. Assuming no significant bugs or problems, this is a welcome tool for when I have to use Windows. (I can't even imagine using Windows without cygwin and a bash shell.)
15 comments
[ 3.2 ms ] story [ 47.6 ms ] threadBut my boss at my current job showed me a trick that makes it all better: run setup.exe, click the root checkbox, wait a few minutes for the GUI to start responding again, and install everything.
It's only a few thousand crummy packages, none of which conflict with one another, only totaling up to a few gigs. It takes all the hassle out of the process, you never get frustrated that you're missing some package's goddamn headers -- If you don't have it, it wasn't there, so you can go straight to upstream without worrying you're doing it wrong.
Instead, I first install the key stuff (wget, bash, whatever), making sure it is saved to disk, and then go back and gradually add pretty much everything.
Package management is a great idea. It's a shame so few OSs have anything like it.
I share your pain. My company makes me use Windows. Cygwin made it bearable.
It drives me nuts, cause I can't use a lot of these apps from CMD.EXE, FAR.EXE, etc. I guess I'll end up with "gcc" "gcc.exe" "gcc-SomeVer.exe" all pointing to the same NTFS file.
For programs that use the de-facto standard GNU Autocrap build system you can specify this by passing "--prefix=/usr/local" to the "./configure" script. It's also good to not install everything system-wide, and instead have a $HOME/bins prefix, with $HOME/bins/bin added to PATH. (And $HOME/bins/lib to LD_LIBRARY_PATH, and that pkg-config thing if it matters, etc)
But why did you call it "GNU Autocrap build system"?
It won't even make a /bin/bash -- unless you fuck shit up, everything outside of /usr/local /home and /root came directly from the FreeBSD project, period. You can checkout the source to your system's entire userland from one repository, and build it with one make.
I wish there was a nice Linux distro that held itself to this. Gentoo makes a nice distinction in portage between the necessary system packages that come built in the tarball and the world packages that you installed and care about, but it mixes them together in the filesystem.
There is no such thing. A 1.5TB disk is around $100.