<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Evils of Source</title>
	<atom:link href="http://www.bofh-hunter.com/2009/01/02/evils-of-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bofh-hunter.com/2009/01/02/evils-of-source/</link>
	<description>Admin Spotting for Fun and Profit</description>
	<lastBuildDate>Fri, 16 Jul 2010 09:41:46 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: .:: CentOS VN ::. - Linux Howtos and Tutorials &#124; Jim Perrin: Evils of Source &#124; Centosvn.com</title>
		<link>http://www.bofh-hunter.com/2009/01/02/evils-of-source/comment-page-1/#comment-179</link>
		<dc:creator>.:: CentOS VN ::. - Linux Howtos and Tutorials &#124; Jim Perrin: Evils of Source &#124; Centosvn.com</dc:creator>
		<pubDate>Sat, 21 Feb 2009 03:43:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.bofh-hunter.com/?p=87#comment-179</guid>
		<description>[...] It&#8217;s a near daily occurrence that I see an administrator building something from source because either they fail to understand how backporting works, or they want to install software which isn&#8217;t packaged in the default repositories. Source installs used to be common, but the problems inherent in them drove the creation of package management software.  Since you have package management software, USE IT!   I cannot stress this enough. Source installs suck for the following reasons: They conflict with packaged installs of software. They do not inform the package management system that they exist, which leads back to #1. They generally leave no easy way to uninstall them later on. There&#8217;s no record of what an installation does to your system, or what files are placed where. Searching them becomes a pain (what files did that install of  openssl drop on my system?) They are not easily duplicated across multiple systems over time (think remote support for users) There is no distribution update mechanism. If you updated via source for security reasons then congratulations, the onus is now on you to maintain that install, and track product security for its lifetime on your server. The benefits of using package management: Reliable reproduction of installs over time, and across multiple systems Easily search for installs, files, and modifications of packages. Easily get package meta-data such as who built it, when, build options used, and scripts required to set up the package for use. Audit trails for allow you to know what files have changed since install, what permissions were modified, etc. Simplified install, update and removal of packages. No hunting for remnants of previous installs. Simplified dependency management and version tracking. Distribution supplied updates. Rather than 1 admin tracking a dozen packages for updates, you have dozens of builders and hundreds of users testing and tracking the software. Just about every distribution out there has some form of support structure, either via irc, email, forums, or carrier pidgeon.  In many cases this community will be able to point you to a location where you can find packages for the software you&#8217;re wanting to install. In the case of CentOS, there are a number of very good 3rd party repositories providing quite literally thousands of packages which are not included in the base distribution. By using your distribution&#8217;s support mechanisms, you can provide a voice for the users and potentially guide the development efforts for future software releases. In short, if you need a particular piece of software, please use your distribution&#8217;s package management system and if you cannot find a pre-existing package, ASK.  If one doesn&#8217;t exist, and won&#8217;t be created, build a package yourself (there are tutorials aplenty online) and submit it for inclusion. Source installs should only be done when all other options have been exhausted. Update : Well, since this one seems to have generated some interesting responses, I thought I&#8217;d post a couple links that I&#8217;d neglected to mention. Thanks to toracat for pointing these out to me, since they fit in perfectly with what we&#8217;ve discussed here. http://wiki.centos.org/PackageManagement/SourceInstalls http://www.centos.org/modules/newbb/viewtopic.php?topic_id=14408&amp;forum=47    Continued here:  Jim Perrin: Evils of Source [...]</description>
		<content:encoded><![CDATA[<p>[...] It&#8217;s a near daily occurrence that I see an administrator building something from source because either they fail to understand how backporting works, or they want to install software which isn&#8217;t packaged in the default repositories. Source installs used to be common, but the problems inherent in them drove the creation of package management software.  Since you have package management software, USE IT!   I cannot stress this enough. Source installs suck for the following reasons: They conflict with packaged installs of software. They do not inform the package management system that they exist, which leads back to #1. They generally leave no easy way to uninstall them later on. There&#8217;s no record of what an installation does to your system, or what files are placed where. Searching them becomes a pain (what files did that install of  openssl drop on my system?) They are not easily duplicated across multiple systems over time (think remote support for users) There is no distribution update mechanism. If you updated via source for security reasons then congratulations, the onus is now on you to maintain that install, and track product security for its lifetime on your server. The benefits of using package management: Reliable reproduction of installs over time, and across multiple systems Easily search for installs, files, and modifications of packages. Easily get package meta-data such as who built it, when, build options used, and scripts required to set up the package for use. Audit trails for allow you to know what files have changed since install, what permissions were modified, etc. Simplified install, update and removal of packages. No hunting for remnants of previous installs. Simplified dependency management and version tracking. Distribution supplied updates. Rather than 1 admin tracking a dozen packages for updates, you have dozens of builders and hundreds of users testing and tracking the software. Just about every distribution out there has some form of support structure, either via irc, email, forums, or carrier pidgeon.  In many cases this community will be able to point you to a location where you can find packages for the software you&#8217;re wanting to install. In the case of CentOS, there are a number of very good 3rd party repositories providing quite literally thousands of packages which are not included in the base distribution. By using your distribution&#8217;s support mechanisms, you can provide a voice for the users and potentially guide the development efforts for future software releases. In short, if you need a particular piece of software, please use your distribution&#8217;s package management system and if you cannot find a pre-existing package, ASK.  If one doesn&#8217;t exist, and won&#8217;t be created, build a package yourself (there are tutorials aplenty online) and submit it for inclusion. Source installs should only be done when all other options have been exhausted. Update : Well, since this one seems to have generated some interesting responses, I thought I&#8217;d post a couple links that I&#8217;d neglected to mention. Thanks to toracat for pointing these out to me, since they fit in perfectly with what we&#8217;ve discussed here. <a href="http://wiki.centos.org/PackageManagement/SourceInstalls" rel="nofollow">http://wiki.centos.org/PackageManagement/SourceInstalls</a> <a href="http://www.centos.org/modules/newbb/viewtopic.php?topic_id=14408&amp;forum=47" rel="nofollow">http://www.centos.org/modules/newbb/viewtopic.php?topic_id=14408&amp;forum=47</a>    Continued here:  Jim Perrin: Evils of Source [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dimitar</title>
		<link>http://www.bofh-hunter.com/2009/01/02/evils-of-source/comment-page-1/#comment-123</link>
		<dc:creator>Dimitar</dc:creator>
		<pubDate>Mon, 12 Jan 2009 08:17:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.bofh-hunter.com/?p=87#comment-123</guid>
		<description>I built emacs 22.3 myself but I used ./configure --with-x-toolkit=motif --prefix=/opt/emacs/ 
because:
a.) the gtk version has some very weird bugs and probably conflicts with metacity  
b.) when its in /opt/emacs/ all it takes to remove it is &quot;rm -r /opt/emacs/&quot;

Is using a safe &quot;--prefix=/dir/&quot; OK?
Also is there a way I can install more conflicting software using the package management system in other directories?

Thanks.</description>
		<content:encoded><![CDATA[<p>I built emacs 22.3 myself but I used ./configure &#8211;with-x-toolkit=motif &#8211;prefix=/opt/emacs/<br />
because:<br />
a.) the gtk version has some very weird bugs and probably conflicts with metacity<br />
b.) when its in /opt/emacs/ all it takes to remove it is &#8220;rm -r /opt/emacs/&#8221;</p>
<p>Is using a safe &#8220;&#8211;prefix=/dir/&#8221; OK?<br />
Also is there a way I can install more conflicting software using the package management system in other directories?</p>
<p>Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gerard Braad</title>
		<link>http://www.bofh-hunter.com/2009/01/02/evils-of-source/comment-page-1/#comment-122</link>
		<dc:creator>Gerard Braad</dc:creator>
		<pubDate>Sun, 11 Jan 2009 18:59:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.bofh-hunter.com/?p=87#comment-122</guid>
		<description>For production systems I totally agree with point of view. Else I would have also been unable to perform a franken-upgrade: http://blog.gbraad.nl/2009/01/wizard-of-yum-upgrade-from-fc3-to.html. Building from source also means you need to plan... if you would build with the standard prefix, your files might start to conflict with packages or other files. You can not easily uninstall the binaries, etc. Preferably, if you really need to build from source, you would need to create a package... which you can then also distribute for other server. This is at least how we do it for certain unavailable packages. Try to keep your server as much as possible to the mainline... or as I would call it &#039;the yellow brick road&#039;.</description>
		<content:encoded><![CDATA[<p>For production systems I totally agree with point of view. Else I would have also been unable to perform a franken-upgrade: <a href="http://blog.gbraad.nl/2009/01/wizard-of-yum-upgrade-from-fc3-to.html" rel="nofollow">http://blog.gbraad.nl/2009/01/wizard-of-yum-upgrade-from-fc3-to.html</a>. Building from source also means you need to plan&#8230; if you would build with the standard prefix, your files might start to conflict with packages or other files. You can not easily uninstall the binaries, etc. Preferably, if you really need to build from source, you would need to create a package&#8230; which you can then also distribute for other server. This is at least how we do it for certain unavailable packages. Try to keep your server as much as possible to the mainline&#8230; or as I would call it &#8216;the yellow brick road&#8217;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matthew Berg</title>
		<link>http://www.bofh-hunter.com/2009/01/02/evils-of-source/comment-page-1/#comment-118</link>
		<dc:creator>Matthew Berg</dc:creator>
		<pubDate>Thu, 08 Jan 2009 19:28:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.bofh-hunter.com/?p=87#comment-118</guid>
		<description>Andrew - more often than not GUI tools are split out into seperate packages; e.g. vim-minimal vs vim-X11, wireshark vs wireshark-gnome.  Likewise optional modules are often packaged seperately, as with php.

Yes, there are plenty of badly built packages out there in third party repositories.  On the other hand it is almost always easier to grab the SRPM and %exlcude a binary you don&#039;t want or add a new flag to the %configure.  And when a new version comes out it&#039;s often as easy as changing a single tag and running a rebuild, as opposed to digging through your notes or shell history trying to figure out what compile options you used the last time.

Seriously, running with --force or --nodeps is almost universally a mistake.  In almost a decade of administration of (at peak) several hundred peaks I can count the number of times I&#039;ve used those flags on my fingers and could tell you exactly why I did it and how I was avoiding inconsistency in my RPM database.</description>
		<content:encoded><![CDATA[<p>Andrew &#8211; more often than not GUI tools are split out into seperate packages; e.g. vim-minimal vs vim-X11, wireshark vs wireshark-gnome.  Likewise optional modules are often packaged seperately, as with php.</p>
<p>Yes, there are plenty of badly built packages out there in third party repositories.  On the other hand it is almost always easier to grab the SRPM and %exlcude a binary you don&#8217;t want or add a new flag to the %configure.  And when a new version comes out it&#8217;s often as easy as changing a single tag and running a rebuild, as opposed to digging through your notes or shell history trying to figure out what compile options you used the last time.</p>
<p>Seriously, running with &#8211;force or &#8211;nodeps is almost universally a mistake.  In almost a decade of administration of (at peak) several hundred peaks I can count the number of times I&#8217;ve used those flags on my fingers and could tell you exactly why I did it and how I was avoiding inconsistency in my RPM database.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jim Perrin</title>
		<link>http://www.bofh-hunter.com/2009/01/02/evils-of-source/comment-page-1/#comment-117</link>
		<dc:creator>Jim Perrin</dc:creator>
		<pubDate>Sat, 03 Jan 2009 18:17:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.bofh-hunter.com/?p=87#comment-117</guid>
		<description>You&#039;re exactly the type of user who gets caught on the sidelines during the debate of packaging workload vs package use. Essentially you&#039;re relegated to the one of the last lines I included in the article. In your instance, a source build is a last resort, and in your case you&#039;d be right to do so. Ideally, you&#039;d have enough free time to create a repository of photo software packages to share with others. In the real world you may not have the time or the resources to do so, and for you a source build is likely the only way. 

Assuming you plan them out and know what you&#039;re doing with a source build they shouldn&#039;t interfere since no one is packaging that software anyway. It&#039;s when you start overwriting the distribution packages with your own brew that things get interesting. 

As to you gentoo comments, I actually consider what gentoo does &#039;package management&#039; because they have a command structure similar to the bsd &#039;ports&#039; system. It&#039;s not quite as robust as RPM, but it also doesn&#039;t restrict you in the manner rpm does also. In the end, it&#039;s all about finding the right tool for the job, and learning to use that tool appropriately. I simply wish that more people would use the tools provided in the distribution, rather than ignoring them.</description>
		<content:encoded><![CDATA[<p>You&#8217;re exactly the type of user who gets caught on the sidelines during the debate of packaging workload vs package use. Essentially you&#8217;re relegated to the one of the last lines I included in the article. In your instance, a source build is a last resort, and in your case you&#8217;d be right to do so. Ideally, you&#8217;d have enough free time to create a repository of photo software packages to share with others. In the real world you may not have the time or the resources to do so, and for you a source build is likely the only way. </p>
<p>Assuming you plan them out and know what you&#8217;re doing with a source build they shouldn&#8217;t interfere since no one is packaging that software anyway. It&#8217;s when you start overwriting the distribution packages with your own brew that things get interesting. </p>
<p>As to you gentoo comments, I actually consider what gentoo does &#8216;package management&#8217; because they have a command structure similar to the bsd &#8216;ports&#8217; system. It&#8217;s not quite as robust as RPM, but it also doesn&#8217;t restrict you in the manner rpm does also. In the end, it&#8217;s all about finding the right tool for the job, and learning to use that tool appropriately. I simply wish that more people would use the tools provided in the distribution, rather than ignoring them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ted Miller</title>
		<link>http://www.bofh-hunter.com/2009/01/02/evils-of-source/comment-page-1/#comment-116</link>
		<dc:creator>Ted Miller</dc:creator>
		<pubDate>Sat, 03 Jan 2009 03:23:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.bofh-hunter.com/?p=87#comment-116</guid>
		<description>But what about when I need a whole set of packages, none of which are available on any of the repos, I don&#039;t know how to build an .rpm file from scratch, and don&#039;t have a year of spare time to learn how?

The lack of serious photo packages like cinepaint, hugin, krita, ufraw and kphotoalbum drove me run virtual machines in VMWare to get around what I could not persuade Centos to do.  I tried Fedora, but it only had some of what I wanted, so I ended up with a virtual install of Gentoo (which seems to be the ultimate example of the oxymoron of a well-managed, built-from-source distro).  So far so good for my need, but I have not had it running long enough to declare it a success.</description>
		<content:encoded><![CDATA[<p>But what about when I need a whole set of packages, none of which are available on any of the repos, I don&#8217;t know how to build an .rpm file from scratch, and don&#8217;t have a year of spare time to learn how?</p>
<p>The lack of serious photo packages like cinepaint, hugin, krita, ufraw and kphotoalbum drove me run virtual machines in VMWare to get around what I could not persuade Centos to do.  I tried Fedora, but it only had some of what I wanted, so I ended up with a virtual install of Gentoo (which seems to be the ultimate example of the oxymoron of a well-managed, built-from-source distro).  So far so good for my need, but I have not had it running long enough to declare it a success.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ned</title>
		<link>http://www.bofh-hunter.com/2009/01/02/evils-of-source/comment-page-1/#comment-115</link>
		<dc:creator>Ned</dc:creator>
		<pubDate>Fri, 02 Jan 2009 19:23:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.bofh-hunter.com/?p=87#comment-115</guid>
		<description>I think Bill touched on one of the key issues above - planning. A package management system allows one to plan and manage deployments effectively whereas source installs have little if no planning/management structure.

It&#039;s simply more cost/time effective to spend the time upfront building a spec/package than to spend the time later dealing with snafu&#039;s caused by source installs. Even if you keep impeccable records, what happens when you move on and the next System Admin has to try to pick up the pieces and maintain that system?

As Jim says - the package management system works, so use it!</description>
		<content:encoded><![CDATA[<p>I think Bill touched on one of the key issues above &#8211; planning. A package management system allows one to plan and manage deployments effectively whereas source installs have little if no planning/management structure.</p>
<p>It&#8217;s simply more cost/time effective to spend the time upfront building a spec/package than to spend the time later dealing with snafu&#8217;s caused by source installs. Even if you keep impeccable records, what happens when you move on and the next System Admin has to try to pick up the pieces and maintain that system?</p>
<p>As Jim says &#8211; the package management system works, so use it!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jim Perrin</title>
		<link>http://www.bofh-hunter.com/2009/01/02/evils-of-source/comment-page-1/#comment-114</link>
		<dc:creator>Jim Perrin</dc:creator>
		<pubDate>Fri, 02 Jan 2009 17:46:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.bofh-hunter.com/?p=87#comment-114</guid>
		<description>Okay, let&#039;s talk compile-time options. Why build from source when you can simply fetch the src.rpm, and modify the spec to build as you see fit? I know several folks that do this, and infact there&#039;s a comment already about doing just that from Bill. He describes what I consider to be just about exactly the proper method for making the modifications you&#039;re talking about. Doing so, you can still use the system package management for security audits, file verification, install, update and removal. Keep in mind that this is about package management in general. Nearly every major distribution on the planet has gone the way of package management for a reason. Using it appropriately rather than fighting with it has saved me (and probably countless other admins) loads of time and frustration. If you choose to do things differently and that method works for you, then that&#039;s fine. It&#039;s good to get a dissenting voice every now and then.</description>
		<content:encoded><![CDATA[<p>Okay, let&#8217;s talk compile-time options. Why build from source when you can simply fetch the src.rpm, and modify the spec to build as you see fit? I know several folks that do this, and infact there&#8217;s a comment already about doing just that from Bill. He describes what I consider to be just about exactly the proper method for making the modifications you&#8217;re talking about. Doing so, you can still use the system package management for security audits, file verification, install, update and removal. Keep in mind that this is about package management in general. Nearly every major distribution on the planet has gone the way of package management for a reason. Using it appropriately rather than fighting with it has saved me (and probably countless other admins) loads of time and frustration. If you choose to do things differently and that method works for you, then that&#8217;s fine. It&#8217;s good to get a dissenting voice every now and then.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bill</title>
		<link>http://www.bofh-hunter.com/2009/01/02/evils-of-source/comment-page-1/#comment-113</link>
		<dc:creator>Bill</dc:creator>
		<pubDate>Fri, 02 Jan 2009 17:28:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.bofh-hunter.com/?p=87#comment-113</guid>
		<description>I think the idea of compiling from source should be a last resort. Usually I compile from source by hand - but only when I&#039;m trying to build/fix a spec file. EG, to see what is wrong and fix it!

For things like apache - that is what dynamic module support is for. 

For perl, well - perl is messed up on redhat anyway :-&gt; ( see here as an example, http://linux.slashdot.org/linux/08/08/29/1423201.shtml ). The solution here should not be to roll your own perl dist but rather to take the default .spec file and adjust it to your needing. Then submit a patch to redhat/other explaining what you did and why. Try to get the upstream to fix it.

Once you have that updated spec file you can rpmbuild to your hearts content on each arch and deploy it. Install perl into /usr/local or /opt/perl or whatever. Make your code use that local install until the upstream fixes the problem.

Done... 

This does take a bit of planning and such, but it makes for a more repeatable environment. What happens if that box suddenly pukes? Backups are gone, assume all worst cases. Now you have to remember just how you got around that problem 6 months ago on top of all the other crap associated with that box!</description>
		<content:encoded><![CDATA[<p>I think the idea of compiling from source should be a last resort. Usually I compile from source by hand &#8211; but only when I&#8217;m trying to build/fix a spec file. EG, to see what is wrong and fix it!</p>
<p>For things like apache &#8211; that is what dynamic module support is for. </p>
<p>For perl, well &#8211; perl is messed up on redhat anyway :-&gt; ( see here as an example, <a href="http://linux.slashdot.org/linux/08/08/29/1423201.shtml" rel="nofollow">http://linux.slashdot.org/linux/08/08/29/1423201.shtml</a> ). The solution here should not be to roll your own perl dist but rather to take the default .spec file and adjust it to your needing. Then submit a patch to redhat/other explaining what you did and why. Try to get the upstream to fix it.</p>
<p>Once you have that updated spec file you can rpmbuild to your hearts content on each arch and deploy it. Install perl into /usr/local or /opt/perl or whatever. Make your code use that local install until the upstream fixes the problem.</p>
<p>Done&#8230; </p>
<p>This does take a bit of planning and such, but it makes for a more repeatable environment. What happens if that box suddenly pukes? Backups are gone, assume all worst cases. Now you have to remember just how you got around that problem 6 months ago on top of all the other crap associated with that box!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Crawford</title>
		<link>http://www.bofh-hunter.com/2009/01/02/evils-of-source/comment-page-1/#comment-112</link>
		<dc:creator>Andrew Crawford</dc:creator>
		<pubDate>Fri, 02 Jan 2009 17:21:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.bofh-hunter.com/?p=87#comment-112</guid>
		<description>I note that you ignored the issue about compile-time options, which was really my main point.

However, to respond to your point about dependencies due to features that some users might need, I think you&#039;ve actually highlighted one of the weaknesses of package management. Maybe (for example) X11 really IS a dependency for some GUI tool that comes with a package. But I know that I will never run that tool on this machine. And I&#039;m sure as heck not going to install X11 just to satisfy the dependency. Building from source is the least-worst option.</description>
		<content:encoded><![CDATA[<p>I note that you ignored the issue about compile-time options, which was really my main point.</p>
<p>However, to respond to your point about dependencies due to features that some users might need, I think you&#8217;ve actually highlighted one of the weaknesses of package management. Maybe (for example) X11 really IS a dependency for some GUI tool that comes with a package. But I know that I will never run that tool on this machine. And I&#8217;m sure as heck not going to install X11 just to satisfy the dependency. Building from source is the least-worst option.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
