Co to jest format pliku RPM?
Pliki z rozszerzeniem .rpm to pliki pakietów używane w systemach operacyjnych opartych na jądrze Linux. Pierwotnie format .rpm został opracowany przez Red Hat dla własnej dystrybucji Linux, ale obecnie jest szeroko stosowany w systemach Fedora, RHEL, CentOS, openSUSE, Mageia i wielu innych dystrybucjach.
Plik .rpm to pakiet oprogramowania, który zawiera wszystko, co jest potrzebne do zainstalowania konkretnej aplikacji w kompatybilnym systemie Linux. RPM pierwotnie oznaczało Red Hat Package Manager; projekt jest obecnie utrzymywany przez społeczność open-source na RPM.org, a narzędzie wiersza poleceń nazywa się po prostu rpm. Format został zaprojektowany tak, aby instalacja i dystrybucja aplikacji Linux była prosta, dzięki czemu użytkownik końcowy nie musi zarządzać poszczególnymi plikami wymaganymi do instalacji.
Wewnętrznie .rpm ma strukturę binarną składającą się z sekcji prowadzącej (lead), nagłówka sygnatury GPG, nagłówka metadanych z tagami oraz skompresowanego ładunku .cpio zawierającego właściwe pliki. Nowoczesne pakiety kompresują ten ładunek za pomocą XZ/LZMA; obsługiwane są również gzip, bzip2 i Zstd. Pakiety są instalowane za pomocą dnf (Fedora/RHEL) lub zypper (openSUSE), które automatycznie rozwiązują zależności. Wariant .src.rpm zawiera kod źródłowy i instrukcje budowania zamiast gotowych plików binarnych. W systemach Windows lub macOS narzędzia takie jak 7-Zip mogą wyodrębnić zawartość .rpm w celu inspekcji, chociaż skrypty instalacyjne nie mogą zostać uruchomione poza natywnym systemem Linux opartym na RPM. Najbliższym odpowiednikiem w systemach opartych na Debianie jest format .deb.
Bezpieczeństwo
RYZYKO: MEDIUMPakiety RPM uruchamiają skrypty instalacji/odinstalowania jako root, więc złośliwy plik .rpm może całkowicie przejąć system. Instaluj pakiety RPM tylko od zaufanych dostawców/repozytoriów i najpierw zweryfikuj sygnaturę GPG: rpm --checksig package.rpm (oraz zaimportuj klucz dostawcy). Dystrybucje ostrzegają przed instalacją niepodpisanych pakietów. W systemach Windows/macOS plik .rpm nie może zostać uruchomiony, więc jego inspekcja tam jest nieszkodliwa. Unikaj podejrzanych stron typu „rpm to exe” lub „rpm opener” - wprowadzają one w błąd (RPM nie działają na Windows) i często zawierają adware.
Szczegóły formatu
w pigułceProgramy otwierające pliki RPM
rpm2cpio package.rpm | cpio -idmv służy do wyodrębniania plików z pakietu w systemie macOS w celu inspekcji. sudo alien -i package.rpm konwertuje i instaluje jako .deb. Używaj ostrożnie - preferowane są natywne pakiety .deb. sudo dnf install ./package.rpm - instaluje pakiet i automatycznie rozwiązuje zależności. Preferowane nad czystym rpm. sudo zypper install ./package.rpm - instaluje z rozwiązywaniem zależności w systemach SUSE. sudo rpm -ivh package.rpm do instalacji, rpm -qlp do listy plików, rpm --checksig do weryfikacji. Nie rozwiązuje automatycznie zależności. Szczegóły techniczne
specyfikacja| Typ MIME | application/x-rpm (akceptowane również: application/x-redhat-package-manager) |
| Magic bytes pliku | ED AB EE DB na offsecie 0 - sygnatura prowadząca RPM „edabeedb” |
| Struktura wewnętrzna | Sekcja prowadząca → nagłówek sygnatury GPG → nagłówek metadanych z tagami → skompresowany ładunek cpio |
| Kompresja ładunku | XZ/LZMA (nowoczesny standard w Fedora/RHEL), gzip, bzip2 lub Zstd; wybierane podczas budowania pakietu |
| Kolejność bajtów nagłówka | Big-endian; każdy wpis tagu przechowuje 4-bajtowy typ, 4-bajtową liczbę i offset do magazynu danych |
| Podpisywanie pakietów | Sygnatura GPG osadzona w nagłówku sygnatury; weryfikowana za pomocą `rpm --checksig` |
| Metadane zależności | Tagi Requires, Provides, Conflicts i Obsoletes przechowywane w głównym nagłówku do automatycznego rozwiązywania |
| Skrypty instalacyjne | Skrypty przed- i poinstalacyjne (%pre/%post) oraz przed- i poodinstalacyjne (%preun/%postun) osadzone w pakiecie |
| Integralność poszczególnych plików | Skróty SHA-256 dla każdego pliku przechowywane w nagłówku (MD5 w starszych pakietach); sprawdzane po instalacji |
| Wersja formatu pakietu | v4 (obecna, zestaw narzędzi RPM 4.x); format RPM v6 jest w fazie aktywnego rozwoju na RPM.org |
| Powiązane menedżery pakietów | `dnf` (Fedora, RHEL, CentOS Stream), `zypper` (openSUSE/SUSE), `rpm` (polecenie niskopoziomowe) |
| Wariant pakietu źródłowego | `.src.rpm` (SRPM) zawiera archiwum źródłowe tarball i recepturę budowania `.spec` zamiast skompilowanych plików binarnych |
| Obsługiwane platformy instalacyjne | Dystrybucje Linux oparte na RPM: Red Hat, Fedora, RHEL, CentOS, openSUSE, Rocky Linux, AlmaLinux, Mageia |
| Typowy rozmiar pliku | Od kilkunastu KB (małe narzędzia) do kilkuset MB (duże aplikacje, zestawy narzędzi programistycznych lub firmware) |
| Relokowalność | Pakiety mogą być oznaczone jako relokowalne, co pozwala na instalację w ścieżce zdefiniowanej przez użytkownika |
| Wydano | 1997 (RPM, with Red Hat Linux 5.0; rpm-software-management is the current upstream) |
| Najnowsza wersja | RPM v4 package format (RPM 4.20.x, 2024); RPM v6 format in development |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | rpm-software-management.github.io |
Konwersje RPM
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki RPM.
Najczęściej zadawane pytania
Jak zainstalować plik .rpm w systemie Linux?
sudo dnf install ./file.rpm; w openSUSE: sudo zypper install ./file.rpm. Narzędzia te automatycznie rozwiązują zależności. Niskopoziomowe polecenie sudo rpm -ivh file.rpm również działa, ale nie pobierze brakujących zależności.Jak otworzyć plik .rpm w systemie Windows?
Jak zainstalować .rpm na Ubuntu/Debian?
sudo alien -i file.rpm, ale bezpieczniej jest poszukać natywnego pliku .deb, Flatpak lub AppImage tego samego programu.Jaka jest różnica między RPM a DEB?
Jak sprawdzić zawartość .rpm bez instalacji?
rpm -qlp file.rpm wyświetla listę plików, a rpm -qip file.rpm pokazuje informacje o pakiecie; można też użyć rpm2cpio file.rpm | cpio -idmv, aby je wyodrębnić. W systemie Windows otwórz go za pomocą 7-Zip.Dlaczego pojawia się błąd „failed dependencies” podczas instalacji RPM?
dnf install ./file.rpm (lub zypper) zamiast czystego rpm, aby menedżer pakietów pobrał zależności z Twoich repozytoriów.