Pokouším se nainstalovat OpenCL SDK společnosti Intel, ale soubory DEB jsou buggy převody z RPM (viz zde pro zvědavé). Potřebuji upravit skript postinst v DEB, které poskytují.

Jak mohu vzít existující DEB, extrahovat obsah (včetně kontrolních informací), pak později přebalit obsah a vytvořit nový DEB? Budu upravovat pouze soubory, žádné soubory nebudou přidány ani odstraněny.

Komentáře

  • rozbalovací část lze provést od půlnočního velitele (apt install mc) – stačí stisknout klávesu Enter na deb souboru

Odpovědět

The primární příkaz pro manipulaci s balíčky deb je dpkg-deb .

Chcete-li balíček rozbalit, vytvořte vyprázdněte adresář a přepněte se do něj, poté spusťte dpkg-deb a extrahujte jeho řídicí informace a soubory balíčku. K opětovné sestavení balíčku použijte dpkg-deb -b.

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

Upozorňujeme, že pokud váš skript není spuštěn jako root, soubory “ oprávnění a vlastnictví budou ve fázi těžby poškozena. Jedním ze způsobů, jak tomu zabránit, je spuštění skriptu pod fakeroot . Všimněte si, že musíte spustit celou sekvenci pod fakeroot, ne každý dpkg-deb samostatně, protože to je fakeroot proces, který uchovává paměť oprávnění souborů, které“ nelze vytvořit tak, jak jsou.

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

Spíše než nepořádek s oprávněními můžete zachovat neporušený datový archiv a upravit pouze kontrolní archiv. dpkg-deb neposkytuje způsob, jak toho dosáhnout. Naštěstí jsou balíčky deb ve standardním formátu: archivují je „re ar . Můžete tedy použít ar rozbalte kontrolní archiv, upravte jeho soubory a znovu použijte ar k nahrazení řídicího archivu novou verzí.

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 

Měli byste přidat záznam změn a změnit číslo verze , pokud v balíčku něco upravíte. Infrastruktura pro manipulaci s balíčky Debianu předpokládá, že pokud mají dva balíčky stejný název a verzi, jsou to stejný balíček. Přidejte příponu do části debian_revision na konec čísla verze; z důvodů řazení by přípona měla začínat ~, např. Z 1.2.3-4.1 se stane 1.2.3-4.1~johnjumper1.

Místo použití nástrojů prostředí můžete použít Emacs. Balíček dpkg-dev-el (což je jeho vlastní upstream, protože se jedná o nativní balíček Debianu) obsahuje režimy pro úpravy .deb soubory a úpravy protokolů změn Debianu. Emacs lze používat interaktivně nebo skriptovaně.

Komentáře

  • Můžete také použít -e přepínač fpm pro změnu kontrolního souboru: fpm -e -s deb -t deb ../old.deb. Tím se otevře kontrolní soubor ve vašem editoru.
  • btw, fakeroot bash a pokusí se vydat příkazy nebudou ohledně vlastnictví fungovat a ar Metoda je neuvěřitelně rychlá pro velké deb soubory!
  • Díky. To bylo užitečné. Pomocí dpkg-deb -R byly režimy zachovány a dpkg-deb -b resetovat uid:gid extrahovaných souborů na 0:0. Nepotřeboval jsem ' fakeroot (domnívám se, že by mohly nastat problémy, kdyby byly v archivu nastaveny {u, g} id soubory, ale to nebylo ' t případ v mé situaci.
  • @PSkocik Nejen setxid soubory, také např. soubory a adresáře pod /etc nebo /var které musí patřit do konkrétní skupiny.
  • Děkujeme za skvělou odpověď. Existuje způsob, jak zajistit, aby nově vytvořený balíček vs původní balíček měl stejný soubor md5sum?

Odpověď

Pomocí fpm můžete použít --after-install možnost nahradit skript postinst takto:

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

komentáře

  • Instalace fpm na Debian / Ubuntu: sudo apt-get install ruby-dev build-essential; sudo gem install fpm

Odpovědět

Pokud chcete pouze extrahovat soubory z .deb fi le, 7-Zip je pohodlný. 7-Zip podporuje soubory „ar“ pro „pouze rozbalení“. (Není třeba soubor přejmenovávat; otevře * .deb jako „ar“ a uvnitř zobrazí „data.tar“.)

Komentáře

  • Vítejte na stránkách a děkujeme za váš příspěvek.Upozorňujeme, že OP výslovně požadoval " rozbalení DEB … a opětovné zabalení DEB ". Možná můžete svůj příspěvek upravit také tak, aby oslovoval tento předmět.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *