Debian package management: Difference between revisions

From wiki
Jump to navigation Jump to search
imported>Johayek
imported>Johayek
mNo edit summary
Line 19: Line 19:
<pre>$ sudo apt-get update</pre>
<pre>$ sudo apt-get update</pre>


=== APT: installing ... ====
=== APT: installing ... ===
<pre>
<pre>
$ sudo apt-get install PACKAGE
$ sudo apt-get install PACKAGE
Line 38: Line 38:
</pre>
</pre>


==== APT: removing ... ====
=== APT: removing ... ===
<pre>
<pre>
$ sudo apt-get remove PACKAGE
$ sudo apt-get remove PACKAGE
Line 53: Line 53:


In case of an optional resp. alternate dependency that's not shown (clearly).
In case of an optional resp. alternate dependency that's not shown (clearly).
=== which (installed?) package includes a certain FILE (utility, ...)? ===
<pre>$ apt-file search PATTERN</pre>
=== which files does a certain PACKAGE include? ===
<pre>$ apt-file list PACKAGE</pre>


== dpkg, dpkg-query, dpkg-deb ==
== dpkg, dpkg-query, dpkg-deb ==

Revision as of 11:39, 15 June 2018

APT

apt-cache -- query the APT cache

apt-get -- APT package handling utility -- command-line interface

APT: resynchronising the package index files from their sources

$ sudo apt-get update

APT: installing ...

$ sudo apt-get install PACKAGE

# do not *really* install the PACKAGE,
# just download it to the default cache directory:
$ sudo apt-get install --download-only PACKAGE

# do not *really* install the PACKAGE,
# just download it to the cache directory being specified (instead of /var/cache/apt/archives/):
$ sudo apt-get install --download-only --option dir::cache=$HOME/tmp PACKAGE

APT: installing the newest versions of all packages currently installed on the system from the sources enumerated in /etc/apt/sources.list

$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

APT: removing ...

$ sudo apt-get remove PACKAGE
$ sudo apt-get autoremove PACKAGE

apt-rdepends - performs ... dependency listings (also a reverse one)

$ apt-rdepends --reverse PACKAGE

In case of an optional resp. alternate dependency that's not shown (clearly).

which (installed?) package includes a certain FILE (utility, ...)?

$ apt-file search PATTERN

which files does a certain PACKAGE include?

$ apt-file list PACKAGE

dpkg, dpkg-query, dpkg-deb

dpkg

installing the Debian package

$ sudo dpkg --install PACKAGE.deb

dpkg-deb

which files are included? will be created from this package file?

$ dpkg-deb --contents PACKAGE.deb

what's the official package name?

$ dpkg-deb --info PACKAGE.deb

dpkg-query

which packages are installed (together with a couple of details)?

$ dpkg-query --list

is there an installed package, that sounds like XYZ?

$ dpkg-query --list | fgrep XYZ

details of an installed package (that you know the name of, e.g. PACKAGE)

$ dpkg-query --list PACKAGE

all details of specified package

$ dpkg-query --status PACKAGE

what's the content of an installed package (e.g. PACKAGE)

$ dpkg-query --listfiles PACKAGE

which installed package includes a certain FILE (utility, ...)?

$ dpkg-query --search FILE

dpkg-deb -- Debian package archive (.deb) manipulation tool

dpkg-deb packs, unpacks and provides information about Debian archives.

Use dpkg to install and remove packages from your system.

dpkg-source -- Debian source package (.dsc) manipulation tool

$ dpkg-source --extract ....dsc

needs a:

  • *.dsc
  • *.debian.tar.*
  • *.orig.tar.*

rpm2deb -- converting packages from ... to ...

alien --to-deb ...

this command line creates a Debian package from an RPM package (using that e-mail address for the (local Debian) package maintainer).
CAVEAT: won't actually work, because creating a Debian package requires running this as root

$ env EMAIL='john.doe@COMPANY.com' alien --to-deb --keep-version ...

some command line parameters can only get passed to "alien" as environment variables.

fakeroot ...

you do not have root priviliges, but you need to pretend to have them for achieving certain goals like creating a Debian package:

$ fakeroot --unknown-is-real ...

special issues

fiddling with the tree before creating the .deb

Because you actually do create real files (to be owned by root), you now do need to make use of sudo instead of only fakeroot:

$ sudo env EMAIL='john.doe@COMPANY.com' alien --to-deb --keep-version ...
$ cd ...
# here you want to change a few bits 
$ sudo env EMAIL='john.doe@COMPANY.com' debian/rules binary

open questions

  • how to deal with dependencies specified within the RPM package?

history of this article

This blog article got created 1st, but then the content got moved here to the wiki: