apt install of local debs does not tab-complete

Bug #1645815 reported by John Lenton
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
apt (Ubuntu)
Fix Released
Undecided
John Lenton
Xenial
Fix Released
Undecided
Unassigned
Yakkety
Fix Released
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

Revision history for this message
John Lenton (chipaca) wrote :
Revision history for this message
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.

Revision history for this message
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
Revision history for this message
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
Revision history for this message
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
Revision history for this message
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
Revision history for this message
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
Revision history for this message
Ł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!

Revision history for this message
Chris J Arges (arges) wrote : Please test proposed package

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
Revision history for this message
Julian Andres Klode (juliank) wrote :

Verified in 1.2.20

description: updated
tags: added: verification-done
removed: verification-needed
Revision history for this message
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)
tags: added: verification-done-xenial verification-needed-yakkety
removed: verification-needed
Revision history for this message
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
Revision history for this message
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
Revision history for this message
Steve Langasek (vorlon) wrote : Update 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.

Revision history for this message
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  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.