mk-sbuild fails with cp: /etc/localtime... are the same file
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ubuntu-dev-tools (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Xenial |
Fix Released
|
High
|
Steve Langasek |
Bug Description
[SRU Justification]
The mk-sbuild command fails to completely set up its schroot environment if /etc/localtime is a symlink to the default timezone file (Etc/UTC), due to wrong 'cp' options. This makes the tool unusable in xenial on systems with a default config. It also causes the tool to do the wrong thing on systems with a user-configured timezone, as the Etc/UTC file within the chroot environment will be overwritten by the host system's zone file, rather than changing the *target* of the /etc/localtime symlink.
[Test case]
1. Verify that /etc/localtime is a symlink to /usr/share/
2. Install ubuntu-dev-tools.
3. Run 'mk-sbuild yakkety'. When prompted to edit ~/.sbuildrc, you can accept the defaults.
4. Run 'sg sbuild' to make sure you are in the 'sbuild' group in case this is newly added.
5. Run 'mk-sbuild yakkety' again. Verify that the command output ends with the line:
cp: '/etc/localtime' and '/var/lib/
6. Run 'echo $?' to verify that the return value of mk-sbuild is 1.
7. Install ubuntu-dev-tools from xenial-proposed.
8. Run 'sudo rm -rf /var/lib/
9. Run 'mk-sbuild yakkety' again. Confirm that the command exits 0.
10. Confirm that 'schroot -l' shows the yakkety-amd64 chroot.
[Regression potential]
Minimal. We don't want to dereference /etc/localtime when copying it into the target environment; this never DTRT and often fails altogether. The fix for this is small and targeted.
On my system, /etc/localtime points to Etc/UTC. When I run mk-sbuild, it fails as follows:
I: Base system installed successfully.
cp: '/etc/localtime' and '/var/lib/
rbasak@diglett:~$ stat /etc/localtime
File: '/etc/localtime' -> '/usr/share/
Size: 27 Blocks: 0 IO Block: 4096 symbolic link
Device: fa00h/64000d Inode: 24904635 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-04-12 14:34:01.913544692 +0000
Modify: 2016-04-09 14:16:56.000000000 +0000
Change: 2016-04-11 14:33:38.788003973 +0000
Birth: -
rbasak@diglett:~$ stat /var/lib/
File: '/var/lib/
Size: 27 Blocks: 0 IO Block: 4096 symbolic link
Device: fa00h/64000d Inode: 25958842 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-04-12 14:39:39.042359630 +0000
Modify: 2016-04-12 14:39:39.038359620 +0000
Change: 2016-04-12 14:39:39.038359620 +0000
Birth: -
rbasak@diglett:~$
ProblemType: Bug
DistroRelease: Ubuntu 16.04
Package: ubuntu-dev-tools 0.155 [modified: usr/bin/mk-sbuild]
ProcVersionSign
Uname: Linux 4.4.0-18-generic x86_64
NonfreeKernelMo
ApportVersion: 2.20.1-0ubuntu1
Architecture: amd64
Date: Tue Apr 12 14:52:21 2016
JournalErrors:
Error: command ['journalctl', '-b', '--priority=
Users in the 'systemd-journal' group can see all messages. Pass -q to
turn off this notice.
No journal files were opened due to insufficient permissions.
PackageArchitec
SourcePackage: ubuntu-dev-tools
UpgradeStatus: No upgrade log present (probably fresh install)
Related branches
tags: | added: patch |
Changed in ubuntu-dev-tools (Ubuntu Xenial): | |
assignee: | nobody → Steve Langasek (vorlon) |
importance: | Undecided → High |
status: | New → Triaged |
Changed in ubuntu-dev-tools (Ubuntu Xenial): | |
status: | Triaged → In Progress |
description: | updated |
description: | updated |
Changed in ubuntu-dev-tools (Ubuntu): | |
importance: | Undecided → High |
I patched my live system as attached, which fixed the problem.