Ok, đây là một điều khiến tôi bối rối ... Tôi đang cố gắng xây dựng một gói từ nguồn, và sau đó sử dụng checkinstall
để tạo gói .deb. Lưu ý rằng tôi chỉ muốn tạo gói .deb, nhưng tôi KHÔNG muốn cài đặt nó.
Vì vậy, đây là một ví dụ - Tôi đang dùng Ubuntu 11.04 và đầu tiên tôi cài đặt feh
gói đó từ kho lưu trữ mặc định; có số phiên bản rõ ràng là 1.3.4.dfsg.1-3
Sau đó, tôi đang cố gắng xây dựng feh
từ nguồn ; có make
để vượt qua, và có thể chạy mới feh
từ dòng lệnh; lộng lẫy.
Cuối cùng, để tạo gói deb, tôi sử dụng dòng lệnh sau:
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 <pkg-phototools-devel@lists.alioth.debian.org>" \
--pakdir=../.. \
--requires=libc6,libice6,libsm6,libx11-6,libxaw7,libxext6,libxmu6,libxt6,dpkg,install-info
OK, lưu ý rằng tôi đã sử dụng --install=no
ở đó? Thậm chí man checkinstall
nói:
--install Toggle cài đặt gói đã tạo.
Vâng, đây là những gì checkinstall
lệnh này trả lời:
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 <pkg-phototools-devel@lists.alioth.debian.org>'
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 ==========================
NOOOOOOOOOOOOOOOOO !!!!!!!!!!
Tôi KHÔNG muốn gói chết tiệt CÀI ĐẶT - ĐÓ LÀ TẠI SAO TÔI SỬ DỤNG --install=no
CHO CRYIN RA MẮT !!!
Và sau đó, rõ ràng là trong một nỗ lực để mỉa mai, nhật ký tiếp tục:
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
Bạn phải đùa với " LƯU Ý: Gói này sẽ không được cài đặt ", phải không, thưa ông checkinstall
? Chắc chắn là bạn; sau khi hoàn thành, lưu ý những gì tôi nhận được:
$ 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
Không chắc chắn nó 1.10-1
đến từ đâu (ít nhất 1.3.4
là như vậy, như trên?) - nhưng rõ ràng là 2.7 DID đã được cài đặt, IN SPITE của hướng dẫn của tôi KHÔNG cài đặt ...
Chắc chắn, tôi có thể cố gắng loại bỏ sau đó:
$ 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
... nhưng thậm chí không dpkg --purge
hoạt động ( apt-get remove
sẽ không hoạt động để bắt đầu, vì đó là gói .deb được cài đặt thủ công). Và bên cạnh việc dpkg -r
không đưa ra một phiên bản (vì vậy tôi không thực sự chắc chắn đó là cái gì nên được gỡ bỏ) - thực tế nó đã không loại bỏ được bản thực thi đẫm máu?!
Nhưng bất cứ ai cũng có thể giải thích những gì đang diễn ra ở đây - và làm thế nào checkinstall
để chỉ tạo ra một .deb và KHÔNG cài đặt nó cùng một lúc? Câu hỏi bổ sung - làm thế nào để loại bỏ TẤT CẢ các tệp, bao gồm các tệp thực thi /usr/local/bin/
, được cài đặt theo cách này - vì rõ ràng là dpkg -r
không hoạt động?
eval echo $1
... Nó thực sự nên được eval "echo '$1'"
. Tôi đoán tôi sẽ cố gắng liên lạc với tác giả hoặc một cái gì đó.