Yritän asentaa Intelin OpenCL SDK: ta, mutta DEB-tiedostot ovat virheellisiä tuloksia RPM: stä (katso täällä uteliaille). Minun täytyy muokata komentoa postinst heidän toimittamassaan DEB: ssä.

Kuinka voin ottaa olemassa olevan DEB: n, purkaa sisällön (mukaan lukien ohjaustiedot) ja sitten pakata sisältö uudelleen myöhemmin uuden DEB: n tekemiseksi? Muokkaan vain tiedostoja, tiedostoja ei lisätä tai poistaa.

Kommentit

  • purkamisosio voidaan tehdä keskiyön komentajasta alkaen (apt install mc) – paina vain Enter-tiedostoa deb-tiedostossa

Vastaa

ensisijainen komento manipuloida deb-paketteja on dpkg-deb .

Paketin purkamiseksi luo tyhjennä hakemisto ja vaihda siihen ja suorita sitten dpkg-deb purkamaan sen ohjaustiedot ja pakettitiedostot. Käytä paketin uudelleen rakentamiseen dpkg-deb -b.

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

Varo, että ellei komentosarjasi ole juurtunut, tiedostot ” käyttöoikeudet ja omistajuus vioittuvat purkuvaiheessa. Yksi tapa välttää tämä on suorittaa komentosarja fakeroot . Huomaa, että sinun on suoritettava koko jakso kohdassa fakeroot, ei kukin dpkg-deb erikseen, koska se on fakeroot prosessi, joka pitää muistissa tiedostojen käyttöoikeudet, joita ei voida luoda sellaisenaan.

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

Sen sijaan, että sekaisin oikeuksilla voit pitää tietoarkiston ehjänä ja muokata vain ohjausarkistoa. dpkg-deb ei tarjoa tapaa tehdä sitä. Onneksi deb-paketit ovat vakiomuodossa: ne ”re ar -arkistot. Joten voit käyttää ar purkaa ohjausarkisto, muokkaa sen tiedostoja ja korvaa ohjausarkisto uudella versiolla ar.

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 

Sinun tulisi lisätä muutosloki ja muuttaa versionumero jos muokkaat jotain paketista. Debian-pakettien käsittelyyn tarkoitettu infrastruktuuri olettaa, että jos kahdella paketilla on samalla nimellä ja versiolla, ne ovat sama paketti. Lisää loppuliite debian_revision -osaan versionumeron loppuun; lajittelun vuoksi loppuliitteen tulisi alkaa ~, esim. 1.2.3-4.1 tulee 1.2.3-4.1~johnjumper1.

Shell-työkalujen käyttämisen sijaan voit käyttää Emacsia. Paketti dpkg-dev-el -paketti (joka on oma ylävirta, koska tämä on natiivi Debian-paketti) sisältää tilat muokkaamaan .deb -tiedostoja ja muokata Debianin muutoslokeja. Emacs-tiedostoja voidaan käyttää vuorovaikutteisesti tai komentosarjojen avulla.

Kommentit

  • Voit käyttää myös kytkintä -e. fpm ohjaustiedoston muuttamiseksi: fpm -e -s deb -t deb ../old.deb. Tämä avaa ohjaustiedoston editorissasi.
  • btw, fakeroot bash ja yritä antaa komentoja ei toimi omistajuuden suhteen, ja ar -menetelmä on uskomattoman nopea isoille deb-tiedostoille!
  • Kiitos. Tämä oli hyödyllistä. Käyttämällä dpkg-deb -R -tiloja säilytettiin ja dpkg-deb -b palautettiin purettujen tiedostojen uid:gid -asetukseksi 0:0. Eikä ' tarvinnut fakerootia (luulen, että saattaa olla ongelmia, jos arkistossa oli asetettuja {u, g} id-tiedostoja, mutta niitä ei ollut ' t tapaus tilanteessani.
  • @PSkocik Ei vain setxid-tiedostot, myös tiedostot ja hakemistot /etc tai /var joiden on kuuluttava tiettyyn ryhmään.
  • Kiitos erinomaisesta vastauksesta. Onko tapa varmistaa, että uudelleenrakennetulla paketilla ja alkuperäisellä paketilla on sama md5sum?

Vastaus

Voit käyttää fpm --after-install vaihtoehto korvata komentosarja postinst seuraavasti:

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

kommentit

  • fpm: n asentaminen Debianiin / Ubuntuun: sudo apt-get install ruby-dev build-essential; sudo gem install fpm

Vastaa

Jos haluat purkaa tiedostoja vain .deb fi -palvelusta 7-vetoketju on kätevä. 7-Zip tukee ar-tiedostoja vain purkamiseen. (Tiedostoa ei tarvitse nimetä uudelleen; se avaa * .deb nimellä ”ar” ja näyttää ”data.tar” sisällä.)

Kommentit

  • Tervetuloa sivustolle ja kiitos panoksestasi.Huomaa, että OP pyysi erityisesti " purkaa DEB … ja pakkaa DEB uudelleen ". Ehkä voit muokata viestiäsi myös kyseisen aiheen mukaan.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *