“If you’re a typical FreeBSD user, you don’t have a background in C programming. Yet, if you’ve ever used make world to upgrade your operating system or issued a make install somewhere within your ports tree, you’ve compiled C code. This article covers some make basics so you have an idea what is happening behind the scenes. It also examines some of the options you have available when issuing make commands.” Read it here.
If you’re a typical FreeBSD user, you DO have a background in C programming.
But a misjudgement
Non-programmers shouldn’t have to deal with ‘make’; the basic OS should provide higher level wrappers (e.g. pkg_ tools that install, build, etc, or CPAN tools).
If you venture beyond the ‘standard’ packages, and start to build your own (e.g. from gnu source, ports, sourceforge, etc) then you really _do_ need to know not only ‘C’ but makefiles at a basic level: because there’s a reasonable probability that the build won’t work and you’ll need to fix it (e.g. a platform include issue, or something else) – you’re SOL if you can’t at least understand and hack at this very basic level.
Let me say it again: non-programmers should never need to interface to make.
Even for non-programmers, using “make buildworld” and friends in FreeBSD is very easy, and very well documented.
Tell me for which part of these you need to be a C-programmer:
install (e.g.) mozilla:
# cd /usr/ports/www/mozilla
# make install clean
upgrade FreeBSD:
# cd /usr/src
# make buildkernel installkernel
# make buildworld
# <reboot into single user mode>
# cd /usr/src
# mergemaster -p
# make installworld
# mergemaster
# reboot
Seems high-level enough to me.
While it’s probably true that most FreeBSD users do have a C programming background, I think the author wanted to stress that you *can* use FreeBSD and install stuff on it even if you don’t have it.
Installing software on FreeBSD is done through the ports system. You don’t need a background in C programming, or knowing what a makefile is, to use it.
The FreeBSD ports system has more than 12.000 ports: the very few of them that are broken, are usually marked as such. The ports tools (pkg_add, or the handier portupgrade) are all that the average user will ever need.
To whoever is new to the ports system, I would recommend three very nice articles about it, by the same author:
http://www.onlamp.com/pub/a/bsd/2003/08/07/FreeBSD_Basics.html
http://www.onlamp.com/pub/a/bsd/2003/08/28/FreeBSD_Basics.html
http://www.onlamp.com/pub/a/bsd/2003/09/18/FreeBSD_Basics.html
and of course the FreeBSD handbook
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports.htm…
I think that this should be an addition to the Handbook. JMHO.
Bah!
I’m a non-programmer and I happily use FreeBSD and OpenBSD. When I get around to it, I’ll give DragonFlyBSD a try too. I have tried NetBSD once though (just thougt I mention that).
I can wite a basica “Hello World” C program, but that hardly makes me a C programmer. I wish I had the time and skills to be one, but simply I am not a C programmer.
Contradictory to your belief that non-C programmers don’t use or shouldn’t use BSD, I have been using FreeBSD quite happily since version 2.2.2 until the present. Maybe I’m not a typical non-C programmer. I do often look at Makefiles and edit things.
Usually, all I do is comment things out that I don’t like when I want to install a port. Sometimes, it works and sometimes it doesn’t. This probably because I don’t know Makefiles, although I may gain more understanding after I read this article.
My point is that: You don’t have to be a C programmer to use BSD! This is because FreeBSD is very well documented. Even if you don’t know what you are doing, you can easily figure it out by reading the manual. Wow, you can understand things by reading a manual! Go figure?
If you’re a typical FreeBSD user, you DO have a background in C programming.
It is possible than that I am not a typical FreeBSd user, even though I’ve been using it for 1.5 years exclusively both on my desktop and a server. Part of the reason to switch was that it was far more easier to learn than any of the linuces I have tried (that includes rh7.3, mandrake and debian) – learn as in figure out how to configure it without GUI help or something. I strongly believe that for nOObs NOT looking just for a quick replacement of Windows but looking for learning to use a unix-like operating system, FreeBSD is by far the easiest route. To sum up: FreeBSD is a newbie friendly unix-like operating system, and this coming from someone who had no formal training in computer science at all. C knowledge? What’s this C thing?
I don’t know who might have clicked the report abuse link …or why?! Anyway, I forget to mention, that I regurarly check makefiles as well for either additional options or ‘porting’ newer version of progs that are not yet available. Of course, put porting in quotation marks b/c it is quite amateurish what I do, but well, as I said, I’m not only not a C programmer, I am not a programmer at all.
A case in point: just a few hours ago, I needed apcupsd, and ports had version 3.10.15. I needed the newest version, however, for that has USB support for FreeBSD as well (and this ups unit shipped with an USB cable only). So what I did was to look into the Makefile and change the portversion line, than change the values in ~sysutils/apcupsd/distfile (size, filename, md5 sum), than I installed in the usual make install clean way. Even though checking the makefiles may sound ‘geekish’ so to speak, it isn’t: they are well commended and quite readable. Half an hour ago it was up and running just fine (I finished testing what happens if I plug the power cable, and it works as expected).
“upgrade FreeBSD:
# cd /usr/src
# make buildkernel installkernel
# make buildworld
# <reboot into single user mode>
# cd /usr/src
# mergemaster -p
# make installworld
# mergemaster
# reboot ”
——————————————-
If i did that ten times, my system would never upgrade. that just rebuilds the same stuff over and over. I think some cvs transactions could help cure that though
-adam
molnars,
I can’t see why you would use such a nice OS, with such a crappy UPS…
-adam
yhis is a very usefull article! for a newbe, like me, besic explanation are always wellcome
@molnarcs
I agree, why was it reported as abuse? Who knows. It doesn’t sound like it to me, but whatever.
Anyway, I’ve also done what you have mentioned – editing the version to download. Sometimes, it works and sometimes it doesn’t. I’m delighted when it does and I find a working program. When it doesn’t work, then I wait for the maintainer to update the port.
I guess you also show that: You don’t have to be a C programmer to use BSD!
I think the only preresiquite for using BSD is being literate. If you can read and understand the Handbook, Manual and FAQ’s, then you’re pretty much good to go.
That’s all I have to say, it rocks!
C? I thought it was magic.
Am currently running 5.4 and getting the graphics working at the cli level. Surely a better graphics card than the i810 would do me some real magic.
Just wanted to put my 2 cents in. To run and play around with Freebsd you need no knowledge of C. Just need to follow the docs, like reading a cook book.
I did study Basic in the early 80’s. Is that anything like C? :-). Got a bad mark for using “goto”.
To add to other non-coder FreeBSD users, I too don’t know how to code in C and I’ve been very happily using FreeBSD (and NetBSD) since 1999.
Coding is not needed at all to be a good, productive BSD user, what IS needed, however, is a little will to read documentation.
While I don’t know C or C++ or even Java, I have dabbled in the past in various flavors of BASIC, and I know just enough about program flow and logic to find my way around a shell script. That being said, I don’t feel that I’m a “programmer” in most people’s eyes, mine included. Has this made it difficult for me to use FreeBSD, or even Slackware, one of the more UNIX-like distros? Quite the contrary! While I’m not nearly as comfortable at the FreeBSD sh prompt as I am at Slack’s Bash, I can make my way around. I even got X configured and had GNOME running quite nicely. It still felt incomplete though, so back to Slack I went. This was two years ago, and lately I’ve been thinking of messing around with FreeBSD again on a spare system.
Make isn’t just for programming languages. It’s meant for any sort of project that has dependencies. You can use it to update your website, assemble a complex document, etc.