3. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Debian package management
The Debian distribution uses a different packaging system than Red Hat uses.
The Debian system is often considered to be more powerful and robust.
The 4 pieces of the system used most often are:
dpkg dselect apt-get alien
Overview
3
Debian packages, or debs, contain binary files to be installed with info known as metadata.
Metadata holds info on: package, scripts executed, dependencies, conflicts, or suggestions.
Debian package naming scheme:
package_version-build_architecture.deb
•package: name of the application being installed.
•version: version number of the application.
•build: build number of the package. Each time the package is redone this number is incremented.
•architecture: platform the package was compiled for.
There’s a special type of package known as a task package.
These packages are empty packages without software, but with dependencies. Used to install a large “task” on the system.
http://www.debian.org/distrib/packages
4. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Debian package management
Using dpkg
4
Installing packages: dpkg --install package_file.deb or dpkg -i package_file.deb
debian:~# dpkg --install ethereal_0.8.13-2_i386.deb
Selecting previously deselected package ethereal.
(Reading database ... 54478 files and directories currently
installed.)
Unpacking ethereal (from ethereal_0.8.13-2_i386.deb) ...
dpkg: dependency problems prevent configuration of ethereal:
ethereal depends on libpcap0 (>= 0.4-1); however:
Package libpcap0 is not installed.
dpkg: error processing ethereal (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
Ethereal
Ex:
dpkg checks the package for needed dependencies and displays an error if they are not installed.
ethereal_0.8.13-2_i386.deb requires the libpcap0 package to be installed.
debian:~# dpkg --install ethereal_0.8.13-2_i386.deb libpcap0_0.4a6-3_i386.deb
(Reading database ... 54499 files and directories currently
installed.)
Preparing to replace ethereal 0.8.13-2 (using
ethereal_0.8.13-2_i386.deb) ...
Unpacking replacement ethereal ...
Selecting previously deselected package libpcap0.
Unpacking libpcap0 (from libpcap0_0.4a6-3_i386.deb) ...
Setting up libpcap0 (0.4a6-3) ...
Setting up ethereal (0.8.13-2) ...
5. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Debian package management
Using dpkg
5
Force options: To override an error when installing or removing a package.
Option Purpose
configure-any Configure any other package that may help to install this package.
hold Process another package, even if it is on hold.
bad-path Force even when missing files.
not-root Try to add or remove packages, even if not root.
overwrite Overwrite a file from a new package, even if it belongs to another package.
depends-version Normally an error is given if the correct version of a dependency is not installed.
This option makes that a warning instead.
depends Turn all dependency errors into warnings.
confnew Always use the newly installed configuration file.
confold Always use the old configuration file.
conflicts Allow packages that conflict to be installed.
overwrite-dir Overwrite another package’s directory with a new one.
remove-essential Remove essential system packages, dangerous.
debian:~# dpkg -install new_package.deb --force-conflictsEx:
7. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Debian package management
Using dpkg
7
Info on packages: dpkg --print-avail package_name or dpkg -p package_name
debian:~# dpkg --print-avail ethereal
Package: ethereal
Priority: optional
Section: net
Installed-Size: 2996
Maintainer: Frederic Peters <fpeters@debian.org>
Architecture: i386
Version: 0.8.13-2
Depends: libc6 (>= 2.1.94), libglib1.2 (>= 1.2.0), libgtk1.2
(>= 1.2.8-1), libpc
ap0 (>= 0.4-1), libsnmp4.1, xlibs (>= 4.0.1-1), zlib1g (>=
1:1.1.3)
Filename: dists/potato/main/binaryi386/
net/ethereal_0.8.0-1.deb
Size: 1201932
MD5sum: 78928ca734086acd72b441967bf24bc0
Description: Network traffic analyzer
Ethereal is a network traffic analyzer, or “sniffer”, for Unix
and
Unix-like operating systems. It uses GTK+, a graphical user
interface
library, and libpcap, a packet capture and filtering library.
Ex:
8. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Debian package management
Using dpkg
8
listing packages: dpkg --list <pattern> or dpkg -l <pattern>
<pattern> is an optional search pattern. Without pattern dpkg will display every package available.
debian:/usr/doc/dpkg# dpkg --list apache*
Desired=Unknown/Install/Remove/Purge/Hold ## (Letter1)
| Status=Not/Installed/Config-files/Unpacked/Failedconfig/Half-installed ## (Letter2)
|/ Err?=(none)/Hold/Reinst-required/X=both-problems(Status,Err: uppercase=bad) ##
(Letter3)
||/ Name Version Description
+++-===============-===============-============================================
pn apache <none> (no description available)
pn apache-common <none> (no description available)
pn apache-dev <none> (no description available)
pn apache-doc <none> (no description available)
un apache-modules <none> (no description available)
pn apache-perl <none> (no description available)
pn apache-ssl <none> (no description available)
Ex:
Apache packages are listed, but none are installed. - However, several were installed but where purged and now are not installed.
3 columns on left: p - file has been purged; u - file is unpacked, n - file is not installed.
Left columns are documented by lines above file list. Letters correspond to the first letter of the information. Ex: i = installed, and h = half-installed.
9. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Debian package management
Using dpkg
9
Status packages with full details: dpkg --status package_name or dpkg -s package_name
debian:~# dpkg -s ethereal
Package: ethereal
Status: install ok installed
Priority: optional
Section: net
Installed-Size: 2996
Maintainer: Frederic Peters <fpeters@debian.org>
Version: 0.8.13-2
Depends: libc6 (>= 2.1.94), libglib1.2 (>= 1.2.0), libgtk1.2 (>= 1.2.8-1), libpc ap0 (>= 0.4-1),
libsnmp4.1, xlibs (>= 4.0.1-1), zlib1g (>= 1:1.1.3)
Description: Network traffic analyzer
Ethereal is a network traffic analyzer, or “sniffer”, for Unix and Unix-like operating systems.
It uses GTK+, a graphical user interface library, and libpcap, a packet capture and filtering
library.
Ex:
11. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Debian package management
Using dpkg
11
Displaying file ownership : dpkg --search package_name or dpkg -S package_name
To find out which package installed a certain file
debian:/etc# dpkg --search /etc/issue.net
base-files: /etc/issue.net
Ex:
/etc/issue.net file was installed by the base-files package.
debian:/etc# which java
/usr/bin/java
debian:/etc# ls -l $(which java)
lrwxrwxrwx 1 root root 22 2010-05-03 17:51 /usr/bin/java ->
/etc/alternatives/java
debian:/etc# update-alternatives --display java
java - auto mode
link currently points to /usr/lib/jvm/java-6-openjdk/jre/bin/java
/usr/lib/jvm/java-6-openjdk/jre/bin/java - priority 1061
slave java.1.gz: /usr/lib/jvm/java-6-openjdk/jre/man/man1/java.1.gz
Current `best' version is /usr/lib/jvm/java-6-openjdk/jre/bin/java
debian:/etc# dpkg -S /usr/lib/jvm/java-6-openjdk/jre/bin/java
openjdk-6-jre-headless: /usr/lib/jvm/java-6-openjdk/jre/bin/java
Ex:
12. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Debian package management
Using dpkg
12
Checking available packages
Most of the info displayed and used by dpkg is stored in /var/lib/dpkg directory.
With 2 files of interest:
/var/lib/dpkg/available - lists available packages to choose from.
/var/lib/dpkg/status - shows status of installed packages.
debian:/var/lib/dpkg# more available
Package: telnet
Priority: standard
Section: net
Installed-Size: 176
Maintainer: Herbert Xu <herbert@debian.org>
Architecture: i386
Source: netkit-telnet
Version: 0.16-4
Replaces: netstd
Depends: libc6 (>= 2.1.2), libncurses5
Filename: dists/potato/main/binary-i386/net/telnet_0.16-4.deb
Size: 58826 .. // ..
Ex:
debian:/var/lib/dpkg# more status
Package: telnet
Status: install ok installed .. // ..
21. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Debian package management
Using apt-get
21
/etc/apt/sources.list
Ex: $ cat /etc/apt/sources.list
#deb cdrom:[Ubuntu 9.10 _Karmic Koala_ - Release i386 (20091028.5)]/ karmic main
restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://us.archive.ubuntu.com/ubuntu/ karmic main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://us.archive.ubuntu.com/ubuntu/ karmic-updates main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic-updates main restricted
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://us.archive.ubuntu.com/ubuntu/ karmic universe
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic universe
deb http://us.archive.ubuntu.com/ubuntu/ karmic-updates universe
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic-updates universe
22. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Debian package management
Using apt-get
22
Updating the available packages - apt-get update
Any time there’s changes to sources.list file.
apt-get will go to the list of sources and update the package database in the system.
Installing packages - apt-get install package_name
If apt-get installs a package, it first checks if has already been downloaded.
If not, apt-get goes to first source in list an retrieves the newest version and prompts the user for the
dependencies and installs them automatically.
Upgrading packages - apt-get upgrade
Upgrade all installed packages to their latest version in one step.
Always issue an apt-get update before doing an upgrade, so the package list is up-to-date.
APT-get options:
24. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Debian package management
Using apt-get
24
APT-get other options:
Option Purpose
-h Display the apt-get help.
-q Display output for logging.
-qq No output except for errors.
-d Only download the packages to the archives directory; do not install them.
-y Answer Yes to all queries.
-f Continue even if integrity check fails. This is sometimes used to fix dependency issues.
-m Continue even if the packages can not be located.
-u Show a list of upgraded packages.
-b Build a source package after retrieving it.
-c=filename Read the specified configuration file.
-o=option Set a special configuration option.
-s Simulate the action only. This will display the information as if you have actually executed the process.
This is useful for testing purposes before you accidentally break anything.
30. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Debian package management
Using alien
30
The alien tool converts packages between several different formats.
It can be used on any distribution.
Supported Formats: Debian .deb; Red Hat .rpm; Slackware .tgz; Stampede .slp
Syntax : alien [options] package
Option Alternate Purpose
-d --to-deb The default. Tells alien to create a .deb package
--patch=<filename> Only used with -d. Specifies the patch file to use.
--nopatch Only used with -d. Specifies that no patch file should be used.
-r --to-rpm Creates an RPM package.
-t --to-tgz Creates a Slackware .tgz package.
--to-slp Creates a Stampede package.
-i --install Installs the package after creation.
-g --generate Unpacks the package, but does notgenerate a new one.
-s --single Does the same as -g, but does not create the .orig directory.
-c --scripts Includes scripts in the new package.
-k --keep-version Does not change the version of the generated package.
--description= Sets the package’s description.
-h --help Shows the help options.
-v --version Shows the version of alien.