Oke, ini satu hal yang membingungkan saya ... Saya mencoba membuat paket dari sumber, dan kemudian gunakan checkinstall
untuk menghasilkan paket .deb. Perhatikan bahwa saya hanya ingin membuat paket .deb, tetapi saya TIDAK ingin menginstalnya .
Jadi, inilah contohnya - Saya menggunakan Ubuntu 11.04, dan pertama saya menginstal feh
paketnya dari repositori default; yang memiliki nomor versi tampaknya menjadi 1.3.4.dfsg.1-3
Lalu saya mencoba membangun feh
dari sumber ; harus make
lulus, dan dapat menjalankan yang baru feh
dari baris perintah; megah.
Akhirnya, untuk membuat paket deb, saya menggunakan baris perintah berikut:
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, perhatikan bahwa saya pernah menggunakannya di --install=no
sana? Bahkan man checkinstall
mengatakan:
--instal Beralih penginstalan paket yang dibuat.
Nah, inilah yang checkinstall
dijawab oleh perintah ini :
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 ==========================
NOOOOOOOOOOOOOOOOO !!!!!!!!!!
Saya TIDAK ingin paket sialan INSTALL - ITULAH MENGAPA SAYA DIGUNAKAN --install=no
UNTUK CRYIN OUT LOUD !!!
Dan kemudian, tampaknya dalam upaya untuk menjadi sarkastik, log berlanjut:
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
Anda pasti bercanda dengan " CATATAN: Paket ini tidak akan diinstal ", benar, Pak checkinstall
? Tentu Anda; setelah ini selesai, perhatikan apa yang saya dapatkan:
$ 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
Tidak yakin dari mana 1.10-1
datangnya (seharusnya setidaknya 1.3.4
, seperti di atas?) - tetapi sangat jelas bahwa 2,7 DID bisa diinstal, DI LUAR instruksi saya BUKAN untuk menginstal ...
Tentunya, saya dapat mencoba menghapus setelah itu:
$ 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
... tetapi bahkan tidak dpkg --purge
berfungsi ( apt-get remove
tidak akan bekerja sejak awal, karena ini adalah paket .deb yang diinstal secara manual). Dan selain dpkg -r
tidak memberikan versi (jadi saya tidak benar-benar yakin apa yang seharusnya dihapus) - itu sebenarnya TIDAK menghapus executable berdarah ?!
Tapi bisa ada yang menjelaskan apa yang terjadi di sini - dan bagaimana untuk mendapatkan checkinstall
ke hanya menghasilkan .deb, dan tidak menginstalnya pada saat yang sama? Pertanyaan bonus - cara menghapus SEMUA file, termasuk file yang dapat dieksekusi /usr/local/bin/
, yang diinstal dengan cara ini - karena tampaknya dpkg -r
tidak berfungsi?
sumber
eval echo $1
... Itu seharusnya benar-benareval "echo '$1'"
. Saya kira saya akan mencoba untuk menghubungi penulis atau sesuatu.Jawaban:
Baik; Saya pikir saya akhirnya mengerti apa yang terjadi - garis kunci yang saya lewatkan adalah:
Ini berarti bahwa
make install
dari paket sumber 2.7 dijalankan - mungkin untuk "melihat" di mana file-file itu akhirnya akan berakhir, sehingga untuk menulis lokasi-lokasi tersebut di .deb yang baru? Tetapi bagaimanapun juga, file 2.7 .deb yang baru memang tidak dapat diinstal - dan itulah mengapa tidak dapat dihapus dengandpkg -r
, dan file executable masih bertahan bahkan setelahnyadpkg -r
.Jadi untuk menghapus instalasi ini setelah menjalankan
checkinstall
, seseorang harus benar-benar memanggilmake uninstall
darifeh
folder sumber:... dan akhirnya saya dapat mencoba paket yang baru dibuat:
Oh well .... saya harap saya mengerti dengan benar bagaimana prosesnya sekarang, meskipun ..
sumber
Orang harus mengubah fstrans ke yes untuk memastikan checkinstall tidak akan menyentuh filetree yang sebenarnya
sumber
--install=no
-sama dengan dan file-file telah diinstal tetapidpkg
tidak diperbarui.Anda dapat menginstal "dua kali":
Melalui paket yang Anda buat. Anda dapat mematikannya dengan
--install=no
Melalui merek. Anda dapat mematikannya hanya dengan mengetik
make
(tanpainstall
)Contoh:
Tidak ada instalasi sama sekali:
sudo checkinstall --install=no make
Instalasi melalui make:
sudo checkinstall --install=no make install
sumber
Anda harus mencoba menggunakan:
sumber
Gunakan: sudo checkinstall -D make -n install
sumber
make -n install
memang berhentimake
benar-benar menginstal file, tetapicheckinstall
tidak benar menafsirkan hasil. Anda berakhir dengan file deb yang tidak mengandung semua file yang Anda butuhkan. Jadi, ini tidak berhasil.