zsh complains about locale_warn on launch

Bug #1073077 reported by Marti on 2012-10-30
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
cloud-init
Low
Unassigned
cloud-init (Ubuntu)
Low
Unassigned
Precise
Low
Unassigned
Quantal
Low
Scott Moser

Bug Description

== SRU Information ==
[Impact]
 * Users who select zsh as shell and invoke /etc/profile.d scripts
   see an error message like:
    locale_warn:13: * not found
 * This contained fix makes that error message go away, and makes
   the Z99-cloud-locale-test.sh script in /etc/profile.d function
   properly with zsh.
 * The fix adds new code to run 'emulate -L sh' if and only if the variable
   ZSH_NAME is defined (which is only likely to be true if shell is zsh).
   Per zshbuiltins(1), '-L' to 'emulate' indicates that the change in
   behavior should be limited to the containing function.

[Test Case]
 * launch cloud-image instance, get IP address and set 'IP' for use below.
 * install zsh, change the 'ubuntu' user's shell
     LC_ALL=en_US.UTF-8 ssh ubuntu@$IP \
        "sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh"
 * problem is then reproduced with:
     LC_ALL=fr_FR.UTF-8 zsh /etc/profile.d/Z99-cloud-locale-test.sh
   Instead of seeing a message about invalid locale and how to fix it, the
   user will see:
     locale_warn:13: * not found

[Regression Potential]
 * chance for regression is low, since the only real change is contained
   with a condition that will limit it to the case where the shell is zsh.
 * If there was fallout, it would one of:
   * 'emulate -L' being run with non-zsh shell, likely resulting in an error
     message but nothing worse.
   * user's zsh shell being changed to 'emulate sh' (if the '-L' did not
     get applied correctly)

== End SRU Information ==

zsh complains if an '=' occurs in a suffix or prefix shell parameter expansion.

  $ sh -c 'f="foo=bar"; echo ${f%%=*}'
  foo
  $ bash -c 'f="foo=bar"; echo ${f%%=*}'
  foo
  $ zsh -c 'f="foo=bar"; echo ${f%%=*}'
  zsh:1: * not found

It is work-aroundable by escaping the '=' in the shell suffix match with a '\'. Ie:
  $ zsh -c 'f="foo=bar"; echo ${f%%\=*}'
  foo

== original bug report ==

After upgrading my Amazon machine to Ubuntu 12.04, every time I run zsh I get the following output:
    locale_warn:13: * not found

Apparenlty this is caused by the file /etc/profile.d/Z99-cloud-locale-test.sh in the cloud-init package. zsh always outputs an error when a glob like * fails to match any files.

ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: cloud-init 0.6.3-0ubuntu1
ProcVersionSignature: Ubuntu 3.2.0-32.51-virtual 3.2.30
Uname: Linux 3.2.0-32-virtual i686
ApportVersion: 2.0.1-0ubuntu14
Architecture: i386
Date: Tue Oct 30 11:03:46 2012
Ec2AMI: ami-fb9ca98f
Ec2AMIManifest: (unknown)
Ec2AvailabilityZone: eu-west-1c
Ec2InstanceType: c1.medium
Ec2Kernel: aki-4deec439
Ec2Ramdisk: unavailable
PackageArchitecture: all
ProcEnviron:
 TERM=xterm
 PATH=(custom, user)
 LANG=en_GB.UTF-8
 SHELL=/usr/bin/zsh
SourcePackage: cloud-init
UpgradeStatus: Upgraded to precise on 2012-10-29 (0 days ago)

Related branches

Marti (intgr) wrote :
Scott Moser (smoser) wrote :

It would seem to me that this is a bug in zsh.
It is demonstrable like this:

ubuntu@quantal$ sh -c 'f="foo=bar"; echo ${f%%=*}'
foo
ubuntu@quantal$ bash -c 'f="foo=bar"; echo ${f%%=*}'
foo
ubuntu@quantal$ zsh -c 'f="foo=bar"; echo ${f%%=*}'
zsh:1: * not found

It is work-aroundable by escaping the '=' in the shell suffix match with a '\'. Ie:
zsh -c 'f="foo=bar"; echo ${f%%\=*}'
foo

description: updated
Changed in cloud-init (Ubuntu):
status: New → Triaged
importance: Undecided → Low
Scott Moser (smoser) wrote :

workaround is staged in lp:ubuntu/raring/cloud-init at revno 224.

Changed in cloud-init (Ubuntu):
status: Triaged → Fix Committed
Scott Moser (smoser) on 2012-11-06
Changed in cloud-init (Ubuntu Precise):
status: New → Triaged
Changed in cloud-init (Ubuntu Quantal):
status: New → Triaged
Changed in cloud-init (Ubuntu Precise):
importance: Undecided → Medium
Changed in cloud-init (Ubuntu Quantal):
importance: Undecided → Medium
Changed in cloud-init (Ubuntu Precise):
importance: Medium → Low
Changed in cloud-init (Ubuntu Quantal):
importance: Medium → Low
Scott Moser (smoser) on 2012-11-06
Changed in cloud-init (Ubuntu):
status: Fix Committed → Triaged
Scott Moser (smoser) wrote :

fixed in revno 697

Changed in cloud-init:
status: New → Fix Committed
importance: Undecided → Low
Scott Moser (smoser) wrote :

Forwarded this zsh issue upstream at http://www.zsh.org/mla/workers//2012/msg00686.html

no longer affects: zsh (Ubuntu Quantal)
no longer affects: zsh (Ubuntu Precise)
Scott Moser (smoser) wrote :

The fix above will make zsh not complain, but it still doesn't function correctly. This is because:
% zsh -c 'args="a b c"; for f in $args; do echo $f; done'
a b c

while
% sh -c 'args="a b c"; for f in $args; do echo $f; done'
a
b
c

I need to figure out how to make zsh do the right thing, info at http://zsh.sourceforge.net/FAQ/zshfaq03.html

This does actually raise a more general issue, on why zsh, which is not posix compliant in these 2 regards is executing content written for a posix compatible shell (ie, running stuff in /etc/profile.d).

Scott Moser (smoser) wrote :

I believe that I have a fix committed for this in cloud-init but I'm not able to reproduce this issue other than explicitly running:
$ zsh /etc/profile.d/Z99-cloud-locale-test.sh
/etc/profile.d/Z99-cloud-locale-test.sh
locale_warn:13: * not found

Ie, it doesn't seem to me that the /etc/profile.d scripts are executed if I just change my shell to zsh by:
  sudo usermod --shell=/bin/zsh $(whoami)

How were you seeing this?

Scott Moser (smoser) on 2012-11-08
description: updated
Scott Moser (smoser) on 2012-11-14
Changed in cloud-init:
status: Fix Committed → Fix Released
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package cloud-init - 0.7.1-0ubuntu1

---------------
cloud-init (0.7.1-0ubuntu1) raring; urgency=low

  * New upstream release.
    * landscape: install landscape-client package if not installed.
      only take action if cloud-config is present (LP: #1066115)
    * landscape: restart landscape after install or config (LP: #1070345)
    * multipart/archive: do not fail on unknown headers in multipart
      mime or cloud-archive config (LP: #1065116).
    * tools/Z99-cloud-locale-test.sh: avoid warning when user's shell is
      zsh (LP: #1073077)
    * fix stack trace when unknown user-data input had unicode (LP: #1075756)
    * split 'apt-update-upgrade' config module into 'apt-configure' and
      'package-update-upgrade-install'. The 'package-update-upgrade-install'
      will be a cross distro module.
    * fix bug where cloud-config from user-data could not affect system_info
      settings (LP: #1076811)
    * add yum_add_repo configuration module for adding additional yum repos
    * fix public key importing with config-drive-v2 datasource (LP: #1077700)
    * handle renaming and fixing up of marker names (LP: #1075980)
      this relieves that burden from the distro/packaging.
    * group config: fix how group members weren't being translated correctly
      when the group: [member, member...] format was used (LP: #1077245)
    * work around an issue with boto > 0.6.0 that lazy loaded the return from
      get_instance_metadata(). This resulted in failure for cloud-init to
      install ssh keys. (LP: #1068801)
    * add power_state_change config module for shutting down stystem after
      cloud-init finishes. (LP: #1064665)
 -- Scott Moser <email address hidden> Wed, 14 Nov 2012 15:18:50 -0500

Changed in cloud-init (Ubuntu):
status: Triaged → Fix Released
Scott Moser (smoser) on 2012-12-02
Changed in cloud-init (Ubuntu Quantal):
status: Triaged → In Progress
assignee: nobody → Scott Moser (smoser)

Hello Marti, or anyone else affected,

Accepted cloud-init into precise-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/cloud-init/0.6.3-0ubuntu1.2 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please change the bug tag from verification-needed to verification-done. If it does not, change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in cloud-init (Ubuntu Precise):
status: Triaged → Fix Committed
tags: added: verification-needed
Scott Moser (smoser) wrote :

verified fixed.
% dpkg-query --show cloud-init
cloud-init 0.6.3-0ubuntu1.2

% LC_ALL=fr_FR.UTF-8 zsh /etc/profile.d/Z99-cloud-locale-test.sh
_____________________________________________________________________
WARNING! Your environment specifies an invalid locale.
 This can affect your user experience significantly, including the
 ability to manage packages. You may install the locales by running:

   sudo apt-get install language-pack-fr
     or
   sudo locale-gen fr_FR.UTF-8

To see all available language packs, run:
   apt-cache search "^language-pack-[a-z][a-z]$"
To disable this message for all users, run:
   sudo touch /var/lib/cloud/instance/locale-check.skip
_____________________________________________________________________

tags: added: verification-done
removed: verification-needed
Clint Byrum (clint-fewbar) wrote :

Hello Marti, or anyone else affected,

Accepted cloud-init into quantal-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/cloud-init/0.7.0-0ubuntu2.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in cloud-init (Ubuntu Quantal):
status: In Progress → Fix Committed
tags: removed: verification-done
tags: added: verification-needed
Clint Byrum (clint-fewbar) wrote :

Hello Marti, or anyone else affected,

Accepted cloud-init into quantal-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/cloud-init/0.7.0-0ubuntu2.2 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Clint Byrum (clint-fewbar) wrote :

Hello Marti, or anyone else affected,

Accepted cloud-init into precise-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/cloud-init/0.6.3-0ubuntu1.3 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Scott Moser (smoser) on 2013-01-08
tags: added: verification-done
removed: verification-needed
Chris Halse Rogers (raof) wrote :

Scott: Was that verification for Precise or Quantal or both?

Scott Moser (smoser) wrote :

I've verified on both.

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package cloud-init - 0.6.3-0ubuntu1.3

---------------
cloud-init (0.6.3-0ubuntu1.3) precise-proposed; urgency=low

  * debian/patches/lp-1070345-landscape-restart-after-change.patch,
    debian/patches/lp-1066115-landscape-install-fix-perms.patch:
    fix missing or incorrect imports (LP: #1070345, LP: #1066115).

cloud-init (0.6.3-0ubuntu1.2) precise-proposed; urgency=low

  * debian/patches/lp-978127-maas-oauth-fix-bad-clock.patch: fix usage of
    oauth in maas data source if local system has a bad clock (LP: #978127)
  * debian/cloud-init.preinst: fix bug where user data scripts re-ran on
    upgrade from 10.04 versions (LP: #1049146)
  * debian/patches/lp-974509-detect-dns-server-redirection.patch: detect dns
    server redirection and disable searching dns for a mirror named
    'ubuntu-mirror' (LP: #974509)
  * debian/patches/lp-1018554-shutdown-message-to-console.patch: write a
    message to the console on system shutdown. (LP: #1018554)
  * debian/patches/lp-1066115-landscape-install-fix-perms.patch: install
    landscape package if needed which will ensure proper permissions on config
    file (LP: #1066115).
  * debian/patches/lp-1070345-landscape-restart-after-change.patch: restart
    landscape after modifying config (LP: #1070345)
  * debian/patches/lp-1073077-zsh-workaround-for-locale_warn.patch: avoid
    warning when user's shell is zsh (LP: #1073077)
  * debian/patches/rework-mirror-selection.patch: improve mirror selection by:
    * allowing region/availability-zone to be part of mirror (LP: #1037727)
    * making mirror selection arch aware (LP: #1028501)
    * allow specification of a security mirror (LP: #1006963)
 -- Scott Moser <email address hidden> Thu, 13 Dec 2012 12:16:56 -0500

Changed in cloud-init (Ubuntu Precise):
status: Fix Committed → Fix Released

The verification of this Stable Release Update has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regresssions.

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package cloud-init - 0.7.0-0ubuntu2.2

---------------
cloud-init (0.7.0-0ubuntu2.2) quantal-proposed; urgency=low

  * debian/patches/lp-1090482-fix-cloud-config-mirrors.patch:
    fix issue with cloud-config data in user-data providing mirror
    info (LP: #1073077)

cloud-init (0.7.0-0ubuntu2.1) quantal-proposed; urgency=low

  * debian/patches/lp-1073077-zsh-workaround-for-locale_warn.patch: avoid
    warning when user's shell is zsh (LP: #1073077)
  * debian/patches/lp-1077700-config-drive-fix-ssh-authorized-keys.patch:
    fix bug in config-drive-v2 usage of authoried keys (LP: #1077700)
  * debian/patches/lp-1080985-fix-resize-root-noblock.patch:
    fix 'resize_root: noblock' (LP: #1080985)
  * debian/patches/lp-1076811-fix-userdata-update-to-distro-config.patch:
    fix updates to distro config via user-data. (LP: #1076811)
  * debian/patches/lp-1066115-install-landscape-if-needed.patch:
    fix permissions on landscape config, and ensure landscape client
    is installed if landscape config is given. (LP: #1066115)
  * debian/patches/lp-1070345-restart-landscape-if-needed.patch:
    restart the landscape-client if changes to config were made. (LP: #1070345)
  * debian/patches/lp-1077020-fix-ca-certificates-blanklines.patch: fix
    adding of empty lines in ca-certificates file (LP: #1077020)
 -- Scott Moser <email address hidden> Mon, 17 Dec 2012 10:15:03 -0500

Changed in cloud-init (Ubuntu Quantal):
status: Fix Committed → Fix Released
Scott Moser (smoser) on 2013-02-20
no longer affects: zsh (Ubuntu)
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers