107

The problem is simple - I have a .deb package and I want to install it on my Arch Linux. Is this possible? If yes, how?

BKC
  • 1,173

5 Answers5

71

Is it possible? Yes. Is it a good idea? That depends. You would only really need to do this if the application only exists as a .deb package. It is much more likely that you can just grab the upstream source and write a simple PKGBUILD to install it with pacman.

You should also search the AUR to ensure that someone hasn't done this already.

jasonwryan
  • 73,126
  • 15
    Note, that even if a source package is not provided (or easily accessible), .deb files are easily extracted with libarchive. And, makepkg uses bsdtar (which uses libarchive) by default to extract sources in a PKGBUILD. The result of this dependency chain is that you can easily write PKGBUILDs that make use of .deb archives as source files. :D – HalosGhost Jul 27 '14 at 00:42
  • 5
    Maybe link an example PKGBUILD? – aksh1618 Nov 08 '20 at 10:08
  • Or if the AUR build fails ... – NeilG Jun 23 '23 at 22:38
64

dpkg for Arch exists. You should be able to install .deb packages on arch, but you should also not use it instead of pacman, so just use it for selected few packages.

The default command looks like:

# dpkg -i package.deb
superuser0
  • 1,710
  • 19
    Using an alternate package manager, though an option, is not the correct solution. The correct solution is to write a PKGBUILD to generate a pacman-native package. – HalosGhost Jul 27 '14 at 00:26
  • 1
    command not found: dpkg – zygimantus Jun 22 '17 at 12:51
  • 27
    Even if it isn't the correct way to do it, it answers the original question... "Is it possible to install a deb package, and how to do it" is answered a lot better by this answer, than simply saying "write a PKGBUILD to generate a native package", since that is not what the user asks... – svin83 Feb 10 '18 at 02:06
  • 1
    Has dpkg been removed? It doesn't exist at the linked to location. – Stand with Gaza Mar 31 '20 at 15:08
  • 3
    @BjörnLindqvist It's a normal pacman package now, and can be installed using sudo pacman -S dpkg. However, after installing it, it warns the user that using it to install debian packages can break their system, so take that as you will. – Axiumin_ Apr 02 '20 at 22:09
  • the source project is discontinued and has build errors in both the AUR PKGBUILD and when I try to build from source. but there is a debian package from an earlier build so totally agree with @svin83 here. – philx_x Aug 24 '21 at 13:25
  • And, the link is now broken. Now we use debtap from the AUR. https://aur.archlinux.org/packages/debtap – Jesse Feb 21 '24 at 02:31
57

Possible? Yes, but different methods exist on basis of use case.

Assumption: The debian package doesn't have an equivalent package in the Arch (or Arch based Distribution's) official repository.

  1. Install yay using pacman:

     sudo pacman -S yay
    

Reason: yay is an AUR helper used to query & install AUR packages. In case the debian package has already been repackaged and published to the AUR by someone else.

  1. Install the package_name using yay:

     yay -S package_name
    

note: replace package_name with the name of the debian package as found in the AUR. It'll attempt to install the dependencies on it's own using pacman.

Alternative

Assumption: The Debian package hasn't been repackaged as an Arch package in AUR yet.

  1. Install debtap from AUR using yay:

     yay -S debtap
    
  2. Create equivalent package using debtap:

     sudo debtap -u
     debtap package_name.deb
    
  3. Install using pacman:

     sudo pacman -U package_name.pkg
    

Not the recommended way (possibly dangerous)

This method attempts to install the package using the debian packaging format on Arch, which is not recommended due to possible danger of corrupting your installation. If using this method it is recommended to be ready with a rescue disc image of Arch & backup of the user data/space.

  1. Install dpkg using yay:

     yay -S dpkg
    
  2. Install the debian package using dpkg:

     sudo dpkg -i package_name.deb
    
tobek
  • 388
  • 4
  • 11
  • yaourt is not in the Arch repositories, and pacman -S yaourt won't work. It is an abandoned AUR package. Rather, you should be explaining how to build an AUR package, and simply note that there are AUR helpers like yaourt and yay. – greyfade Jul 06 '20 at 23:11
  • At the time of writing it used to be available in the Manjaro Repositories, but as you have mentioned I should update the answer to match the current status – ToxicMender Jul 07 '20 at 07:01
  • It may have been available in the Manjaro repositories, but it has never been in the Arch repositories. – greyfade Jul 21 '20 at 18:48
  • 5
    AUR helpers like yay and yaourt should not be run using sudo. These will ask to elevate permission when installing, but build script should be run as an unprivileged user. – Mr. Wrong Sep 23 '20 at 16:57
3

You can install dpkg by: yaourt dpkg.

If you don't have yaourt, you can get it from its AUR page.

Then just cd to where you put it and dpkg -i package.deb whatever the package may be

Czipperz
  • 125
  • 7
willow
  • 63
  • 1
    The current comment on the AUR package for dpkg states it is out of date and "Don't use it instead of Arch's 'pacman'." Does this mean pacman can now be used to install deb packages? – gromain Apr 05 '16 at 07:27
  • 2
    @gromain I believe they say that to tell an ignorant user that they shouldn't be using Debian package management in Arch by default -- it should be an exception rather than the rule. – Czipperz Aug 21 '16 at 03:00
  • 1
    This package is out of date. – zygimantus Jun 22 '17 at 12:51
1

This works for some packages:

# You might append this to ~/.bashrc
function debinstall() {
  ar x $1 data.tar.xz
  mkdir /tmp/$1_dir
  tar -C /tmp/$1_dir -xf data.tar.xz
  sudo rsync /tmp/$1_dir /
  rm -f data.tar.xz
  rm -rf /tmp/$1_dir
}

Usage

debinstall draw.io-amd64-13.6.2.deb # Put your package name instead