Debian based systems (including Ubuntu) uses apt-* commands for managing packages from the command line.
In this article, using Apache 2 installation as an example, let us review how to use apt-* commands to view, install, remove, or upgrade packages.
1. apt-cache search: Search Repository Using Package Name
If you are installing Apache 2, you may guess that the package name is apache2. To verify whether it is a valid package name, you may want to search the repository for that particular package name as shown below.
The following example shows how to search the repository for a specific package name.
$ apt-cache search ^apache2$ apache2 - Apache HTTP Server metapackage
2. apt-cache search: Search Repository Using Package Description
If you don’t know the exact name of the package, you can still search using the package description as shown below.
$ apt-cache search "Apache HTTP Server" apache2 - Apache HTTP Server metapackage apache2-doc - Apache HTTP Server documentation apache2-mpm-event - Apache HTTP Server - event driven model apache2-mpm-prefork - Apache HTTP Server - traditional non-threaded model apache2-mpm-worker - Apache HTTP Server - high speed threaded model apache2.2-common - Apache HTTP Server common files
3. apt-file search: Search Repository Using a Filename from the Package
Sometimes you may know the configuration file name (or) the executable name from the package that you would like to install.
The following example shows that apache2.conf file is part of the apache2.2-common package. Search the repository with a configuration file name using apt-file command as shown below.
$ apt-file search apache2.conf apache2.2-common: /etc/apache2/apache2.conf apache2.2-common: /usr/share/doc/apache2.2-common/examples/apache2/apache2.conf.gz
4. apt-cache show: Basic Information About a Package
Following example displays basic information about apache2 package.
$ apt-cache show apache2 Package: apache2 Priority: optional Maintainer: Ubuntu Core Developers Original-Maintainer: Debian Apache Maintainers Version: 2.2.11-2ubuntu2.3 Depends: apache2-mpm-worker (>= 2.2.11-2ubuntu2.3) | apache2-mpm-prefork (>= 2.2.11-2ubuntu2.3) | apache2-mpm-event (>= 2.2.11-2ubuntu2.3) Filename: pool/main/a/apache2/apache2_2.2.11-2ubuntu2.3_all.deb Size: 46350 Description: Apache HTTP Server metapackage The Apache Software Foundation's goal is to build a secure, efficient and extensible HTTP server as standards-compliant open source software. Homepage: http://httpd.apache.org/
5. apt-cache showpkg: Detailed Information About a Package
“apt-cache show” displays basic information about a package. Use “apt-cache showpkg” to display detailed information about a package as shown below.
$ apt-cache showpkg apache2 Package: apache2 Versions: 2.2.11-2ubuntu2.3 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_jaunty-updates_main_binary-i386_Packages) (/var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_jaunty-security_main_binary-i386_Packages) Description Language: File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_jaunty-updates_main_binary-i386_Packages MD5: d24f049cd70ccfc178dd8974e4b1ed01 Reverse Depends: squirrelmail,apache2 squid3-cgi,apache2 phpmyadmin,apache2 mahara-apache2,apache2 ipplan,apache2 Dependencies: 2.2.11-2ubuntu2.3 - apache2-mpm-worker (18 2.2.11-2ubuntu2.3) apache2-mpm-prefork (18 2.2.11-2ubuntu2.3) apache2-mpm-event (2 2.2.11-2ubuntu2.3) 2.2.11-2ubuntu2 - apache2-mpm-worker (18 2.2.11-2ubuntu2) apache2-mpm-prefork (18 2.2.11-2ubuntu2) apache2-mpm-event (2 2.2.11-2ubuntu2) Provides: 2.2.11-2ubuntu2.3 - 2.2.11-2ubuntu2 - Reverse Provides: apache2-mpm-itk 2.2.6-02-1build4.3 apache2-mpm-worker 2.2.11-2ubuntu2.3 apache2-mpm-prefork 2.2.11-2ubuntu2.3 apache2-mpm-prefork 2.2.11-2ubuntu2 apache2-mpm-event 2.2.11-2ubuntu2
6. apt-file list: List all the Files Located Inside a Package
Use “apt-file list” to display all the files located inside the apache2 package as shown below.
$ apt-file list apache2 | more apache2: /usr/share/bug/apache2/control apache2: /usr/share/bug/apache2/script apache2: /usr/share/doc/apache2/NEWS.Debian.gz apache2: /usr/share/doc/apache2/README.Debian.gz apache2: /usr/share/doc/apache2/changelog.Debian.gz ...
7. apt-cache depends: List all Dependent Packages
Before installation, if you like to view all the dependent packages, use “apt-cache depends” as shown below.
$ apt-cache depends apache2 apache2 |Depends: apache2-mpm-worker |Depends: apache2-mpm-prefork Depends: apache2-mpm-event
8. dpkg -l: Is the Package Already Installed?
Before installing a package, you may want to make sure it is not already installed as shown below using dpkg -l command.
$ dpkg -l | grep -i apache
9. apt-get install: Install a Package
Finally, install the package using “apt-get install” as shown below.
$ sudo apt-get install apache2 [sudo] password for ramesh: The following NEW packages will be installed: apache2 apache2-mpm-worker apache2-utils apache2.2-common libapr1 libaprutil1 libpq5 0 upgraded, 7 newly installed, 0 to remove and 26 not upgraded.
10. dpkg -l : Verify Whether the Package got Successfully Installed
After installing the package, use “dpkg -l” to make sure it got installed successfully.
$ dpkg -l | grep apache ii apache2 2.2.11-2ubuntu2.3 Apache HTTP Server metapackage ii apache2-mpm-worker 2.2.11-2ubuntu2.3 Apache HTTP Server - high speed threaded mod ii apache2-utils 2.2.11-2ubuntu2.3 utility programs for webservers ii apache2.2-common 2.2.11-2ubuntu2.3 Apache HTTP Server common files
11. apt-get remove: Delete a Package
Use “apt-get purge” or “apt-get remove” to delete a package as shown below.
$ sudo apt-get purge apache2 (or) $ sudo apt-get remove apache2 The following packages were automatically installed and are no longer required: apache2-utils linux-headers-2.6.28-11 libapr1 apache2.2-common linux-headers-2.6.28-11-generic apache2-mpm-worker libpq5 libaprutil1 Use 'apt-get autoremove' to remove them. The following packages will be REMOVED: apache2 0 upgraded, 0 newly installed, 1 to remove and 26 not upgraded. Removing apache2 ...
- apt-get remove will not delete the configuration files of the package
- apt-get purge will delete the configuration files of the package
12. apt-get -u install: Upgrade a Specific Package
The following example shows how to upgrade one specific package.
$ sudo apt-get -u install apache2 Reading package lists... Done Building dependency tree Reading state information... Done apache2 is already the newest version. The following packages were automatically installed and are no longer required: linux-headers-2.6.28-11 linux-headers-2.6.28-11-generic Use 'apt-get autoremove' to remove them. 0 upgraded, 0 newly installed, 0 to remove and 26 not upgraded.
13. apt-get -u upgrade: Upgrade all Packages
To upgrade all the packages to it’s latest version, use “apt-get -u upgrade” as shown below.
$ sudo apt-get -u upgrade The following packages will be upgraded: libglib2.0-0 libglib2.0-data libicu38 libsmbclient libwbclient0 openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw openoffice.org-emailmerge openoffice.org-gnome openoffice.org-gtk openoffice.org-impress openoffice.org-math openoffice.org-style-human openoffice.org-writer python-uno samba-common smbclient ttf-opensymbol tzdata 26 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Comments on this entry are closed.
i was under the assumption that ‘aptitude’ was the way to go nowadays?
Great article as always Ramesh. For anyone that uses the apt commands often I recommend you investigate the wajig package. I started using it just for the logs it keeps but now use it for all package management and more. Thanks.
Hello,
Nice examples. I just wanted to know one thing that is whenever we install any package in linux with command apt-get install package-name, it will first download the .deb package(in case of Ubuntu) and then it extracts that package and then from that extracted package it installs. so i wanted to know that after downloading where exactly it extracts the package ? (I mean which directory).
Thanks.
Consider using aptitude (its command line mode, not the curses one) instead of apt-get. Specially aptitude safe-upgrade. Check man aptitude for more options and then, make a choice! 😉
When managing your DEBs, freedoms still counts 🙂
Well, its good to know these commands, for some purposes. But I actually mostly use aptitude or when I have an x-server I use synaptic. I dont see any problem in using a UI. Especially when resolving a lot of dependency-stuff, apt-get can get really annoying, while aptitude has a nice tree-viewing-mode.
i’am getting errors for dpkg command like,
agm@agm-atom3:~$ dpkg -1 | grep vlc
dpkg: unknown option -1
Type dpkg –help for help about installing and deinstalling packages [*];
Use `dselect’ or `aptitude’ for user-friendly package management;
Type dpkg -Dhelp for a list of dpkg debug flag values;
Type dpkg –force-help for a list of forcing options;
Type dpkg-deb –help for help about manipulating *.deb files;
Type dpkg –license for copyright license and lack of warranty (GNU GPL) [*].
Options marked [*] produce a lot of output – pipe it through `less’ or `more’ !
agm@agm-atom3:~$
it’s dpkg -l (lower case “L”, not number one). 🙂
The package manager normally (unless customized) extracts the generic information in /tmp in my case. otherwise you can view the log files /var/log/ to view more information
I have installed Cacti on Ubuntu 8.04 desktop, but had skipped its GUI-based configuration part as it was erroring out. It could not create the database. So, I completed its installation without the GUI-based configuration.
Now, I need to invoke the GUI-based configuration part again.
Any idea, how to do it?
Thanks,
Jimmy
Thanks so good
Is there anyone knows how to go from testing to stable release on the debian distribution?
thx
Jimmy – to reconfigure, run ’sudo dpkg-reconfigure (packagename)‘
Hello,
Can you let me know if the PHP version is in 5.3.26 or greater and i need to downgrade it to the version in the range between 5.2 to 5.3.5, how can proceed it, let me know the about the process of doing it.