[#] "Przepakowanie" pakietu .deb - skrypty .sh

( Ostatnio zmieniony pon., 09/06/2008 - 19:53 )
 

Problem

Czasem zdarza się, że podczas kompilacji programu ze źródeł, wykonując czynności:

./configure
make
sudo checkinstall

otrzymujemy błąd podobny do:

...
Building Debian package...OK
Installing Debian package... FAILED!

*** Failed to install the package
Do you want to see the log file?  [y]:
...


Rozpakowanie pakietu zastępującego nautilus-actions ...
dpkg: błąd przetwarzania /home/user/nautilus-actions-1.4.1/nautilus-actions_1.4.1-1_i386.deb (--install):
 próba nadpisania `/usr/bin/gcc', który istnieje także w pakiecie gcc
Wystąpiły błędy podczas przetwarzania:
 /home/user/nautilus-actions-1.4.1/nautilus-actions_1.4.1-1_i386.deb

Czyżby jakiś problem programu „checkinstall“ ? Nie wiem, ale aby to obejść, należy przepakować nasz pakiet i podmienić / naprawić to, co podczas instalacji powodowało problemy. W naszym przypadku, malezy usunąć niepotrzebne dowiązanie do /usr/bin/gcc w stworzonej paczce .deb

Przepakowywanie

Jeśli potrzebne będzie nam kiedykolwiek przepakowanie paczki .deb w calach ot choćby dodania spolszczenia do naszego pakieciku (lub nie naszego), lub zmodyfikowanie np. zależności pakietu, wówczas wystarczy że wykonamy poniższe porady:

  1. Tworzymy katalog tymczasowy „REPACK-DEB“ – nazwa dowolna
  2. Umieszczamy w nim oba skrypty: unpack-deb.shpack-deb.sh oraz nasz pakiet.deb
  3. Uruchamiamy konsolę i przechodzimy do katalogu „REPACK-DEB“ (lub innego jak go tam nazwałeś)
  4. Uruchamiamy skrypt podając jako parametr nazwę paczki .deb (utworzony zostanie katalog o nazwie takiej jak nasz pakiet): unpack-deb.sh pakiet.deb
  5. Modyfikujemy co nam w duszy śpiewa – to już według potrzeb (rzuć okiem na plik control i linię „Depend“ wpis, np.: libdupa11…na „libmiodzio22 (>= 20.1)“)
  6. Zastosowujemy zmiany na pakiecie .deb (budujemy pakiet): pack-deb.sh pakiet.deb

Przydatne informacje

Skrypty instalacyjne i deinstalacyjne, to skrypty automatycznie uruchamiane przed instalacją i po instalacji pakietu. Wraz z plikiem o nazwie control wchodzą w skład sekcji „control“ każdego pakietu .deb.

preinst – Ten skrypt jest wykonywany zanim pakiet zostanie rozpakowany z pliku .deb. Wiele skryptów „preinst” zatrzymuje działanie usług świadczonych przez pakiety, których nową wersję właśnie instalujemy, aż do czasu zakończenia procesu instalacji lub aktualizacji (tzn. do chwili bezbłędnego wykonania skryptu „postinst”).

postinst – Ten skrypt z zasady wykonuje wszelkie operacje konfiguracyjne wymagane do prawidłowej pracy pakietu po jego rozpakowaniu z pliku .deb. Skrypty „postinst” często wymagają wprowadzenia pewnych informacji przez użytkownika i/lub ostrzegają go, że w wypadku akceptacji wartości domyślnych powinien pamiętać o późniejszej rekonfiguracji pakietu w miarę potrzeb. Wiele ze skryptów „postinst” wykonuje następnie wszelkie polecenia konieczne do uruchomienia lub ponownego uruchomienia danej usługi po instalacji lub aktualizacji pakietu.

prerm – Z reguły, skrypt ten zatrzymuje wszystkie demony związane z pakietem, a jest wykonywany przed usunięciem plików, które zawierał ten pakiet.

postrm – Ten skrypt z reguły modyfikuje dowiązania lub inne pliki związane z pakietem i/lub usuwa pliki przezeń utworzone.

Skrypty

unpack-deb.sh

#!/bin/sh

if [ "${1##*.}" = "deb" ]; then
    echo "Tworzę katalogi tymczasowe"
    KATALOG=`echo "$1" | sed 's/\.[^.]*$//'`

    echo "Rozpakowuję data.tar.gz"
    dpkg-deb -x ${1} $KATALOG/

    echo "Rozpakowuję control.tar.gz"
    dpkg-deb -e ${1} $KATALOG/DEBIAN

fi

pack-deb.sh

#!/bin/sh

if [ "${1##*.}" = "deb" ]; then
    KATALOG=`echo "$1" | sed 's/\.[^.]*$//'`
    echo "Generuję sumy kontrolne"
    find $KATALOG -type f | grep -v "/DEBIAN" | xargs md5sum | sed s#$KATALOG/## > $KATALOG/DEBIAN/md5sums
    echo "Pakuję zmodyfikowany pakiet"
    dpkg --build $KATALOG
    rm -r $KATALOG
fi
Twoja ocena: Brak Średnio: 5 (3 głosy)

Dodaj nową odpowiedź

Informacja:

Osoby zamieszczające wypowiedzi naruszające prawo lub prawem chronione dobra osób trzecich, mogą ponieść z tego tytułu odpowiedzialność karną lub cywilną. Upewnij się, że twoja wypowiedź nie godzi w niczyje mienie.

  • Internal paths in single or double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or path. Paths to files in single or double quotes, written as "files:somefile.ext", for example, are replaced with the appropriate URL that can be used to download the file.
  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • Dozwolone znaczniki HTML: <strong> <blockquote> <code>
  • Znaki końca linii i akapitu dodawane są automatycznie.

Więcej informacji na temat formatowania

Łapirobot
Proszę odpowiedzieć
g
m
K
j
n
q
S
C
M
7
Enter the code without spaces and pay attention to upper/lower case.