Ok, jedna rzecz mnie zastanawia ... Próbuję zbudować pakiet ze źródła, a następnie użyć go checkinstall
do wygenerowania pakietu .deb. Zauważ, że chcę po prostu utworzyć pakiet .deb, ale NIE chcę go instalować .
Oto przykład - korzystam z Ubuntu 11.04 i najpierw instaluję feh
pakiet z domyślnych repozytoriów; który ma numer wersji podobno 1.3.4.dfsg.1-3
Potem próbuję zbudować feh
ze źródła ; mam make
do przekazania, i można uruchomić nowy feh
z linii poleceń; wspaniały.
Wreszcie, aby utworzyć pakiet deb, używam następującego wiersza polecenia:
sudo checkinstall -D -y \
--install=no \
--fstrans=no \
--reset-uids=yes \
--pkgname=feh \
--pkgversion=2.7 \
--pkgrelease="tar.bz2" \
--arch=i386 \
--pkglicense=GPL \
--maintainer="Debian PhotoTools Maintainers <[email protected]>" \
--pakdir=../.. \
--requires=libc6,libice6,libsm6,libx11-6,libxaw7,libxext6,libxmu6,libxt6,dpkg,install-info
OK, zauważyłeś, że już --install=no
tam byłem ? man checkinstall
Mówi nawet :
--install Przełącz instalację utworzonego pakietu.
Oto checkinstall
odpowiedź na to polecenie:
checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran
This software is released under the GNU GPL.
/usr/bin/checkinstall: eval: line 598: syntax error near unexpected token `newline'
/usr/bin/checkinstall: eval: line 598: `echo Debian PhotoTools Maintainers <[email protected]>'
The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs? [y]: y
Preparing package documentation...OK
*****************************************
**** Debian package creation selected ***
*****************************************
This package will be built according to these values:
0 - Maintainer: [ root@mypc ]
1 - Summary: [ Package created with checkinstall 1.6.2 ]
2 - Name: [ feh ]
3 - Version: [ 2.7 ]
4 - Release: [ tar.bz2 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ i386 ]
8 - Source location: [ feh-2.7 ]
9 - Alternate source location: [ ]
10 - Requires: [ libc6,libice6,libsm6,libx11-6,libxaw7,libxext6,libxmu6,libxt6,dpkg,install-info ]
11 - Provides: [ feh ]
12 - Conflicts: [ ]
13 - Replaces: [ ]
Enter a number to change any of them or press ENTER to continue:
Installing with make install...
========================= Installation results ===========================
installing manuals to /usr/local/share/man
installing docs to /usr/local/share/doc/feh
installing executables to /usr/local/bin
installing fonts to /usr/local/share/feh/fonts
installing images to /usr/local/share/feh/images
installing examples to /usr/local/share/doc/feh/examples
======================== Installation successful ==========================
NIEEEEEEEEEEEEEEEEEE !!!!!!!!!!
NIE chciałem, aby ta cholerna paczka ZAINSTALOWAŁA - TO DLACZEGO WYKORZYSTALIŁEM --install=no
POKRYĆ GŁOS !!!
A potem, najwyraźniej próbując być sarkastycznym, dziennik kontynuuje:
Copying documentation directory...
./
./TODO
./AUTHORS
./COPYING
./ChangeLog
./README
Copying files to the temporary directory...OK
Stripping ELF binaries and libraries...OK
Compressing man pages...OK
Building file list...OK
Building Debian package...OK
NOTE: The package will not be installed
Pewnie żartujesz z tego „ UWAGA: Pakiet nie zostanie zainstalowany ”, prawda, panie checkinstall
? Pewnie, że jesteś; po zakończeniu zanotuj, co otrzymuję:
$ apt-cache show feh | grep Version
Version: 1.10-1
$ feh --version
feh version 2.7
Compile-time switches: curl xinerama
$ which feh
/usr/local/bin/feh
Nie jestem pewien, skąd to się 1.10-1
wzięło (powinno być przynajmniej 1.3.4
tak jak powyżej?) - ale to cholernie oczywiste, że zainstalowano wersję 2.7 DID, pomimo mojej instrukcji NIE instalować ...
Z pewnością mogę później spróbować usunąć:
$ sudo dpkg -r feh
(Reading database ... 202193 files and directories currently installed.)
Removing feh ...
$ sudo dpkg --purge feh
(Reading database ... 202163 files and directories currently installed.)
Removing feh ...
Purging configuration files for feh ...
$ feh --version
feh version 2.7
Compile-time switches: curl xinerama
$ which feh
/usr/local/bin/feh
... ale nawet nie dpkg --purge
działa ( apt-get remove
na początku nie działa, ponieważ jest to ręcznie zainstalowany pakiet .deb). A poza tym, że dpkg -r
nie podałem wersji (więc nie jestem do końca pewien, co powinien był zostać usunięty) - w rzeczywistości NIE usunął cholernego pliku wykonywalnego?!
Ale może ktoś wyjaśnić, co dzieje się tutaj - i jak dostać checkinstall
się tylko wygenerować .deb, a nie zainstalować go w tym samym czasie? Dodatkowe pytanie - jak usunąć WSZYSTKIE pliki, w tym pliki wykonywalne /usr/local/bin/
, które zostały zainstalowane w ten sposób - skoro najwyraźniej dpkg -r
nie działa?
źródło
eval echo $1
… Powinno byćeval "echo '$1'"
. Myślę, że postaram się skontaktować z autorem lub czymś takim.Odpowiedzi:
Dobrze; Myślę, że w końcu zrozumiałem, co się dzieje - kluczową kwestią, którą przegapiłem, jest:
Oznacza to, że
make install
pakiet źródłowy 2.7 został uruchomiony - prawdopodobnie w celu „zobaczenia”, gdzie ostatecznie te pliki się znajdą, aby zapisać te lokalizacje w nowym .deb? Ale w każdym razie nowy 2.7 .eb rzeczywiście nie został zainstalowany - i dlatego nie można go było usunąćdpkg -r
, a plik wykonywalny wciąż pozostawał w tyledpkg -r
.Tak aby usunąć tę instalację po uruchomieniu
checkinstall
, należy faktycznie zadzwonićmake uninstall
zfeh
folderu źródłowego:... i wreszcie mogę wypróbować nowo utworzony pakiet:
No cóż ... mam nadzieję, że dobrze zrozumiałem, jak przebiega teraz ten proces ...
źródło
Należy zmienić fstrans na yes, aby checkinstall nie dotknął prawdziwego pliku
źródło
--install=no
i pliki zostały zainstalowane, aledpkg
nie zostały zaktualizowane.Możesz zainstalować „dwa razy”:
Za pośrednictwem pakietu, który utworzyłeś. Możesz to wyłączyć
--install=no
Poprzez markę. Możesz go wyłączyć, po prostu wpisując
make
(bezinstall
)Przykłady:
Brak instalacji:
sudo checkinstall --install=no make
Instalacja przez markę:
sudo checkinstall --install=no make install
źródło
Powinieneś spróbować użyć:
źródło
Użyj: sudo checkinstall -D make -n install
źródło
make -n install
przestajemake
instalować pliki, alecheckinstall
nie interpretuje poprawnie wyników. Ostatecznie plik deb nie zawiera wszystkich potrzebnych plików. To nie działa.