apt install of local debs does not tab-complete

Bug #1645815 reported by John Lenton on 2016-11-29
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
apt (Ubuntu)
Undecided
John Lenton
Xenial
Undecided
Unassigned
Yakkety
Undecided
Unassigned

Bug Description

[Impact]
Previously apt's bash completion was such that, given

    $ mkdir xyzzz
    $ touch xyzzy.deb xyzzx.two.deb

you'd get

    $ apt install xyzz<tab>
    xyzzx.two.deb xyzzz/
    $ apt install /tmp/foo/xyzz<tab>
    xyzzx.two.deb xyzzz/

this is inconsistent (xyzzx.two.deb is listed but not xyzzy.deb), but
worse than that it offered things that apt would not actually
recognise as candidates for install:

    $ sudo apt install xyzzx.two.deb
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    E: Unable to locate package xyzzx.two.deb
    E: Couldn't find any package by glob 'xyzzx.two.deb'
    E: Couldn't find any package by regex 'xyzzx.two.deb'

[Test case]
With this small (trival, really) change, apt's bash completion should
only offer things apt understands, and won't recquire an aditional
period in the filename to offer it:

    $ apt install xyzz<tab>^C
    $ # (no completions!)
    $ apt install ./xyzz<tab>
    xyzzx.two.deb xyzzy.deb xyzzz/
    $ apt install /tmp/foo/xyzz
    xyzzx.two.deb xyzzy.deb xyzzz/

[Regression potential]
Only the expansion of filenames in the completion is affected:
- _filedir "*.deb"
+ if [[ "$cur" == ./* || "$cur" == /* ]]; then
+ _filedir "deb"
+ fi
so it's unlikely to introduce any regression.

[Original bug report]

this fails:

$ touch xyzzy.deb
$ apt install xyzzy<tab>

because the completion support for install is using _filedir wrong.

ProblemType: Bug
DistroRelease: Ubuntu 16.04
Package: apt 1.2.15
ProcVersionSignature: Ubuntu 4.4.0-47.68-generic 4.4.24
Uname: Linux 4.4.0-47-generic x86_64
ApportVersion: 2.20.1-0ubuntu2.1
Architecture: amd64
CurrentDesktop: Unity
Date: Tue Nov 29 17:51:57 2016
InstallationDate: Installed on 2016-07-05 (147 days ago)
InstallationMedia: Ubuntu 16.04 LTS "Xenial Xerus" - Release amd64 (20160420.1)
SourcePackage: apt
UpgradeStatus: No upgrade log present (probably fresh install)

Related branches

John Lenton (chipaca) wrote :
Julian Andres Klode (juliank) wrote :

The completion is still wrong anyway: apt only accepts ./package.deb, not package.deb. And it seems to work here as it.

Julian Andres Klode (juliank) wrote :

Actually:

jak@jak-x230:~/Downloads$ ls *.deb
AdbeRdr9.5.5-1_i386linux_enu.deb debhelper_9.20160115ubuntu3_all.deb
jak@jak-x230:~/Downloads$ _filedir "deb"
jak@jak-x230:~/Downloads$ echo $_
deb
jak@jak-x230:~/Downloads$ _filedir "*.deb"
jak@jak-x230:~/Downloads$ echo $_
AdbeRdr9.5.5-1_i386linux_enu.deb debhelper_9.20160115ubuntu3_all.deb

So, it seems you are wrong.

Changed in apt (Ubuntu):
status: New → Incomplete
Julian Andres Klode (juliank) wrote :

Actually it seeAnd it seems the completion is working correctly:

(1) Without a leading ./, only package names are used

# apt install xy<tab>
xye xye-data xymon xymon-client xyscan

(2) With ./, only file names are used

# apt install ./x<tab>
xyzzy.deb

ms the completion is working correctly:

(1) Without a leading ./, only package names are used

# apt install xy<tab>
xye xye-data xymon xymon-client xyscan

(2) With ./, only file names are used

# apt install ./x<tab>
xyzzy.deb

Changed in apt (Ubuntu):
status: Incomplete → Invalid
Julian Andres Klode (juliank) wrote :

OK, we triaged this further on github. Reopening here, so we can track progress on the distro side as well.

Changed in apt (Ubuntu):
status: Invalid → Triaged
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package apt - 1.4~beta2

---------------
apt (1.4~beta2) unstable; urgency=high

  [ John R. Lenton ]
  * bash-completion: Only complete understood file paths for install
    (LP: #1645815)

  [ Julian Andres Klode ]
  * SECURITY UPDATE: gpgv: Check for errors when splitting files (CVE-2016-1252)
    Thanks to Jann Horn, Google Project Zero for reporting the issue
    (LP: #1647467)
  * gpgv: Flush the files before checking for errors

 -- Julian Andres Klode <email address hidden> Thu, 08 Dec 2016 15:21:16 +0100

Changed in apt (Ubuntu):
status: Triaged → Fix Released
Julian Andres Klode (juliank) wrote :
Changed in apt (Ubuntu Xenial):
status: New → Triaged
Changed in apt (Ubuntu Yakkety):
status: New → Triaged
Changed in apt (Ubuntu Xenial):
status: Triaged → In Progress
Changed in apt (Ubuntu Yakkety):
status: Triaged → In Progress
Łukasz Zemczak (sil2100) wrote :

Since this (and a few other) bug is mentioned in the SRU changelog, please update the description to include the SRU template. There seems to be a master bug for the SRU, but each bug should *at least* have a clearly written test-case. Thanks!

Hello John, or anyone else affected,

Accepted apt into xenial-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/apt/1.2.20 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 apt (Ubuntu Xenial):
status: In Progress → Fix Committed
tags: added: verification-needed
Julian Andres Klode (juliank) wrote :

Verified in 1.2.20

description: updated
tags: added: verification-done
removed: verification-needed
Chris J Arges (arges) wrote :

Hello John, or anyone else affected,

Accepted apt into yakkety-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/apt/1.3.5 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 apt (Ubuntu Yakkety):
status: In Progress → Fix Committed
tags: removed: verification-done
tags: added: verification-needed
Jon Grimm (jgrimm) on 2017-03-27
tags: added: verification-done-xenial verification-needed-yakkety
removed: verification-needed
Julian Andres Klode (juliank) wrote :

Verified broken in 1.3.4, and fixed in 1.3.5.

tags: added: verification-done-yakkety
removed: verification-needed-yakkety
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package apt - 1.3.5

---------------
apt (1.3.5) yakkety; urgency=medium

  * Microrelease covering important fixes of 1.4~rc2 (LP: #1668280)

  [ David Kalnischkies ]
  * don't install new deps of candidates for kept back pkgs
  * keep Release.gpg on untrusted to trusted IMS-Hit (Closes: 838779)
    (LP: #1657440)
  * reset HOME, USER(NAME), TMPDIR & SHELL in DropPrivileges (Closes: 842877)
  * add TMP/TEMP/TEMPDIR to the TMPDIR DropPrivileges dance
  * react to trig-pend only if we have nothing else to do
  * correct cross & disappear progress detection
  * improve arch-unqualified dpkg-progress parsing
  * don't perform implicit crossgrades involving M-A:same
  * do not configure unconfigured to be removed packages
  * skip unconfigure for unconfigured to-be removed pkgs
  * get pdiff files from the same mirror as the index
  * let {dsc,tar,diff}-only implicitly enable download-only
  * ensure generation of valid EDSP error stanzas
  * fix minimum pkgs option for dpkg --recursive usage
  * don't show update stats if cache generation is disabled
  * don't lock dpkg in 'apt-get clean'
  * don't lock dpkg in update commands
  * avoid validate/delete/load race in cache generation
  * fix 'install --no-download' mode
  * remove 'old' FAILED files in the next acquire call (Closes: 846476)
  * stop rred from leaking debug messages on recovered errors (Closes: #850759)

  [ Edgar Fuß ]
  * http: clear content before reporting the failure (Closes: #465572)

  [ Paul Wise ]
  * show output as documented for APT::Periodic::Verbose 2 (Closes: 845599)

  [ John R. Lenton ]
  * bash-completion: Only complete understood file paths for install
    (LP: #1645815)

  [ Lukasz Kawczynski ]
  * Honour Acquire::ForceIPv4/6 in the https transport

  [ Julian Andres Klode ]
  * basehttp: Only read Content-Range on 416 and 206 responses (LP: #1657567)
  * Only merge acquire items with the same meta key (Closes: #838441)
  * Do not package names representing .dsc/.deb/... files (Closes: #854794)
  * Don't use -1 fd and AT_SYMLINK_NOFOLLOW for faccessat()
    Thanks to James Clarke for debugging these issues
  * CMake: Install statvfs.h to include/sys, not just include/

 -- Julian Andres Klode <email address hidden> Mon, 27 Feb 2017 15:02:40 +0100

Changed in apt (Ubuntu Yakkety):
status: Fix Committed → Fix Released

The verification of the Stable Release Update for apt 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 regressions.

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package apt - 1.2.20

---------------
apt (1.2.20) xenial; urgency=medium

  * Microrelease covering fixes of 1.4~rc2 (LP: #1668285)

  [ David Kalnischkies ]
  * don't install new deps of candidates for kept back pkgs
  * keep Release.gpg on untrusted to trusted IMS-Hit (Closes: 838779)
    (LP: #1657440)
  * reset HOME, USER(NAME), TMPDIR & SHELL in DropPrivileges (Closes: 842877)
  * add TMP/TEMP/TEMPDIR to the TMPDIR DropPrivileges dance
  * let {dsc,tar,diff}-only implicitly enable download-only
  * don't show update stats if cache generation is disabled
  * don't lock dpkg in 'apt-get clean'
  * don't lock dpkg in update commands
  * avoid validate/delete/load race in cache generation
  * remove 'old' FAILED files in the next acquire call (Closes: 846476)
  * stop rred from leaking debug messages on recovered errors (Closes: #850759)

  [ Paul Wise ]
  * show output as documented for APT::Periodic::Verbose 2 (Closes: 845599)

  [ John R. Lenton ]
  * bash-completion: Only complete understood file paths for install
    (LP: #1645815)

  [ Lukasz Kawczynski ]
  * Honour Acquire::ForceIPv4/6 in the https transport

  [ Julian Andres Klode ]
  * basehttp: Only read Content-Range on 416 and 206 responses (LP: #1657567)
  * Only merge acquire items with the same meta key (Closes: #838441)
  * Do not package names representing .dsc/.deb/... files (Closes: #854794)
  * Don't use -1 fd and AT_SYMLINK_NOFOLLOW for faccessat()
    Thanks to James Clarke for debugging these issues

 -- Julian Andres Klode <email address hidden> Mon, 27 Feb 2017 15:29:18 +0100

Changed in apt (Ubuntu Xenial):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers