Linux packages: deb, rpm or zip?

Three formats for three families of distribution. Choose correctly and it installs with one command; choose wrong and you land in dependency hell.

LinuxFeb 6, 20262 min read

The Linux build comes as .deb, .rpm and .zip. These are not better-or-worse options — they map to different package management systems. Picking wrong means, at best, that it will not install.

Match your distribution

FormatDistributionsInstall command
.debDebian, Ubuntu, Linux Mint, Deepin, Kalisudo apt install ./package.deb
.rpmRHEL, CentOS Stream, Fedora, openSUSE, AlmaLinuxsudo dnf install ./package.rpm
.zipEverything else: Arch, Alpine, Gentoo, NixOSExtract and run
Not sure what you are running?
cat /etc/os-release

# check ID and ID_LIKE:
#   ID_LIKE=debian          → use deb
#   ID_LIKE="rhel fedora"   → use rpm
#   anything else           → use zip

Then confirm the architecture

Format and architecture are independent choices — you need both right.

Check the CPU architecture
uname -m

# x86_64      → files with 64 in the name
# aarch64     → files with arm64 in the name
# loongarch64 → the loong64 build
Your systemArchDownloadUbuntu / Debianx86_64linux-64.debUbuntu / DebianARM64linux-arm64.debFedora / RHELARM64linux-rhel-arm64.rpmLoongsonloong64linux-loong64.debArch / otherx86_64linux-64.zipArch / otherARM64linux-arm64.zip
Format × architecture = the file you want

Why deb and rpm are worth preferring

  • Dependencies resolve automatically — missing libraries get pulled in rather than hunted down.
  • Desktop integration — an icon appears in your application menu.
  • Clean removalapt remove or dnf remove takes everything with it.
  • Correct permissions — files land in standard paths with the right ownership.

Using the zip build

The zip has no concept of installation: it runs from wherever you extract it. Good when you do not want to touch system directories, or your distribution uses neither format.

Extract and set the executable bit
mkdir -p ~/apps/v2rayn && cd ~/apps/v2rayn
unzip ~/Downloads/v2rayN-linux-64.zip

# both the app and the cores need it
chmod +x v2rayN
chmod +x bin/*/*

./v2rayN

Missing dependencies

Common libraries, pick the line for your distro
# Debian / Ubuntu
sudo apt update && sudo apt install -y libicu-dev libfontconfig1 libx11-6

# Fedora / RHEL
sudo dnf install -y libicu fontconfig libX11

# find out exactly what is missing
ldd ./v2rayN | grep "not found"

That last command is the useful one: it lists every shared library the binary needs, and the not found entries are precisely what you are missing. Search your distribution's package index for the library name to find the package.