
The apt command: Combining apt-get and apt-cache and adds a progress bar (2014) - JelteF
https://mvogt.wordpress.com/2014/04/04/apt-1-0/
======
deelowe
I've never understood why debian insists on having these be different
commands. It would make sense if install, search, upgrade and uninstall were
all discrete, but the way it is today feels half implemented.

~~~
adricnet
Only one of them requires readwrite system administrator privileges (eg sudo).
_apt-cache_ can be run by any user as it doesn't expose any secret data and
can't be used to make changes. apt-get can install and uninstall software as
well as download packages and thus needs root privileges in the classic UNIX
model.

~~~
krylon
On CentOS, I can do "yum search something" as a regular user, while "yum
install something" or "yum upgrade" require root privileges.

I think it's similar with the pkg command on FreeBSD.

~~~
konfou
and same with pacman on Arch (and derivatives)

------
jimrandomh
There's another thing about apt that's bothered me: apt-cache search isn't a
very good search engine. Its most common use case is finding the exact name of
some library/framework package, ie, "apt-cache search someframework". For
common frameworks, this produces hundred of search results for packages that
_use_ the framework and mention this in their description, while the framework
itself is in the list but very difficult to find. The --names-only flag fixes
this, but it's not the default so it's one more thing to worry about.

~~~
matt_wulfeck
I have this problem too. If I did myself shelling out to grep with pcre flags
to find a simple library then there's a UX issue.

~~~
iam-TJ
Search uses regular expressions so generally no need for grep unless you need
more complex filters; --names-only has the -n short-form:

    
    
      apt-cache search -n <regexp>
    

More generally apt-get and apt-cache are designed to be backward-compatible
for use in scripts whereas _apt_ is not[0]:

    
    
      SCRIPT USAGE AND DIFFERENCES FROM OTHER APT TOOLS
    
           The apt(8) commandline is designed as an end-user tool and it may change behavior between versions. While it tries not to break backward compatibility this is not guaranteed either if a change seems beneficial for interactive use.
    

[0]
[http://manpages.ubuntu.com/manpages/xenial/en/man8/apt.8.htm...](http://manpages.ubuntu.com/manpages/xenial/en/man8/apt.8.html)

~~~
matt_wulfeck
Great tip thank you!

------
robin__
Will it take twice the amount of time with the progress bar enabled?

~~~
clebio
I can't answer specifically for `apt`, but many commands take significantly
longer if you let them display to stdout versus piping their output to a file
or `/dev/null`. cf.:

    
    
      $ time ls -R /usr
      real    0m7.570s
      user    0m0.104s
      sys     0m2.286s
    
      $ time ls -R /usr > /dev/null
      real    0m0.193s
      user    0m0.036s
      sys     0m0.154s
    
    

(edit: when will I grok HN markup?? _cough_ support markdown _cough_ )

~~~
jasonjayr
Did you run those two commands in sequence? Did you account for disk-cache
effects? Try running it 4 times, alternating the versions and see what your
last 2 times are ...

~~~
vacri
You can actually show different speeds in different terminals - the speed of
terminal rendering affects the duration of the test. In the tests below, I
have no custom terminal prompts or similar (no git status lines etc) - they're
all distribution defaults running bash.

    
    
        # all the below run in the same MATE desktop
        # lxterm (from lxde - is easiest on my eye)
        $ time ls -R /usr
        real    0m19.974s
        user    0m0.860s
        sys	    0m0.832s
    
        # gnome terminal
        $ time ls -R /usr
        real    0m19.902s
        user    0m0.800s
        sys     0m0.776s
    
        # xterm (yes, it really is 10x the speed)
        $ time ls -R /usr
        real    0m1.872s
        user    0m0.856s
        sys     0m0.800s
    
        # rerun in the first terminal, and the time hasn't changed - still 19s
    
        # now in lxterm redirecting to null
        # (and xterm gives similar results here)
        $ time ls -R /usr > /dev/null
    
        real    0m0.418s
        user    0m0.256s
        sys     0m0.156s
    
    

All that prettification and rendering takes time; if you want raw speed, use
xterm... or pipe output to /dev/null.

Interestingly, 'time' on gterm and lxterm had tabs between the above
field:value pairs (I had to reformat to show them nicely), but xterm used
spaces. I don't know enough about the terminal underpinnings to guess as to
why.

------
tetraodonpuffer
also don't forget apt-file (very useful to find out which package contains the
library/binary you want to install) and dpkg -L to figure out what a
particular package installed on your system.

I switched to debian some time ago and it's interesting so many different
commands are used for package management, this said I personally have an alias
ap=sudo aptitude -t jessie-backports alias and use that as a command line
interface for search/install, and run the full aptitude gui only when doing
updates

~~~
pbhjpbhj
Yes to apt-file, and 'apropos' seems to fit in there too (searches for
keywords in package descriptions).

~~~
pbhjpbhj
Replying because can't edit: "apt search $keyword" works like apropos but
isn't in the tab completion on my Kubuntu 15.10.

------
enesunal
v1.1:
[https://mvogt.wordpress.com/2015/11/30/apt-1-1-released/](https://mvogt.wordpress.com/2015/11/30/apt-1-1-released/)

------
rcthompson
I've already been using wajig for years now. It combines these two and about a
dozen other utilities into one command.

~~~
joshstrange
Wow, I've never heard of this, pretty neat! Thanks for sharing.

------
esaym
Wonder how it compares to aptitude? Used to be (10 years ago), aptitude was
better and not orphaning packages on removal. Been using ever since..

------
ianlevesque
Really cool. Somehow I had missed the introduction of this but it's a
friendlier interface and already on my Ubuntu systems.

~~~
nherment
Same here, I can't believe we're a few years late. Much better than the apt-
get / apt-cache stupidity.

~~~
cryowaffle
Harsh, this must have really upset you.

~~~
dave2000
Perhaps not upset, just intolerant of really lame, unintuitive crap software?

------
mixmastamyk
If you'd like to try this right away (not have to wait) on any version of
Debian/Ubuntu (just need pip) try this script I wrote several years ago:

[https://pypi.python.org/pypi/apt-wrapper/](https://pypi.python.org/pypi/apt-
wrapper/)

No prog bar but it handles all common tasks, ppa's, and elevates with sudo
automatically. For example:

    
    
        > pip install apt-wrapper 
        > apt in foobar

------
vmorgulis
Here is my "apt-upgrade.sh"

    
    
        apt-get -y update
        apt-get -y upgrade
        apt-get -y dist-upgrade
        apt-get -y autoremove
    

I run that everyday.

~~~
saltvedt
[https://wiki.debian.org/UnattendedUpgrades](https://wiki.debian.org/UnattendedUpgrades)

~~~
vmorgulis
Thank you a lot!

------
lobster_johnson
I love this, but its terminal magic isn't working properly for me. "apt
install stuff" places a progress bar at the moment, then prints some
misaligned stuff and then finally manages to clear the screen (!).

Any terminal settings I need to adjust? I'm using OS X's Terminal.app,
terminal declared as xterm-256color, via SSH, under zsh.

------
mikelward
Why not just alias apt=aptitude?

~~~
quadrangle
apt has colors, aptitude doesn't… ?

~~~
lorenzhs
aptitude has a nice curses interface, though, which is great for resolving
conflicts or other changes that require planning

~~~
pherq
It also usually seems to be slower to start (at least in my experience) -- I
tend to not like to use it except for resolving broken packages (since it's
the nicest way to do that).

~~~
lorenzhs
The latest version in Debian unstable (0.7.7) seems to have brought some
improvements in startup time. Generally the recent progress has been very
nice.

------
HeadlessChild
I had no idea about this and I maintain (only) Debian and Ubuntu based clients
everyday..

------
Drdrdrq
Is this installed by default on Debian? If not, then this is a deal-breaker
for me. I might as well install aptitude which also provides a similar command
line interface.

~~~
rincebrain
It's provided by the same package as e.g. apt-get and apt-cache, so yes.

~~~
Drdrdrq
Thanks for the info, appreciate it!

------
0x006A
i like the recent changes in debian. finally most of the use cases are covered

------
yahyaheee
Finally! why has this taken so long? Common sense people

