Things new in Squeeze

Debian Guides

Here are the upstream release notes.

/etc/profile

Read /usr/share/doc/base-files/README and see that it is left to the admin to update /etc/profile on an upgrade. This is needed for default bash completion.

sudo cp /usr/share/base-files/profile /etc/profile

The new changes to /etc/profile introduce the Red Hat style /etc/profile.d/ interface. This is used for the bash_completion.sh to be loaded. Really this is a violation of policy. After installation tools should be ready to go without needing to log out. But any use of the /etc/profile.d/ directory will require a user to log out and then back in again to have the new file there used. Currently the only file there is bash_completion.sh which is acceptable to have there since it would need to be manually sourced in running shells anyway. But keep an eye on /etc/profile.d or inappropriate feature creep will occur. Let's hope that use of it isn't expanded any further.

console-tools and kbd

The previous console-tools is no longer maintained upstream. It is being phased out and replaced with kbd. The package kbd is installed on new machines. Nothing is done for console-tools however. If you want the upgrade to be the same as a new install then you need to install kdb.

sudo apt-get install kbd

Grub2 aka grub-pc

The old grub 0.97 has been replaced with Grub 2 the grub-pc 1.98 from the grub2 package. This is a big noisy change. The beautiful colors of the old grub have been replaced with an abhorrent splash background. Yuck! In particular the count down timer ticking off seconds is now very hard to see when overlaid on the noise of the background. It appears that this is putting the console into framebuffer mode and using a graphics menu instead of a text menu.

UPDATE! This has been addressed somewhat by choosing a different splash screen that is much less noisy. The new one is actually a little cute. It doesn't suffer from the unreadable display problem of the older one. Even though I don't on principle like splash screens I can live with the current one and will leave it in place because it now doesn't really do harm.

To change from the boot splash look in /etc/default/grub and uncomment the following.

GRUB_TERMINAL=console

To complete the upgrade from the previous grub to the new grub you must manually run the upgrade-from-grub-legacy script and then remove the previous menu.lst file.

upgrade-from-grub-legacy
echo rm -f /boot/grub/menu.lst*

PolicyKit

A new root access layer appears. Here is a reference:

http://www.debian.org/releases/stable/amd64/release-notes/ch-information.en.html#id442720

5.6.2. Device and other administrative permissions

Specific permissions on devices are granted automatically to the user currently logged on physically to the system: video and audio devices, network roaming, power management, device mounting. The cdrom, floppy, audio, video, plugdev and powerdev groups are no longer useful. See the consolekit documentation for more information.

Most graphical programs requiring root permissions now rely on PolicyKit to do so, instead of gksu. The recommended way to give a user administrative rights is to add it to the sudo group.

Network Manager

This really isn't anything new for Squeeze but Network Manager is still causing problems. Upon an upgrade from Lenny to Squeeze I was left with a system without any networking! That could have been very bad if I hadn't been just across the room from it. Looking at the problem it seems that Network Manager edited /etc/network/interfaces and commented out the network interface line "iface eth0 inet dhcp" line replacing it with a line "#NetworkManager#iface eth0 inet dhcp" instead. That prevented ifupdown from doing the right thing. And since I was running on the text terminal over ssh in server mode without X or GNOME running it meant that Network Manager wasn't running to start the network. That is pure Evil and would completely break a remote server.

Another problem I ran into at a different time was that Evolution would ask NM over D-bus if there was a network and NM would say no and Evolution would be in permanent offline mode. See for example Bug#549451 and Bug#530024 . NM wants to manage all interfaces and is confused if it isn't such as if the default "iface eth0 inet dhcp" were in the /etc/network/interfaces file. Since network-manager is only useful on a mobile device for managing wifi connections I happily removed NM on my system and then Evolution worked fine not knowing if the network was online or offline.

apt-get remove network-manager

Of course on a laptop having a wifi manager is very useful. I have been using wicd and finding it much better behaved. This isn't needed on a desktop or server that is always connected to a network. But on a mobile device like a laptop you probably want something there.

apt-get install wicd

DHCP Server Changes

The package name changes from dhcp3-server to isc-dhcp-server. This mostly works out of the box. Along with this comes /etc/ directory name changes. /etc/dhcp3 becomes /etc/dhcp.

To follow this change you need to move your customized dhcpd.conf file containing your local configuration.

mv /etc/dhcp3/dhcpd.conf /etc/dhcpd/

Also move any files that are included in your configuration. Edit the file and ensure that any include statements now include the files from the new directory. I typically set up a dual failover pair of dhcp servers and keep the shared part of the configuration in an included file.

This name change of course means that the service has changed names. If you have been restarting the old service using the dhcp3-server it now must be called using the isc-dhcp-server name.

service isc-dhcp-server restart

X.org Changes

Much Simplified Configuration File

The X.org configuration engine is now much smarter. Previously much information needed to be specified explicitly in the file. Now very little information needs to be specified explicitly. In some cases no configuration file is needed at all. If you are upgrading you should try moving the file out of the way and then reconfiguring to generate a new scratch built version of the file.

Suggestions from the net are to start out without an xorg.conf file. But if one is needed then start by generating one from X using the -configure option. I haven't actually tried this yet but capturing the information anyway.

X -configure

Dual Monitor Support Changes

Dual monitor support is no longer configured in the X configuration file. Although it still can optionally be placed there. Now this is a userland operation using the xrandr interface. This allows useful scripted configurations. Use the 'xrandr --query' to print attached device information and then use the device information to specify where the monitors are placed in the larger logical screen.

A simple $HOME/.xesssion file:

#!/bin/bash --login
if xrandr --query | grep -q HDMI2; then
  xrandr --auto --output HDMI2 --right-of HDMI1
fi
exec x-session-manager

XTerm Hides Pointer By Default

The default value for 'pointerMode' has changed. 'pointerMode' specifies when the pointer may be hidden as the user types. It will be redisplayed if the user moves the mouse, or clicks one of its buttons. Previously the default value was "0" meaning never hide the pointer. The default is now "1" meaning hide the pointer after the user has typed, if the xterm has not activated mouse mode. To restore the previous behavior set the X resource XTerm*pointerMode to "0".

XTerm*pointerMode:0

Control-Alt-Backspace No Longer Kills X11

This appears to be an Ubuntu change that flowed into Debian. Or Tom H suggests (private email) that it flowed from upstream into Ubuntu. Perhaps it was convergent activity. See these references.

# dpkg-reconfigure --priority=low keyboard-configuration
...Use Control+Alt+Backspace to terminate the X server?...

...Interactively set up the keyboard...
$ setxkbmap -option terminate:ctrl_alt_bksp
...Also set up the compose key too...
$ setxkbmap -model pc104 -layout us -option compose:menu -option terminate:ctrl_alt_bksp

That information is stored in /etc/default/keyboard where it sets XKBOPTIONS="terminate:ctrl_alt_bksp" there. Update: However that is only true if console-setup package is installed. New systems are installed with it. Older upgraded systems won't have it. Maybe. I need to do some testing to determine the actual status of console-setup versus kbd in Debian in new installations versus upgrades. Consider this paragraph still very fuzzy information.

Update: Instead of Control-Alt-Backspace a serviceable replacement is Alt-SysRq-k using the Magic SysRq Key. Also useful as additional capability is the "REISUB" sequence.

New "service" command for /etc/init.d/* scripts

New to Debian is the service(8) command presumably from Red Hat systems. In Squeeze and later this is presumably now the preferred way to start /etc/init.d/* scripts. I would like to find a release note reference for this change before I consider it official. However it does seem to have a purpose. The documentation says:

service runs a System V init script in as predictable environment as possible, removing most environment variables and with current working directory set to /.

The important problem is that exported envirionment variables from a user environment will bleed into /etc/init.d/* when starting them by hand manually. This will create a difference from starting the script by the normal boot time rc process. Using service cleans the environment similarly to 'env -i' and will lead to more consistent sytem operation for cases when environment variables matter.

Sudo HOME and MAIL variables

An upstream change in sudo propagated through with version 1.7.4p4. Here is the upstream change. Note that this is an upstream change and not a Debian specific change. It isn't Debian's fault!

 * The HOME and MAIL environment variables are now reset based on the
   target user's password database entry when the env_reset sudoers
   option
   is enabled (which is the case in the default configuration).  Users
   wishing to preserve the original values should use a sudoers entry
   like:
        Defaults env_keep += HOME
   to preserve the old value of HOME and
        Defaults env_keep += MAIL
   to preserve the old value of MAIL.

/etc/modprobe.d/linux-sound-base_noOSS

In Squeeze warnings are now issued for any file in /etc/modprobe.d/ that doesn't match *.conf (aka does not end with .conf suffix). That is fine. But apparently /etc/modprobe.d/linux-sound-base_noOSS from Lenny is left behind and not upgraded by the linux-sound-base package. This is a bug in the linux-sound-base package. A previous version of the package put this symlink into place and later versions forgot about it. If one exists then verify that the new symlink exists and remove the old unneeded one.

ls -ld /etc/modprobe.d/linux-sound-base_noOSS.conf
rm -f /etc/modprobe.d/linux-sound-base_noOSS

xserver-xorg-input-wacom

The xserver-xorg-input-wacom package is buggy and does not upgrade properly. Apparently sometimes it does and sometimes it doesn't. See Bug#565126 for for details. There have been many people hit this on the mailing lists. A workaround for me was to purge (which also removed one meta dependency package) and then reinstall it. Hopefully this will get fixed before release.

apt-get remove --purge xserver-xorg-input-wacom
apt-get install xserver-xorg-input-all

umask setting for User Private Groups is Lost

The umask setting has migrated out of /etc/profile. This means that setting up a default umask of 02 for UPG is no longer a matter of changing it in the /etc/profile file. See http://wiki.debian.org/DebianDesktopHowTo for some information and Bug#336214 for more.

Add this line (after "end of pam-auth-update config", if it is before then pam-auth-update used by the packages will complain) to /etc/pam.d/common-session:

session		optional	pam_umask.so umask=002

Add this file to /etc/X11/Xsession.d/95umask-local

umask 02

Automatic fsck at boot

I have a machine without console access. If for any reason the system decides to interactively fsck at boot time then the machine is stuck waiting or console access. If none is available then the machine cannot boot. To enable a non-interactive boot in this case set FSCKFIX=yes in the /etc/default/rcS file.

sed --in-place "s/^FSCKFIX=no$/FSCKFIX=yes/" /etc/default/rcS

htdig cron noise

The htdig package (which may get pulled in as a dependency) generates noise from cron every night if /bin/sh is linked to bash. Inside the script they are using a process in the background and then killing it. Bash always prints the status of killed processes when those processes are killed with any signal other than SIGINT or SIGPIPE. This is arguably a bug in bash. But it seems unlikely to be fixed any time soon. Here is a reference.

The minimal fix is to change the kill to use SIGINT instead of the default kill signal SIGKILL.

sed --in-place "s/^kill /kill -s INT /" /etc/cron.daily/htdig

However that isn't the most optimal improvement. The script also creates a lockfile regardless of whether it needs to run or not. That overhead can be removed. See Bug#563260. In there is a longer description of the problem. And hopefully in the future a notice of closure if the package is ever updated again. It has become relatively unmaintained.

APT Unattended Foo

This is not new in Squeeze but continues from Lenny. The update-manager (part of GNOME) is installed and pulls in update-notifier. These annoy me with desktop poppops at inconvenient times. I don't really want this installed and on my system and so remove them. There is of course the classic cron-apt and I have my own apt-auto scripts so these aren't desireable for me. Note that update-manager from Lenny seems to have dissappeared in Squeeze.

apt-get remove python-software-properties software-properties-gtk unattended-upgrades update-notifier

See

/usr/share/doc/unattended-upgrades/README
https://wiki.ubuntu.com/AutomaticUpdates

Cron Noise

insserv: warning: current stop runlevel(s) (1) of script `cron' overwrites defaults (empty).

Not sure on this one. Seeing it and documenting it here. Will need to come back later and do more testing on it. I know that Bug#583714 is related.

Update: Lenny had cron saying:

update-rc.d cron start 89 2 3 4 5 . stop 11 1 . >/dev/null

But Squeeze and later cron says:

update-rc.d cron start 89 2 3 4 5 . >/dev/null

There is apparently a movement afoot to drop the stop scripts at shutdown time and simply let them die when the machine reboots. This is fairly innocuous but in order to appear as a fresh install the kill script should be removed. This will be K11cron in the older Lenny with legacy boot but will be of dynamic naming in the new dynamic dependency boot system.

rm -f /etc/rc{0,1,6}.d/K??cron

The /etc/init.d/README says:

# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6

but cron doesn't have that. Need more research to figure out what is happening there.

Default Locale Changes: /etc/environment and /etc/default/locale

Older versions of Debian used /etc/environment to hold the default system locale setting. This has been moved to /etc/default/locale but is not upgraded automatically.

# dpkg-reconfigure locales
# : > /etc/environment

Postgrey changed ports

The postgrey server changed ports. Need to change the port from port 60000 to port 10023 in the /etc/postfix/main.cf file.

sed --in-place 's/inet:127.0.0.1:60000/inet:127.0.0.1:10023/' /etc/postfix/main.cf

Dependency Based Boot Sequence

The default for a new intallation is the new dependency based boot system. This depends upon every init.d script having LSB headers stating their dependencies. Upon upgrade of sysv-rc the postinst script will try to upgrade the system. This may fail and you probably won't notice during the upgrade. If it fails it will leave behind the /etc/init.d/.legacy-bootordering file. After upgrading you should reconfigure the sysv-rc package and see what it complains about and then take action manually.

ls -ldog /etc/init.d/.legacy-bootordering
dpkg-reconfigure sysv-rc

Munin

Due to Bug#553555 the munin html directory was moved from /var/www/munin/ to /var/cache/munin/www/ instead. This has a couple of ramifications. Mostly the upgrade can be allowed to go ahead and everything will work okay. This will build a new /var/cache/munin/www directory and leave behind the /var/www/munin directory as unused lint.

However the move to the new /var/cache/munin/www location required the package to add a new apache2 configuration file. Munin now installs an apache2 configuration file in Squeeze. This file must be modified since the default is to block access. Therefore by default after an upgrade from Lenny to Squeeze munin will block access unless modified.

sed --in-place "s|Allow from localhost 127.0.0.0/8 ::1|Allow from all|" /etc/munin/apache.conf

MySql and phpMyAdmin

If you are running MySQL then you need to take special care in upgrading. Definitely make sure you have a good database backup. It is very likely that you will need it! I have yet to successfully upgrade MySQL in one apt-get upgrade pass. At the least you will need to run mysql_upgrade. At worst you will need to purge, rm -rf, reinstall everything, then reload the database. This is especially true with phpMyAdmin. I have repeatedly run into problems with both. Usually the debian-sys-maint user loses permissions and the automated script access to the database fails.

The most trouble free upgrade is to remove and purge phpmyadmin first. Then upgrade. Then install phpmyadmin again afterward.

For MySQL it is important to have a full backup.

mysqldump --defaults-file=/etc/mysql/debian.cnf --all-databases | gzip > /var/backups/mysql.dump
savelog -q -d -l -C /var/backups/mysql.dump

Although dumping the database a single database at a time is probably easier to restore.

mysqldump --defaults-file=/etc/mysql/debian.cnf @DATABASE1@ > @DB@.out
mysqldump --defaults-file=/etc/mysql/debian.cnf @DATABASE2@ > @DB@.out

Also need to dump and restore user access permissions. But I don't at this moment have a recipe handy to insert here and would need to look it up. FIXME: Add recipe for dumping and/or creating access permissions.

Then go ahead and try the upgrade. If it works, you are better off than I have ever been. Also run mysql_upgrade. If it doesn't work then try purging all associated packages, removing /var/lib/mysql, and then reinstalling and reloading the database.

After the upgrade be sure to perform another backup. This will prove that access for backup is working. Or it will show that access for backup is failing. I have always lost the debian-sys-maint user and therefore the backup fails at that point.

Control-C and Control-Z now printed by tty driver

Previously the Linux kernel would simply send the signal to the foreground process. Now it prints the character first. This is a case of Linux being an improvement previously but now causing trouble. This appeared in Lenny and continues to be a problem in Squeeze.

Emacs

See the Emacs NEWS file (C-h n) for a long list of changes.

Shell Mode

Placeholder. I don't have a fix yet. Emacs's shell mode is freaked out. The new version is always trying to recenter and drop center and it is extremely annoying. I don't quite have it characterized yet. It has hysteresis. It seems to work okay until the buffer is longer than one page. Recall any command that is longer than a single line and it pushes the cursor down one line causing the entire buffer window to recenter so that the cursor is centered. Then select the command and the buffer drops to the bottom. Up. Down. Up. Down. It is torture.

The problem is the interaction of "Automatic Scrolling" and comint-scroll-show-maximum-output that tries to display the bottom of the buffer at the bottom of the screen. The comint-scroll-show-maximum-output behavior is new and recently added to Emacs. It interacts badly with automatic scrolling.

(setq comint-scroll-show-maximum-output nil)

But note that the above should be combined withe the below eval-after-load for shell.

Killing a buffer with a running process now asks for confirmation.

Killing a buffer with a running process now asks for confirmation. If you use a lot of disposable inferior shell processes and throw them away often this is very annoying.

(setq kill-buffer-query-functions nil)

Also

(eval-after-load 'shell
  '(add-hook 'comint-exec-hook
     (lambda ()
       (setq comint-scroll-show-maximum-output nil)
       ;; Stop the annoying question about exiting with shell
       ;; processes still running.
       (set-process-query-on-exit-flag (get-process "shell") nil))))

Transient Mark Mode

Transient mark mode is now the default behavior. The previous behavior is now known as Persistent Mark mode. To restore the previous behavior set transient-mark-mode to nil.

When long lines wrap they are logically one long line but are displayed wrapped under the previous text. Previously C-n next-line would move from logical line to logical line and skip over the displayed screen line. This has changed. Emacs now moves by screen lines instead of logical lines. To restore the previous behavior set line-move-visual to nil.

Search now treats one space as any number of spaces. See the variable search-whitespace-regexp documentation for details.

(defcustom search-whitespace-regexp (purecopy "\\s-+")
  "If non-nil, regular expression to match a sequence of whitespace
  chars.
This applies to regular expression incremental search.
When you put a space or spaces in the incremental regexp, it stands for
this, unless it is inside of a regexp construct such as [...] or *, + or ?.
You might want to use something like \"[ \\t\\r\\n]+\" instead.
In the Customization buffer, that is `[' followed by a space,
a tab, a carriage return (control-M), a newline, and `]+'.

When this is nil, each space you type matches literally, against one space."
  :type '(choice (const :tag "Find Spaces Literally" nil) regexp)
  :group 'isearch)

When Emacs needs to pop up a new window it would previously assume a standard width terminal and open a new window vertically. Now with widescreen monitors flooding the userland Emacs has added a new behavior. It now uses split-window-preferred-function set by default to split-window-sensibly to decide whether to split the window vertically or horizontally. Two new control variables split-height-threshold and split-width-threshold are added to control this behavior. This seems like a reasonable enhancement but I still prefer the previous behavior better. To restore the previous behavior set split-width-threshold to nil.

(if (>= emacs-major-version 23)
    (progn
      (setq transient-mark-mode nil)
      (setq line-move-visual nil)
      (setq search-whitespace-regexp nil)
      (setq split-width-threshold nil)
      ))

Scroll Bar Breakage

The scroll bar is now very broken. It appears and dissappears randomly. This is very annoying. In order to not have this annoying sometimes on and sometimes off and sometimes here and sometimes there scroll bar I have had to turn it off entirely. This loses one of the good features of emacs due to this breakage.

(if (= emacs-major-version 23)
    (setq scroll-bar-mode nil))

Update: Is this still broken? I think Emacs may have been updated in Squeeze and this particular problem fixed. Not sure now and no time to really check it. So leaving this note in place for the moment. But I think this got fixed and is no longer a problem. Remember that I am writing this on Sid which goes into Squeeze and neither has stabalized yet.

Geometry Breakage

It seems that emacs command line arguments no longer override emacs X resources. If you have an X resource defined such as geometry then command line argument application of geometry is ignored. I removed the default geometry from my Xresources file.

Actually it seems like the emacs --geometry argument just doesn't work at correctly regardless. It does set the window size but does not set the window placement. Also the window size is with all of the menus and borders that I turn off. But turning them off shrinks the size. So you have to add three lines to the size to get the real size. In any case window placement seems completely non-functional.

Broken Underlining in Emacs

The font used by emacs to underline now draws the line through the middle. It becomes more of a strike-through font than an underline font making it very hard to read. I have no solution to this yet. This is really annoying in info documentation. To see the problem bring up the info dir page.


Valid XHTML 1.0 Strict