Megpróbálom telepíteni az Intel OpenCL SDK-ját, de a DEB fájlok hibás konverziók az RPM-ből ( itt a kíváncsiak számára). Szerkesztenem kell az postinst parancsfájlt az általuk biztosított DEB-ben.

Hogyan készíthetem el egy meglévő DEB-t, kibonthatom a tartalmát (beleértve a vezérlő információkat), majd később újracsomagolja a tartalmat, hogy új DEB legyen? Csak fájlokat fogok szerkeszteni, fájlok nem kerülnek hozzáadásra vagy eltávolításra.

Megjegyzések

  • a kicsomagolást éjféltől lehet parancsnoktól kezdeni (apt install mc) – csak nyomja meg az Enter billentyűt egy deb fájlban

Válasz

A az elsődleges parancs a deb csomagok kezelésére: dpkg-deb .

A csomag kibontásához hozzon létre egy üres könyvtárat, és váltson át rá, majd futtassa az dpkg-deb parancsot, hogy kivonja a vezérlőinformációit és a csomagfájlokat. Használja a dpkg-deb -b fájlt a csomag újjáépítéséhez.

mkdir tmp dpkg-deb -R original.deb tmp # edit DEBIAN/postinst dpkg-deb -b tmp fixed.deb 

Vigyázzon, hogy ha a parancsfájl rootként nem fut, akkor a fájlok ” Az engedélyek és a tulajdonjogok a kibontás szakaszában megsérülnek. Ennek elkerülésére az egyik módja a szkript futtatása a fakeroot alatt. . Vegye figyelembe, hogy a teljes szekvenciát a fakeroot alatt kell futtatnia, nem pedig mindegyiket dpkg-deb, külön-külön, mivel ez a fakeroot folyamat, amely megőrzi a nem létrehozható fájlok engedélyeinek memóriáját.

fakeroot sh -c " mkdir tmp dpkg-deb -R original.deb tmp # edit DEBIAN/postinst dpkg-deb -b tmp fixed.deb " 

Nem pedig rendetlenség engedélyekkel megőrizheti az adatarchívum sértetlenségét, és csak a vezérlőarchívumot módosíthatja. dpkg-deb nem biztosít erre módot. Szerencsére a deb csomagok szabványos formátumban vannak: “re ar archívumok. Tehát használhatja a ar a vezérlőarchívum kibontásához, a fájljainak módosításához, és a ar használatával újból kicserélheti a vezérlőarchívumot.

mkdir tmp cd tmp ar p ../original.deb control.tar.gz | tar -xz # edit postinst cp ../original.deb ../fixed.deb tar czf control.tar.gz *[!z] ar r ../fixed.deb control.tar.gz 

hozzáadhat egy változásnapló bejegyzést , és módosítania kell a verziószám ha bármit módosít a csomagban. A Debian csomagok manipulálására szolgáló infrastruktúra feltételezi, hogy ha két csomag rendelkezik ugyanaz a név és verzió, ugyanaz a csomag. Adjon hozzá utótagot a verziószám végén található debian_revision részhez; válogatási okokból az utótagot ~ -vel kell kezdeni, pl. Az 1.2.3-4.1 1.2.3-4.1~johnjumper1 lesz.

A shell eszközök használata helyett használhatja az Emacs alkalmazást is. A dpkg-dev-el csomag (amely a saját upstream, mivel ez egy natív Debian csomag) a .deb fájlokat és a Debian változásnaplóinak szerkesztéséhez. Az Emacs interaktív módon vagy szkriptekkel használható.

Megjegyzések

  • Használhatja a -e kapcsolót is. fpm a vezérlőfájl megváltoztatásához: fpm -e -s deb -t deb ../old.deb. Ez megnyitja a vezérlőfájlt a szerkesztőben.
  • btw, fakeroot bash és a parancsok kiadása nem fog működni a tulajdonjoggal kapcsolatban, és a módszer hihetetlenül gyors a nagy deb fájloknál!
  • Köszönöm. Ez hasznos volt. Az dpkg-deb -R használatával a módok megmaradtak, és dpkg-deb -b visszaállította a kibontott fájlok uid:gid értékét 0:0. Nem kellett ' szüksége fakerootra (elképzelhető, hogy problémák merülhetnek fel, ha az archívumban vannak beállított {u, g} id fájlok, de ezek nem ' t az eset a helyzetemben.
  • @PSkocik Nem csak a setxid fájlok, hanem például a /etc vagy a /var amelyeknek egy adott csoporthoz kell tartozniuk.
  • Köszönöm a remek választ. Van-e mód arra, hogy az újjáépített csomag és az eredeti csomag ugyanazon md5sum legyen?

Válasz

Használhatja a fpm elemet a --after-install opció a postinst szkript helyettesítésére, így:

fpm -e --after-install ../DEBIAN/postinst.new -s deb -t deb ../old.deb 

Megjegyzések

  • Az fpm telepítése a Debian / Ubuntu rendszerre: sudo apt-get install ruby-dev build-essential; sudo gem install fpm

Válasz

Ha csak fájlokat szeretne kibontani egy .deb fi fájlból A 7-Zip kényelmes. A 7-Zip támogatja az “ar” fájlokat a “csak kicsomagoláshoz”. (Nem kell átnevezni a fájlt; a * .deb fájl “ar” néven nyílik meg, és belül az “data.tar” jelenik meg.)

Megjegyzések

  • Üdvözöljük a webhelyen, és köszönjük hozzájárulásukat.Felhívjuk figyelmét, hogy az OP külön kérte a " DEB kicsomagolását … és a DEB " újracsomagolását. Esetleg szerkesztheti a bejegyzését, hogy az adott témát is címezze.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük