<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0" xml:base="http://slack-tux.org">
<channel>
 <title>Slack/Tux</title>
 <link>http://slack-tux.org</link>
 <description />
 <language>en</language>
<geo:lat>49.262196</geo:lat><geo:long>-122.885275</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-sa/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/SlackTux" type="application/rss+xml" /><item>
 <title>HOWTO - Resolve 32-Bit Dependencies on 64-Bit Ubuntu or Debian with getlibs</title>
 <link>http://feeds.feedburner.com/~r/SlackTux/~3/324160323/resolve-dependencies-with-getlibs</link>
 <description>&lt;p&gt;One of the more irritating aspects of running a 64-bit distribution is that there are still a large number of applications that are not compiled as native 64-bit binaries. This leads to dependence on 32-bit libraries, and managing these 32-bit dependencies can be a nightmare. There is no shortage of users who have introduced more problems than they have solved by forcing the installation of 32-bit libraries.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cappy.wikidot.com/" title="Cappy"&gt;Cappy&lt;/a&gt; has released a handy script to detect and install libraries and other dependencies for 32-bit applications on 64-bit Ubuntu GNU/Linux. Handy things it can do include fetching missing libraries either by name, and figuring out which ones are needed when presented with a given binary.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: This script makes use of the Debian package management system, and is unlikely to function properly on distributions that are not Debian-based.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Installing getlibs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Installation couldn't be simpler. Download getlibs, and double-click the .deb package. If you download getlibs via Firefox, you should get an 'Open with gdebi' option or something equivalent. To install via commandline, try:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
$ wget &lt;a href="http://www.boundlesssupremacy.com/Cappy/getlibs/getlibs-all.deb" title="http://www.boundlesssupremacy.com/Cappy/getlibs/getlibs-all.deb"&gt;http://www.boundlesssupremacy.com/Cappy/getlibs/getlibs-all.deb&lt;/a&gt;&lt;br /&gt;
$ sudo dpkg -i getlibs-all.deb&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Installing Libraries with gelibs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Usage is pretty straightforward. If you know the name of the library you need, you can feed it to getlibs, and it should fetch it.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;strong&gt;$ sudo getlibs -l libogg.so.0 libSDL-1.2.so.0&lt;/strong&gt;&lt;br /&gt;
Matched library libogg.so.0 to libogg0&lt;br /&gt;
Matched library libSDL-1.2.so.0 to libsdl1.2debian-all&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree&lt;br /&gt;
Reading state information... Done&lt;br /&gt;
libogg0 is already the newest version.&lt;br /&gt;
The following NEW packages will be installed:&lt;br /&gt;
  libsdl1.2debian-all&lt;br /&gt;
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.&lt;br /&gt;
Need to get 213kB of archives.&lt;br /&gt;
After unpacking 20.5kB of additional disk space will be used.&lt;br /&gt;
Do you want to continue [Y/n]?&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Alternatively, provide &lt;em&gt;getlibs&lt;/em&gt; with the location of a given binary, and it should figure out what is missing (if anything) and install it. For example, say the binary for &lt;a href="http://www.secondlife.com/" title="Second Life"&gt;Second Life&lt;/a&gt; was located at &lt;em&gt;/opt/32/secondlife/secondlife.bin&lt;/em&gt;:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
$ sudo getlibs /opt/32/secondlife/secondlife.bin&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;At which point it should match any libraries that are not currently installed and fetch them, assuming they are available (see above for output example).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://ubuntuforums.org/showthread.php?t=474790" title="http://ubuntuforums.org/showthread.php?t=474790"&gt;http://ubuntuforums.org/showthread.php?t=474790&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/SlackTux/~4/324160323" height="1" width="1"/&gt;</description>
 <comments>http://slack-tux.org/howto/resolve-dependencies-with-getlibs#comments</comments>
 <pubDate>Tue, 24 Jun 2008 08:24:05 -0800</pubDate>
 <dc:creator>colstrom</dc:creator>
 <guid isPermaLink="false">8 at http://slack-tux.org</guid>
<feedburner:origLink>http://slack-tux.org/howto/resolve-dependencies-with-getlibs</feedburner:origLink></item>
<item>
 <title>HOWTO - Setup Parental Controls with DansGuardian and Squid</title>
 <link>http://feeds.feedburner.com/~r/SlackTux/~3/315736507/setup-content-filtering-with-dansguardian</link>
 <description>&lt;p&gt;Ignoring the dangers implicit with censorship, this guide should provide a simple way to filter what some may consider 'objectionable' content from the vast pit of corruption that is the web (this is not meant as a negative thing, mind you. Just a simple observation).&lt;/p&gt;
&lt;p&gt;The configuration outlined here may also have the added benefit of caching web requests, which can provide not-insignificant performance gains for many home users, most often in the case of frequent accesses to the same site (such as &lt;a href="http://www.facebook.com/" rel="nofollow"&gt;Facebook&lt;/a&gt;, which seems to be popular at the time of this writing).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requirements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Proxy software (we will use &lt;a href="http://www.squid-cache.org/" rel="nofollow"&gt;Squid&lt;/a&gt; in this example)&lt;/li&gt;
&lt;li&gt;Something to filter the content (we will use &lt;a href="http://dansguardian.org/" rel="nofollow"&gt;DansGuardian&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;A blacklist of some sort (Optional)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Why Content Filtering&lt;/strong&gt;&lt;br /&gt;
A blacklist alone is no longer sufficient for filtering web content effectively. Given the rate at which the web is growing: Approximately 334 new domains were registered every minute over the last 24 hours, according to &lt;a href="http://www.domaintools.com/internet-statistics/" rel="nofollow"&gt;Domain Tools&lt;/a&gt;. Add the amount of new content being added to existing domains, and we have a lot of sites to filter. Managing a list of it all would not only require a massive amount of human effort (or computational resources), the size of such a list would be ridiculous, even if compressed. If every request to retreive a site were checked against such a list, the verification delay would be very inconvenient (think of feeding a 5GB+ file to grep, looking for a specific address).&lt;/p&gt;
&lt;p&gt;Enter Content Filtering, a technology that inspects individual pages for 'objectionable' material, and decides based on the &lt;em&gt;contents&lt;/em&gt; of those pages whether or not to allow access to them. A blacklist can supplement this technology to improve performance (if the blacklist is small enough, it can be faster to search than the contents of a large page).&lt;/p&gt;
&lt;p&gt;Together, they form an effective means of 'cleaning' the content served to users of your system (or network).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Installing and Configuring Squid&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;First, we need to install and configure a proxy. We'll be using squid for this example, as the caching capabilities it offers provide benefits not found in many competing proxies.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.squid-cache.org/Download/" rel="nofollow"&gt;Download Squid&lt;/a&gt; and install it.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
$ tar xzvf squid-*RELEASE*.tar.gz&lt;br /&gt;
$ cd squid-*&lt;br /&gt;
$ ./configure&lt;br /&gt;
$ make&lt;br /&gt;
# make install&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;In the case of Debian/Ubuntu users compiling from source, some minor tweaks should be made to the configure line, to accomodate the subtle differences in filesystem layout from what Squid would otherwise expect.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
$ ./configure --prefix=/usr --localstatedir=/var --libexecdir=/usr/lib/squid --srcdir=. --datadir=/usr/share/squid --sysconfdir=/etc/squid&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;While it is technically possible to build and install Squid on a Debian or Ubuntu system without these changes, they will ensure that the installation aligns with the general filesystem layout of those distributions, and should make distribution-specific troubleshooting a bit easier.&lt;/p&gt;
&lt;p&gt;Additionally, a minor tweak to &lt;em&gt;./src/Makefile.am&lt;/em&gt; in the directory you extracted to, prior to running &lt;em&gt;make&lt;/em&gt; will avoid the need to do silly things. Change this line:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
DEFAULT_LOG_PREFIX = $(localstatedir)/logs&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;To make it look like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
DEFAULT_LOG_PREFIX = $(localstatedir)/log&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Users of Debian-derivatives (such as Ubuntu or MEPIS) who do not wish to compile from source can simply fetch a recent binary from the supported repositories, and install it. This is easily accomplished with the provided package management tools:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
$ sudo apt-get install squid&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Edit &lt;em&gt;/etc/squid/squid.conf&lt;/em&gt; with your editor of choice, paying special attention to the acl/http_access section. Something similar to the following configuration should work (configure according to your network range, of course):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
acl local_network src 192.168.0.0/24 192.168.254.0/24&lt;br /&gt;
http_access allow local_network&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Installing and Configuring DansGuardian&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dansguardian.org/?page=download" rel="nofollow"&gt;Download DansGuardian&lt;/a&gt; and install it:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
$ tar xzvf DansGuardian-*&lt;br /&gt;
$ ./configure&lt;br /&gt;
$ make&lt;br /&gt;
# make install&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Debian/Ubuntu users can do the following:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
$ sudo apt-get install dansguardian&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Edit &lt;em&gt;/etc/dansguardian/dansguardian.conf&lt;/em&gt;, commenting out the &lt;code&gt;UNCONFIGURED&lt;/code&gt; line once complete. Things to pay attention to are...&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
filterip =&lt;br /&gt;
filterport = 8080&lt;br /&gt;
proxyip = 127.0.0.1&lt;br /&gt;
proxyport = 3128&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Configuring Firefox to Filter Content&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Setting up a content filtering proxy is effective, but only if it filters information. If requests are not directed through the proxy, it cannot effectively 'clean' the content of 'objectionable' material.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Edit -&amp;gt; Preferences -&amp;gt; General -&amp;gt; Connection Settings -&amp;gt; Manual Proxy Configuration&lt;/li&gt;
&lt;li&gt;Input 127.0.0.1 as the proxy IP&lt;/li&gt;
&lt;li&gt;Input 8080 as the proxy port&lt;/li&gt;
&lt;li&gt;Enable the checkbox for 'Use this proxy server for all protocols'&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Please note that these settings only affect Firefox. Other web browsers and software will need to be configured as well. Configuration steps should be similar. If you would like specific examples, please post your requests in the comments for this article.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Preventing Users from Disabling the Filter&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The restrictions created by a content-filtering proxy can be easily circumvented by simply not using the proxy. Assuming that the users so restricted do not have administrative access, this can be prevented as follows:&lt;/p&gt;
&lt;p&gt;Edit &lt;em&gt;/usr/lib/firefox/firefox.cfg&lt;/em&gt; and add the following entries:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
lockPref("network.proxy.http","127.0.0.1");&lt;br /&gt;
lockPref("network.proxy.http_port",8080);&lt;br /&gt;
lockPref("network.proxy.type,1);&lt;br /&gt;
lockPref("network.proxy.no_proxies_on","localhost,127.0.0.1");&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://unixadmintalk.com/f11/content-filtering-proxy-82337/" rel="nofollow"&gt;http://unixadmintalk.com/f11/content-filtering-proxy-82337/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wiki.squid-cache.org/SquidFaq/CompilingSquid" rel="nofollow"&gt;http://wiki.squid-cache.org/SquidFaq/CompilingSquid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ubuntuforums.org/showthread.php?t=207008" rel="nofollow"&gt;http://ubuntuforums.org/showthread.php?t=207008&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ubuntuforums.org/showthread.php?t=320733" rel="nofollow"&gt;http://ubuntuforums.org/showthread.php?t=320733&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dansguardian.org/downloads/content_filtering_challenges.pdf" rel="nofollow"&gt;http://dansguardian.org/downloads/content_filtering_challenges.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/SlackTux/~4/315736507" height="1" width="1"/&gt;</description>
 <comments>http://slack-tux.org/howto/setup-content-filtering-with-dansguardian#comments</comments>
 <pubDate>Thu, 19 Jun 2008 10:18:34 -0800</pubDate>
 <dc:creator>colstrom</dc:creator>
 <guid isPermaLink="false">5 at http://slack-tux.org</guid>
<feedburner:origLink>http://slack-tux.org/howto/setup-content-filtering-with-dansguardian</feedburner:origLink></item>
<item>
 <title>HOWTO - Fix Canonical Problems with .htaccess and mod_rewrite</title>
 <link>http://feeds.feedburner.com/~r/SlackTux/~3/313947040/fix-canonical-problems-with-mod_rewrite</link>
 <description>&lt;p&gt;Canonical problems occur when there is confusion over which version of a given document is 'official'.&lt;/p&gt;
&lt;p&gt;If a URI identifies a specific document, two different URIs are often treated as two different documents. If the contents of each are identical, it could be assumed that one is a copy of the other. In fact, if we treat them as two documents, that is the &lt;strong&gt;only&lt;/strong&gt; logical conclusion. How then, if both are truly identical in all ways other than URI (same timestamps, content, etc), are we to determine which is official?&lt;/p&gt;
&lt;p&gt;This is a canonical problem, and it can be fixed using mod_rewrite.&lt;/p&gt;
&lt;p&gt;The most common type of canonical problem occurs when search engines recognize &lt;a href="http://www.yourdomain.com" title="www.yourdomain.com"&gt;www.yourdomain.com&lt;/a&gt;, and yourdomain.com as different sites. A quick fix can be implemented in your .htaccess file like so (using mod_rewrite):&lt;/p&gt;
&lt;p&gt;Enable mod_rewrite if it is not already active:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And set up a rule to direct the unofficial (non-www in this case) to the official (www) with a status code indicating that this is a permanent redirect (HTTP 301).&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
RewriteCond %{HTTP_HOST} ^yourdomain.com$&lt;br /&gt;
RewriteRule (.*) http://www.yourdomain.com/$1 [R=301,L]&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This tells browsers and search bots that the canonical (official) URL for your site is the one with www, and that all requests should be directed there.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SlackTux/~4/313947040" height="1" width="1"/&gt;</description>
 <comments>http://slack-tux.org/howto/fix-canonical-problems-with-mod_rewrite#comments</comments>
 <pubDate>Tue, 17 Jun 2008 12:22:30 -0800</pubDate>
 <dc:creator>colstrom</dc:creator>
 <guid isPermaLink="false">4 at http://slack-tux.org</guid>
<feedburner:origLink>http://slack-tux.org/howto/fix-canonical-problems-with-mod_rewrite</feedburner:origLink></item>
<item>
 <title>HOWTO - Build .deb Packages from Source in Ubuntu</title>
 <link>http://feeds.feedburner.com/~r/SlackTux/~3/310753956/build-deb-packages-from-source</link>
 <description>&lt;p&gt;Sometimes, we need to build a package from source. This can be for performance reasons (architecture-specific optimizations), memory reasons (removing features we don't need), or just for kicks. In Ubuntu (or any other Debian derivative, for that matter), this can often pose a problem, as such hand-built packages are no longer managed by our Package Manager. Removal is rarely clean, and updates are no longer tracked.&lt;/p&gt;
&lt;p&gt;At least two solutions exist, each suited to a different purpose.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;apt-build&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The first method relies on the apt-build package, which fetches the latest source available in the repositories listed in your /etc/apt/sources.list file. This source is then compiled into a package (generally the same configuration as if you had installed the binary, unless you specify otherwise) and installed. Updates should still be managed as normal.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: This method is ideal if the package has source available in one of the repositories you have configured.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To install apt-build:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
$ sudo apt-get install apt-build&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This should add a local repository to /etc/apt/sources.list for any built packages. To ensure that the package manager is aware of this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
$ sudo apt-get update&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Building a package with the default options can be accomplished as easily as installing a precompiled binary package. For example, to build &lt;a href="http://labs.mozilla.com/2007/10/prism/"&gt;Prism&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
$ sudo apt-build install prism&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;checkinstall&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;On occasion, the need may arise for an application that is not included in the standard repositories (or any supplemental ones that have been configured). This is common with niche software, software with licensing complications that prevent it from being hosted in one of the repositories, abandonware, and applications that are have no maintainer beyond the upstream developers.&lt;/p&gt;
&lt;p&gt;For cases like these, checkinstall is an ideal solution, as it allows us to build a .deb package for easy removal later. This package will not have updates tracked, but does offer the most flexibility.&lt;/p&gt;
&lt;p&gt;To install checkinstall:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
$ sudo apt-get install checkinstall&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;With it installed, building from source follows the usual documentation for a package, with one minor adjustment: We substitute the &lt;em&gt;checkinstall&lt;/em&gt; command in place of &lt;em&gt;make install&lt;/em&gt;. For example:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
$ tar xjf package-source.tar.bz2&lt;br /&gt;
$ cd package-source&lt;br /&gt;
$ ./configure&lt;br /&gt;
$ make&lt;br /&gt;
$ sudo checkinstall&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;At this point, checkinstall will ask you for a few details about the application being built (package name, version number and such), and construct a .deb package with the appropriate metadata. It will be installed automatically, and the package-name.deb will reside in the current directory. It can be backed up or deleted, depending on your need. Reinstalling it is as simple as:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
$ sudo dpkg -i package-name.deb&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Removal follows the typical style:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
$ sudo apt-get remove --purge package-name&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Where &lt;em&gt;package-name&lt;/em&gt; is the name provided to checkinstall when it asked for it.&lt;/p&gt;
&lt;p&gt;Again, it is important to note that packages built with checkinstall are not tracked for updates. You need to ensure that you stay aware of any important updates for packages built like this. Many applications have RSS feeds or mailing lists for releases and updates, and subscribing to these could allow you to patch a vulnerable application before it becomes a problem.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SlackTux/~4/310753956" height="1" width="1"/&gt;</description>
 <comments>http://slack-tux.org/howto/build-deb-packages-from-source#comments</comments>
 <pubDate>Thu, 12 Jun 2008 08:51:22 -0800</pubDate>
 <dc:creator>colstrom</dc:creator>
 <guid isPermaLink="false">7 at http://slack-tux.org</guid>
<feedburner:origLink>http://slack-tux.org/howto/build-deb-packages-from-source</feedburner:origLink></item>
<item>
 <title>HOWTO - Forcing SSL Connections with .htaccess and mod_rewrite</title>
 <link>http://feeds.feedburner.com/~r/SlackTux/~3/308566324/force-ssl-with-mod_rewrite</link>
 <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Warning!&lt;/strong&gt; Forcing SSL use like this can cause more problems than it may be worth. Anything that is not SSL-aware will be unable to view your site. This can break compatibility with web services (see the example of FeedBurner below, including a workaround), search spiders (many may regard SSL-enabled content as private, and not index it), primitive scrapers (this is a good thing), certain desktop feed readers and blog publishing tools, and more.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you have SSL support enabled (either with a verified SSL certificate, or a self-signed one), you can require all connections to your site to use SSL with a .htaccess file. Note that this uses mod_rewrite.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requirements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web Server running Apache&lt;/li&gt;
&lt;li&gt;mod_rewrite installed and active&lt;/li&gt;
&lt;li&gt;An SSL certificate installed and configured&lt;/li&gt;
&lt;li&gt;Read/Write permissions on the file '.htaccess' in whatever directory you are configuring&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enable mod_rewrite if you have not already done so, by adding the following line to your .htaccess file:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Important Note!&lt;/strong&gt; Setting &lt;code&gt;RewriteEngine On&lt;/code&gt; multiple times in the same file or in multiple files (such as in a subdirectory) can trigger Internal Server Errors. If some (or all) pages return an HTTP 500 status code after enabling this, check to see if it is already enabled in the current .htaccess, or in the parent directory (check all the way back until you hit your &lt;code&gt;DocumentRoot&lt;/code&gt; (usually public_html).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;With it enabled, we can check which port the request is for (by default 80 is HTTP, 443 is HTTPS). If it is HTTP, silently rewrite the request to HTTPS:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
RewriteCond %{SERVER_PORT} 80&lt;br /&gt;
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;As mentioned about, this can cause problems with RSS feeds. For example, &lt;a href="http://www.feedburner.com/" rel="nofollow"&gt;FeedBurner&lt;/a&gt; is not SSL-aware at the time of this writing, and is unable to parse feeds that have SSL enforced like this. For the specific case of FeedBurner, add the following line before the RewriteRule line:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SlackTux/~4/308566324" height="1" width="1"/&gt;</description>
 <comments>http://slack-tux.org/howto/force-ssl-with-mod_rewrite#comments</comments>
 <pubDate>Mon, 09 Jun 2008 10:03:40 -0800</pubDate>
 <dc:creator>colstrom</dc:creator>
 <guid isPermaLink="false">3 at http://slack-tux.org</guid>
<feedburner:origLink>http://slack-tux.org/howto/force-ssl-with-mod_rewrite</feedburner:origLink></item>
<item>
 <title>Under New Management</title>
 <link>http://feeds.feedburner.com/~r/SlackTux/~3/309033524/under-new-management</link>
 <description>&lt;p&gt;Slack/Tux has been bought by &lt;a href="http://chris.olstrom.com" title="Chris Olstrom"&gt;Chris Olstrom&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Anyone familiar with the previous site will notice that the ad-farm has been taken down in favour of a quality content (in time, of course. I'm sure it looks rather barren at the moment). Though a large number of the links floating around out there indicate that Slackware-related content is available here (Italian documentation, as far as I understand), this is not the case. Allow me to extend my apologies for this deception. These links exist from days long past, and are beyond the reach of my editing powers.&lt;/p&gt;
&lt;p&gt;I look forward to this space becoming something of value to the GNU/Linux community, and welcome you all (regardless of your chosen distribution).&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SlackTux/~4/309033524" height="1" width="1"/&gt;</description>
 <pubDate>Sun, 28 Oct 2007 22:46:00 -0800</pubDate>
 <dc:creator>colstrom</dc:creator>
 <guid isPermaLink="false">1 at http://slack-tux.org</guid>
<feedburner:origLink>http://slack-tux.org/news/under-new-management</feedburner:origLink></item>
<item>
 <title>HOWTO - Dual WAN Setup under GNU/Linux</title>
 <link>http://feeds.feedburner.com/~r/SlackTux/~3/308277468/setup-dual-wan</link>
 <description>&lt;p&gt;This article presents a reasonably straightforward approach to using two independent internet connections on one system. While the examples are for multiple ethernet connections, some minor modifications could apply the methods to a mixed ethernet/wireless system.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: The timestamp on this article may seem unusual. This was written before Slack/Tux was purchased, and relocated to this site, where it was more fitting.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2008-05-23: &lt;em&gt;The concepts outlined here also work with virtual interfaces (aliases). This can be used to configure multiple IPs on a single interface. While this doesn't have a lot of practical advantages for desktop users, there is significant value for servers. Thanks to Mickael Maddison for testing this.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Keep in mind that multiple virtual interfaces would still be a single physical connection though, so the maximum throughput would remain the same. This could also be used to allow a single ethernet card to span multiple subnets.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requirements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PC or router running GNU/Linux&lt;/li&gt;
&lt;li&gt;Multiple WAN Connections, either from the same ISP or different ones&lt;/li&gt;
&lt;li&gt;A dedicated ethernet adapter for each connection.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Update 2008-05-23: &lt;em&gt;It should be noted that this example requires all involved interfaces to be configured already. It assumes IPs have been assigned without using DHCP, though minor changes could account for that. The interfaces must also be active (not stopped). Thanks for Mickael Maddison pointing out that I hadn't mentioned that.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example Setup&lt;/strong&gt;&lt;br /&gt;
In this example, I have a 10MBit Cable connection via &lt;a href="http://www.shaw.ca/" rel="nofollow"&gt;Shaw&lt;/a&gt; on eth1, and a 6MBit ADSL connection via &lt;a href="http://www.telus.com/" rel="nofollow"&gt;TELUS&lt;/a&gt; on eth2.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;eth1 - IP 192.168.254.100 / Gateway 192.168.254.1&lt;/li&gt;
&lt;li&gt;eth2 - IP 192.168.1.100 / Gateway 192.168.1.254&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Simple Configuration&lt;/strong&gt;&lt;br /&gt;
First, we need to add two lines to /etc/iproute2/rt_tables&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
1 Shaw&lt;br /&gt;
2 TELUS&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
And then set up the routing for those tables.&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# ip route add 192.168.254.0/24 dev eth1 src 192.168.254.100 table Shaw&lt;br /&gt;
# ip route add default via 192.168.254.1 table Shaw&lt;br /&gt;
# ip route add 192.168.1.0/24 dev eth2 src 192.168.1.100 table TELUS&lt;br /&gt;
# ip route add default via 192.168.1.254 table TELUS&lt;br /&gt;
# ip rule add from 192.168.254.100 table Shaw&lt;br /&gt;
# ip rule add from 192.168.1.100 table TELUS&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Set up evenly weighted round-robin routing for the interfaces.&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# ip route add default scope global nexthop via 192.168.254.1 dev eth1 weight 1 nexthop via 192.168.1.254 dev eth2 weight 1&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fixes and workarounds&lt;/strong&gt;&lt;br /&gt;
In the event that you receive a RTNETLINK answers: File exists error, replace the previous entry with...&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# ip route append default scope global nexthop via 192.168.254.1 dev eth1 weight 1 nexthop via 192.168.1.254 dev eth2 weight 1&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Then remove the earlier route:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# ip route del&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Alternatively, omiting both&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# ip route add default via 192.168.254.1 table Shaw&lt;br /&gt;
# ip route add default via 192.168.1.254 table TELUS&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
should prevent this as well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Slightly more complex configurations&lt;/strong&gt;&lt;br /&gt;
In addition to the basic setup here, the interfaces can be weighted differently, to favour one over the other (useful if one is a larger pipe, as in my setup here).&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
# ip route append default scope global nexthop via 192.168.254.1 dev eth1 weight 5 nexthop via 192.168.1.254 dev eth2 weight 3&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
In the case of IP-bound services (example: a GigaNews account, which does not allow simultaneous connections from different IPs), a static route is simple to configure:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
# ip route add 216.196.97.131 via 192.168.254.1&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If one of your ISP blocks DNS queries from non-subscribers, then you will need to ensure that your primary DNS server is ISP-agnostic. OpenDNS is a great solution for this. Add the appropriate entries to /etc/resolv.conf&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
nameserver 208.67.222.222&lt;br /&gt;
nameserver 208.67.220.220&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://lartc.org/howto/lartc.rpdb.multiple-links.html"&gt;http://lartc.org/howto/lartc.rpdb.multiple-links.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.linuxquestions.org/linux/answers/Networking/Spanning_Multiple_DSLs"&gt;http://www.linuxquestions.org/linux/answers/Networking/Spanning_Multiple_DSLs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mailman.icsi.berkeley.edu/pipermail/xorp-users/2004-October/000266.html"&gt;http://mailman.icsi.berkeley.edu/pipermail/xorp-users/2004-October/000266.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/SlackTux/~4/308277468" height="1" width="1"/&gt;</description>
 <comments>http://slack-tux.org/howto/setup-dual-wan#comments</comments>
 <pubDate>Thu, 14 Jun 2007 04:35:00 -0800</pubDate>
 <dc:creator>colstrom</dc:creator>
 <guid isPermaLink="false">6 at http://slack-tux.org</guid>
<feedburner:origLink>http://slack-tux.org/howto/setup-dual-wan</feedburner:origLink></item>
</channel>
</rss>
