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
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, ésdpkg-deb -b
visszaállította a kibontott fájlokuid:gid
értékét0: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.
apt install mc
) – csak nyomja meg az Enter billentyűt egy deb fájlban