Things new in Jessie

Before upgrading to Jessie

Log messages show the following errors in the syslog.

[158492.039848] udevd[12606]: failed to execute '/lib/udev/socket:@/org/freedesktop/hal/udev_event' 'socket:@/org/freedesktop/hal/udev_event': No such file or directory

This is due to deprecated syntax used by hal in the /lib/udev/rules.d/90-hal.rules file. The "+=" syntax is deprecated.

Solution: Remove hal. The Debian hal maintainer reports in Bug#726374#10 that hal is now deprecated. Nothing should depend upon hal anymore. If installing a new Jessie system hal would not be installed anymore. Therefore we should now purge hal to clean up this left behind bit of system lint.

apt-get purge hal

Probably want to 'dpkg -l | grep hal' and purge all related packages.

Update! George reports this following from his laptop.

You recommend removing hal. I tried that on my wheezy laptop in preparation for upgrading, and find that sleepd (or kin) on wheezy will then put the laptop to sleep, even if it is on AC power. Re-install hal, and it stays awake while plugged in.
Looking at the sleepd package, it seems that its Recommends: of hal has gone away in jessie, so things might just work correctly there. It looks like it's switched from hal to upower (in addition to apm and acpi). Sounds like something to experiment with.

systemd Madness

Some background on the problem is available here.

http://lists.debian.org/debian-devel-announce/2009/09/msg00003.html
http://lists.debian.org/debian-devel-announce/2010/05/msg00009.html
http://people.skolelinux.org/pere/blog/Debian_init_d_boot_script_example_for_rsyslog.html

A good and quite accurate rant against systemd.
http://wizardofbits.tumblr.com/post/45232318557/systemd-more-like-shit-stemd

Tom H wrote:
This thread https://lists.debian.org/debian-devel/2013/10/msg00444.html
lead to this thread https://lists.debian.org/debian-devel/2013/10/msg00651.html

Russ Allberry
https://lists.debian.org/debian-devel/2012/02/msg00911.html
https://lists.debian.org/debian-devel/2012/02/msg01079.html
https://lists.debian.org/debian-devel/2012/04/msg00638.html
https://lists.debian.org/debian-devel/2013/07/msg00456.html

Ben Hutchings
https://lists.debian.org/debian-devel/2012/05/msg00263.html

Roger Leigh (sysvinit developer)
https://lists.debian.org/debian-devel/2012/05/msg00267.html

Petter Reinholdtsen (sysvinit developer)
https://lists.debian.org/debian-devel/2012/02/msg01043.html

http://judecnelson.blogspot.com/2014/09/systemd-biggest-fallacies.html
http://www.troubleshooters.com/linux/systemd/lol_systemd.htm
http://www.troubleshooters.com/linux/systemd/debating.htm

Combatting revisionist history
http://forums.debian.net/viewtopic.php?f=20&t=120652&p=570371

http://skarnet.org/software/s6/why.html

http://www.shroomery.org/forums/showflat.php/Number/21616608

http://without-systemd.org/wiki/index.php/Main_Page
http://without-systemd.org/wiki/index.php/How_to_remove_systemd_from_the_Netinst_CD
http://without-systemd.org/wiki/index.php/How_to_remove_systemd_from_a_Debian_jessie/sid_installation

https://lists.debian.org/debian-ctte/2013/12/threads.html

Also available as http://bugs.debian.org/727708 but it is too long for the web browser since it is all in one page. I suggest pulling the bug as a mailbox and browsing the discussion that way.

wget -O bug_727708.mbox "http://bugs.debian.org/cgi-bin/bugreport.cgi?mboxmaint=yes;mbox=yes;bug=727708"
Really good resource.
https://ewontfix.com/14/

systemd disables Magic SysRq Key

The systemd package installs /usr/lib/sysctl.d/50-default.conf that disables SysRq and makes other sweeping system wide configuration changes outside of its domain. The systemd package maintainers, like the GNOME maintainers, argue that Debian should do whatever the upstream wants everywhere regardless of applicability. There is no check to balance them. How is disabling SysRq a good thing?

I filed this bug Bug#735002. But it was closed without discussion as a duplicate of Bug#725422. That bug had been filed and closed without being fixed or even acknowledged as being a problem. Argh! The systemd maintainers are infuriating!

On Wheezy:
  cat /proc/sys/kernel/sysrq 
  438

On Jessie:
  cat /proc/sys/kernel/sysrq 
  16

According to https://www.kernel.org/doc/Documentation/sysrq.txt this maps to:

   0 - disable sysrq completely
   1 - enable all functions of sysrq
  >1 - bitmask of allowed sysrq functions (see below for detailed function
       description):
          2 =   0x2 - enable control of console logging level
          4 =   0x4 - enable control of keyboard (SAK, unraw)
          8 =   0x8 - enable debugging dumps of processes etc.
         16 =  0x10 - enable sync command
         32 =  0x20 - enable remount read-only
         64 =  0x40 - enable signalling of processes (term, kill, oom-kill)
        128 =  0x80 - allow reboot/poweroff
        256 = 0x100 - allow nicing of all RT tasks

Therefore by default sync is now enabled but all other actions are disabled.

Change this by setting kernel.sysrq in sysctl or otherwise.

echo 1 >/proc/sys/kernel/sysrq
And probably creating /etc/sysctl.d/sysrq.conf with:
kernel.sysrq=1

Except that the above won't work. It depends upon the version of systemd. It appears that earlier versions require the override to happen early later versions require it to be late. To be safe you need to have two copies of the file to work with both versions. That is nasty.

/etc/sysctl.d/00-sysrq.conf
/etc/sysctl.d/zz-sysrq.conf

systemd sets kernel.core_uses_pid=1

Same thing with kernel.core_uses_pid=1. It isn't that this is not a good value. It is a fine choice. The problem is that it is not within the realm of the systemd package to set it. Should systemd choose my MTA to be Postfix? That is also a very reasonable thing and so who should complain? Anyone who doesn't use Postfix. Should systemd also choose to install anacron automatically? Should systemd choose to install a iptables firewall rules automatically? Should systemd also choose to install fail2ban automatically?

What is the difference between making any of these choices and the ones systemd just made? Nothing that I can see. That the values are reasonable is not the point. The point is that systemd should not be setting those values because they are outside of the its domain.

Look through /usr/lib/sysctl.d/50-default.conf and determine what setting you as the local admin want to see for each of those settings. Override those settings as needed.

This entire file should be removed from the package. If that doesn't happen then the entire file should be diverted away. This can be done as a local admin action. It is sufficient to make sure it does not end with a .conf suffix so that sysctl will ignore it.

dpkg-divert --divert /usr/lib/sysctl.d/50-default.conf.systemd.disabled --rename /usr/lib/sysctl.d/50-default.conf

Preventing systemd

To return to sysvinit and remove systemd perform the following.

# cat > /etc/apt/preferences.d/no-systemd <<EOF
Package: systemd-sysv
Pin: release o=Debian
Pin-Priority: -1
EOF
apt-get install sysvinit-core sysvinit sysvinit-utils
...reboot...
apt-get remove --purge --auto-remove systemd
...reboot...

Now that Jessie is released the release notes on this topic are available. If one wants to avoid converting to systemd on upgrade then install a local preferences file as described above before performing the upgrade. Here is a direct link to the official reference.

https://www.debian.org/releases/stable/i386/release-notes/ch-information.en.html#systemd-upgrade-default-init-system

MOTD Message Of The Day now hard coded

The /etc/pam.d/login file used to contain:

session    optional   pam_motd.so  motd=/run/motd.dynamic
session    optional   pam_motd.so
It now contains.
session    optional   pam_exec.so type=open_session stdout /bin/uname -snrvm
session    optional   pam_motd.so

That uname call is now hard coded and cannot be suppressed at login time. Previously ~/.hushlogin can be used to silence the motd at login time. And it still does suppress motd. But it does not suppress the uname which used to be part of it.

I am commenting out that line.

#session    optional   pam_exec.so type=open_session stdout /bin/uname -snrvm
session    optional   pam_motd.so

KVM doesn't always boot older images

I am not sure of the exact problem. But a CentOS 6 image that boots okay under the previous version now hangs at boot time. Something has changed. Need to figure this out sometime. Newly built images run okay. With previous major upgrades I have needed to make changes to the machine config to roll with the changes. I expect something like that has happened again.

Nonfree Firmware

The new system has more firmware removed. If you need the nonfree firmware to boot then you might want to install from the unofficial cd image that includes the nonfree firmware in it. See https://wiki.debian.org/Firmware

http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/

PHP FPM Config Changes

Update: I think this is now fixed in the released Jessie. It was a problem for Testing.

See Bug#747195 https://bugs.debian.org/747195 for details. This must be set after the upgrade. I think if no changes have otherwise been made to this file that it will be hands-off. Needs testing.

listen.owner = www-data
listen.group = www-data

Chromium and Adobe Flash

Adobe Flash is no longer supported by Adobe. Flash sites are using newer versions than work in the current version of Adobe Flash available. Google supports Flash in Chrome. So how to support newer Flash to be able to view today's Flash sites in Chromium? Extract it from Chrome.

The new contrib installer is pepperflashplugin-nonfree. It downloads Chrome from Google. It unpacks it. It then makes the included Flash player available for use in Chromium.

apt-get install pepperflashplugin-nonfree

OpenSSH Server Config Changes

The default value of PermitRootLogin has changed from "yes" to "without-password". The reasoning is documented in the README.Debian file which references https://bugs.debian.org/298138 and https://bugzilla.mindrot.org/show_bug.cgi?id=2164 .

/usr/share/doc/openssh-server/README.Debian.gz
https://bugs.debian.org/298138
https://bugzilla.mindrot.org/show_bug.cgi?id=2164

Aptitude

If you use aptitude then the following configuration makes it more sane. Otherwise it favors removal over upgrade and always wants to remove half of the world. https://lists.debian.org/543FF3BD.1020609@zen.co.uk

Aptitude::ProblemResolver {
SolutionCost "priority, removals, canceled-actions";
}

Emacs

I still need to understand the ramifications but scroll-up and scroll-down have been replaced with scroll-up-command and scroll-down-comand. http://lists.gnu.org/archive/html/help-gnu-emacs/2015-01/msg00440.html

The command `scroll-up' is indeed older, and it is still usable.
It is, in fact, the core of the `scroll-up-command' implementation.

(In Emacs, it is often the case that you can use a command
non-interactively, though this is sometimes explicitly not
recommended for certain commands.)

`scroll-up-command' was added in Emacs 24.1, to (a) retain the
`scroll-up' behavior as a separate function, and yet (b) provide
additional behavior when you scroll interactively, in particular
the handling of the new (in 24.1) option `scroll-error-top-bottom'.

Just putting this following as a placeholder for further processing later. Basically the quote characters in info changing to unicode quotes so that they are then hard for traditionalists to search for.

#16292 - http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16292
         info docs now contain single straight quotes instead of `'

#13131 - http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13131
         Allow curly quotes to be found by searching for straight quotes?

#16439 - http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16439
         Highlighting of strings within Info buffers

#13228 - http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13228
         Request for highlighting back-quote/quote pair notation

GnuPG gpgv

gpgv 1.4.18-5 has changed and now requires the file argument for a detached signature. Unfortunately medley used the previous form. Meaning medley 0.5 will not work on Jessie with gpgv 1.4.18-5 or later.

Postfix

The myhostname defaults change. This won't affect us because we always set myhostname directly but I wanted to document the change.

rwp@torpid:~$ postconf -d myhostname
myhostname = torpid.localdomain

In Jessie 8 this becomes

bob@hysteria:~$ postconf -d myhostname
myhostname = hysteria.proulx.com

Nginx

Previously Debian had shipped a modified fastcgi_params files that included SCRIPT_FILENAME set in it. The upstream version of this file did not contain this setting. I am sure that people must have complained. Or something. In Jessie the unmodified upstream version of this file is shipped without the SCRIPT_FILENAME setting. This completely breaks any previous php5-fpm configuration which requires SCRIPT_FILENAME to be set.

The old setting in fastcgi_params:

fastcgi_param SCRIPT_FILENAME $request_filename;

The new setting in fastcgi.conf:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

The usual use was to "include fastcgi_params:". Now that needs to either switch to "include fastcgi.conf;" or to include an inline setting of SCRIPT_FILENAME in the config. If you include SCRIPT_FILENAME in the section then it works either way. That is what I have decided to do. I am putting it after the include in case the order matters.

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

bootlogd

For some reason or another bootlogd is messed up for me after the upgrade. Twice now I have found the three /etc/init.d/*bootlogd* scripts moved to a .dpkg-old name and disabled. I purged and re-installed the bootlogd and cleaned those files to fix it. Those three files are listed as conffiles and get special dpkg handling.

/etc/init.d/bootlogd
/etc/init.d/stop-bootlogd
/etc/init.d/stop-bootlogd-single

Update: This is really a problem in the last upgrade. It seems that in Wheezy 7 those files were obsoleted but not handled properly by the package scripts. The best answer is to fix it in Wheezy 7 before upgrading to jessie.

In WHEEZY fix the conffile problem.

rm -f /etc/init.d/bootlogd
rm -f /etc/init.d/stop-bootlogd
rm -f /etc/init.d/stop-bootlogd-single
apt-get install --reinstall initscripts

That should do it. Check this in Wheezy 7 before upgrading and it is simpler than trying to fix it up in Jessie 8. Before upgrading double check that all obsolete files have been fixed in Wheezy 7.

dpkg-query -W -f='${Package} ${Conffiles}\n' | less +/obsolete

After ugprading to Jessie 8 and after any upgrade it turns out it is a good idea to check for obsolete files as a post inspection. I should have been doing that all along.

obsolete font directory

I only caught this after the Stretch 9 release. For whatever reason fonts-smc in a previous version left an empty directory behind. It is pure lint. Just remove it.

Wheezy 7 had fonts-smc version 5.0.1-2 with this directory and a file below it. Basically the file was misplaced. It was fixed in Oct 2013 with 5.0.1-5 (as it passed through Sid then) by removing the file. But nothing removed the directory. Jessie 8 had fonts-smc version 6.0-1 with this corrected but never cleaned up the directory.

ls -ld /etc/fonts/conf.avail/65-0-fonts-smc.conf
rmdir /etc/fonts/conf.avail/65-0-fonts-smc.conf

Valid XHTML 1.0 Strict