좋아, 여기에 나를 혼란스럽게 하는 한 가지가 있습니다... 소스에서 패키지를 빌드한 다음 이를 사용하여 checkinstall
.deb 패키지를 생성하려고 합니다. 저는 .deb 패키지만 만들고 싶지만 만들고 싶지는 않습니다.설치하다그것.
예를 들어보겠습니다. 저는 Ubuntu 11.04를 사용하고 있으며 먼저 feh
기본 저장소에서 해당 패키지를 설치했습니다. 버전 번호는 다음과 같습니다.1.3.4.dfsg.1-3
그런 다음 빌드를 시도합니다.feh
소스에서; 을 전달해야 하며 make
new ; feh
splendid 를 명령줄에서 실행할 수 있습니다.
마지막으로 deb 패키지를 생성하기 위해 다음 명령줄을 사용합니다.
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
알겠습니다. 제가 사용했다는 점을 참고해 주세요.--install=no
거기? 그는 심지어 이렇게 man checkinstall
말했습니다.
--install 생성된 패키지의 설치를 전환합니다.
음, 다음은 checkinstall
이 명령에 대한 응답입니다.
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 ==========================
안돼오오오오오오오오오오오오오오오오오오오오오오오오오오오오오오오오 ! ! ! ! ! ! ! !
나는 이 빌어먹을 패키지를 설치하고 싶지 않습니다. 그래서 --install=no
크게 소리 지르는 것입니다!
그런 다음 분명히 비꼬려는 의도로 기록이 계속되었습니다.
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
농담하는 거겠지”참고: 이 패키지는 설치되지 않습니다.", 그렇죠, 선생님 checkinstall
? 물론입니다. 작업이 끝나면 다음과 같은 결과가 표시됩니다.
$ 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
그것이 어디서 왔는지는 확실하지 않습니다 1.10-1
(적어도 언급한 것처럼 그래야 합니까 1.3.4
?). 그러나 분명히 2.7은 설치하지 말라는 지시에도 불구하고 설치됩니다...
물론 나중에 삭제해 볼 수도 있습니다.
$ 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
...하지만 작동하지도 않습니다 dpkg --purge
( apt-get remove
수동으로 설치된 .deb 패키지이기 때문에 처음에는 작동하지 않았습니다). 버전을 제공하지 않는 것 외에도 dpkg -r
(그래서 무엇을 제거해야 하는지 잘 모르겠습니다) - 실제로 실행 파일을 제거하지 않습니까? !
하지만 여기서 무슨 일이 일어나고 있고 checkinstall
거기에 어떻게 도달 하는지 설명할 수 있는 사람이 있나요?오직동시에 설치하지 않고 .deb를 생성하시겠습니까? 보너스 질문 - 모든 파일을 삭제하는 방법,포함하다에 실행 파일 이 설치되어 있습니다. 분명히 작동하지 않기 /usr/local/bin/
때문입니까 ?dpkg -r
답변1
맞습니다. 이제 무슨 일이 일어나고 있는지 이해한 것 같습니다. 제가 놓친 핵심은 다음과 같습니다.
Installing with make install...
이는 make install
2.7 소스 패키지가 실행되었음을 의미합니다. 아마도 해당 위치가 새 .deb에 기록될 수 있도록 이러한 파일이 끝나는 위치를 "확인"하기 위한 것일까요? 그러나 어쨌든 새로운 2.7 .deb는 실제로 설치되지 않았습니다. 따라서 제거할 수 없으며 dpkg -r
.deb 이후에도 실행 파일이 여전히 존재합니다 dpkg -r
.
따라서 를 실행한 후 이 설치를 제거하려면 실제로 소스 폴더 에서 호출 checkinstall
해야 합니다 .make uninstall
feh
$ make uninstall
rm -f /usr/local/share/man/man1/feh.1 /usr/local/share/man/man1/feh-cam.1
rm -f /usr/local/share/man/man1/gen-cam-menu.1
rm -rf /usr/local/share/doc/feh
rm: cannot remove `/usr/local/share/doc/feh/TODO': Permission denied
rm: cannot remove `/usr/local/share/doc/feh/examples/keys': Permission denied
rm: cannot remove `/usr/local/share/doc/feh/examples/themes': Permission denied
rm: cannot remove `/usr/local/share/doc/feh/examples/buttons': Permission denied
rm: cannot remove `/usr/local/share/doc/feh/AUTHORS': Permission denied
rm: cannot remove `/usr/local/share/doc/feh/ChangeLog': Permission denied
rm: cannot remove `/usr/local/share/doc/feh/README': Permission denied
make: *** [uninstall] Error 1
$ sudo make uninstall
rm -f /usr/local/share/man/man1/feh.1 /usr/local/share/man/man1/feh-cam.1
rm -f /usr/local/share/man/man1/gen-cam-menu.1
rm -rf /usr/local/share/doc/feh
rm -f /usr/local/bin/feh /usr/local/bin/feh-cam /usr/local/bin/gen-cam-menu
rm -rf /usr/local/share/feh/fonts
rm -rf /usr/local/share/feh/images
...마지막으로 새로 생성된 패키지를 사용해 볼 수 있습니다.
$ sudo dpkg -i feh_2.7-tar.bz2_i386.deb
Selecting previously deselected package feh.
(Reading database ... 202165 files and directories currently installed.)
Unpacking feh (from feh_2.7-tar.bz2_i386.deb) ...
Setting up feh (2.7-tar.bz2) ...
Processing triggers for man-db ...
$ feh --version
feh version 2.7
Compile-time switches: curl xinerama
$ sudo dpkg --purge feh
(Reading database ... 202198 files and directories currently installed.)
Removing feh ...
dpkg: warning: while removing feh, directory '/usr/local/share/doc' not empty so not removed.
Processing triggers for man-db ...
$ feh --version
bash: /usr/local/bin/feh: No such file or directory
# or in new terminal
$ feh --version
The program 'feh' is currently not installed. You can install it by typing:
sudo apt-get install feh
아, 알았어...하지만 이제 프로세스가 어떻게 진행되는지 정확하게 이해했으면 좋겠어...
답변2
사람이 변해야지빠른 전송도착하다예checkinstall이 실제 파일 트리를 건드리지 않는지 확인하세요.
--fstrans=yes
답변3
"두 번" 설치할 수 있습니다.
당신이 만든 패키지를 통해. 당신은 그것을 끌 수 있습니다
--install=no
브랜드를 통해.
make
( 없이 ) 입력install
하여 끌 수 있습니다.
예:
전혀 설치되지 않음:
sudo checkinstall --install=no make
make를 통해 설치:
sudo checkinstall --install=no make install
답변4
사용: sudo checkinstall -D make -n install