User Tools

Site Tools


debiansnippets

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
debiansnippets [2006/10/27 09:47]
195.35.72.54 old revision restored
debiansnippets [2008/07/30 21:24] (current)
78.21.189.206
Line 1: Line 1:
 +====== Debian Snippets ======
  
 +  * ''/etc/apt/[[sources.list]]''
 +
 +===== Debian packages from CPAN =====
 +
 +Sometimes you can't get the right binary package of something you want to install. Here are two ways to build debian packages from (Perl) CPAN sources or debian sourcepackages.
 +
 +Build and install a debian package from CPAN module:
 +
 +  #> dh-make-perl --build --install --cpan <modulename>
 +
 +get dependencies and build the package:
 +
 +  #> apt-get build-dep <packagename>
 +  #> apt-get -b source <packagename>
 +
 +===== Set packages to hold =====
 +
 +Sometimes you want to keep an older version of a package even if you do an upgrade. This is how to do it.
 +
 +  #> echo "<package> hold" | dpkg --set-selections
 +
 +===== Send mail on new packages =====
 +
 +This little script (placed in ''/etc/cron.weekly'') checks for new packages and sends a mail to the sysadmin to remeber him to upgrade.
 +<code bash>
 +#!/bin/sh
 +
 +HOSTNAME=`hostname`
 +MAILTO="sysadmin@domain.com"
 +MAILFROM="apt checker <sysadmin@domain.com>"
 +
 +apt-get update >/dev/null 2>&1
 +
 +NEWPACKAGES=`apt-get --print-uris -qq -y upgrade 2>/dev/null |awk '{print $2}'`
 +
 +if [ ! -z "$NEWPACKAGES" ]
 +then
 + mail -a "From: $MAILFROM" -s "New Packages for $HOSTNAME" $MAILTO <<EOF
 +There are new Packages available for $HOSTNAME:
 +
 +$NEWPACKAGES
 +
 +please run:
 + ssh root@$HOSTNAME 'apt-get upgrade'
 +
 +EOF
 +fi
 +
 +exit 0;
 +</code>
 +Note: the package __cron-apt__ gives a similar functionality.
 +
 +===== Set SUID bits for Debian files =====
 +
 +If you want to set a SUID bit on a file from a debian package with having the original permissions restored on each upgrade use ''dpkg-statoverride'':
 +
 +  #> dpkg-statoverride --update --add root root 2754 /path/to/binary
 +
 +===== Conflicting files in packages =====
 +
 +Sometimes (especially when using the unstable branch) a package is uninstallable because it contains a file which is already provided by another installed package. You can make DPKG ignore this conflict by removing the file from the file list of the installed package. This list is stored under ''/var/lib/dpkg/info/<package>.list''.
 +
 +//But you shouldn't do that,// because it'll cause you problems later on.  Instead, use:
 +
 + **''dpkg-divert packagename --add /path/to/conflicting/file''**
 +
 +> What packagename should i use in that dpkg-divert call? The installed one or the one i want to install? -David
 +
 +===== Orphan files =====
 +
 +To check which files in a directory are not from an installed package you can use the following snippet:
 +
 +  #> for x in `find /usr/lib/`; do dpkg -S $x >/dev/null 2>&1 || echo $x; done