Debian checkinstall, install = no; nasıl bir paket kurmak, ama bir paketi otomatik olarak yüklemek DEĞİLDİR?


14

Tamam, işte beni şaşırtan bir şey var ... Kaynaktan bir paket oluşturmaya çalışıyorum ve sonra checkinstallbir .deb paketi oluşturmak için kullanıyorum . Sadece .deb paketini oluşturmak istiyorum, ancak yüklemek istemiyorum.

İşte bir örnek - Ubuntu 11.04 kullanıyorum ve önce fehpaketini varsayılan depolardan yüklüyorum; 1.3.4.dfsg.1-3 olan bir sürüm numarası olan

Sonra feh kaynağından inşa etmeye çalışıyorum ; got makegeçmek ve yeni çalıştırabilir fehkomut satırından; görkemli.

Son olarak, bir deb paketi oluşturmak için aşağıdaki komut satırını kullanıyorum:

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

Tamam, --install=noorada kullandığımı fark ettin mi? Hatta man checkinstalldiyor ki:

--install Oluşturulan paketin kurulumunu aç / kapat.

Bu checkinstallkomutun cevabı şu:

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 !!!!!!!!!!

Lanet paketi --install=noKURMAK istemiyordum - BU NEDEN CRYIN OUT LOUD İÇİN KULLANILDI !

Ve sonra, görünüşe göre alaycı olma girişiminde, günlük devam ediyor:

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

Şunu şaka yapıyor olmalısınız " NOT: Paket kurulmayacak ", değil checkinstallmi Bay ? Tabii ki; Bu yapıldıktan sonra ne elde ettiğime dikkat edin:

$ 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

Nereden 1.10-1geldiğinden emin değilim (en azından 1.3.4yukarıdaki gibi olmalı ?) - ama 2.7 DID'nin kurulacağı belli değil, kurulumumun DEĞİLDİR ...

Şüphesiz, daha sonra kaldırmayı deneyebilirim:

$ 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

... ancak işe yaramaz dpkg --purge( apt-get removeelle yüklenen bir .deb paketi olduğu için başlamak işe yaramaz). Ve dpkg -rbir sürüm vermemenin yanı sıra (bu yüzden ne kaldırılmış olması gerektiğinden emin değilim) - aslında kanlı yürütülebilir kaldırmadınız mı ?!

Ve nasıl elde etmek - Ama kutu kimse burada neler olduğunu açıklamak checkinstalliçin sadece .deb oluşturmak ve aynı anda kurmak DEĞİL? Bonus soru - Bu şekilde yüklenen yürütülebilir dosyalar da dahil olmak üzere TÜM dosyaları nasıl kaldırırım /usr/local/bin/- görünüşe göre dpkg -rçalışmıyor?


Şaşırdım. İkili paketiniz varsa neden kaynaktan yüklemek istiyorsunuz?
Faheem Mitha

ve --maintainer ile ilgili hatayı nasıl düzelttiniz?
Kova Gücü

Ben checkinstall kaynakları RE bir göz attım: --maintainer hatası. Sorun, sıralanmamış <ve> simgelerinin sonucudur. Yani kolay cevap: sembol kullanmayın. Daha problemli cevap, checkinstall ile ilgili ciddi bir sorun olmasıdır. Tüm kaynak eval echo $1... ile doludur eval "echo '$1'". Sanırım yazar ya da başka bir şeyle iletişime geçmeye çalışacağım.
Altı

Yanıtlar:


13

Sağ; Sanırım nihayet ne olduğunu anladım - kaçırdığım anahtar satır:

Installing with make install...

Bu make install, 2.7 kaynak paketinin çalıştırıldığı anlamına gelir - muhtemelen bu dosyaların sonunda nerede görüneceğini "görmek" için, bu konumları yeni .deb? Ancak her durumda, yeni 2.7 .deb gerçekten yüklenmedi - ve bu yüzden kaldırılamadı dpkg -rve yürütülebilir dosya hala devam ediyordu dpkg -r.

Bu yüklemeyi çalıştırdıktan sonra kaldırmak için, kaynak klasörden checkinstallçağrı yapmanız gerekir :make uninstallfeh

$ 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

... ve son olarak yeni oluşturulan paketi deneyebilirim:

$ 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

Peki .... umarım sürecin şu an nasıl gittiğini anladım ..


6

Checkinstall uygulamasının gerçek dosyaya dokunmamasını sağlamak için fstrans'ı evet olarak değiştirmelisiniz

--fstrans=yes

1
Bu anahtarı birlikte kullandım --install=nove dosyalar yüklendi, ancak dpkggüncellenmedi.
Antonios Hadjigeorgalis

4

"İki kez" kurabilirsiniz:

  1. Oluşturduğunuz paket üzerinden. Tarafından kapatabilirsiniz--install=no

  2. Marka ile. Yazarak make(olmadan install) kapatabilirsiniz

Örnekler:

  • Hiç kurulum yok:

    sudo checkinstall --install=no make

  • Marka ile bir kurulum:

    sudo checkinstall --install=no make install


Bence bu en iyi cevap.
jgomo3

1
"sudo checkinstall --install = no --fstrans = yes make" benim için çalıştı. Bu cevabı bununla karıştırdım: unix.stackexchange.com/a/170170/156284
Teo

-1

Kullanmaya çalışmalısınız:

sudo checkinstall --install=no make -n install

-1

Kullanın: sudo checkinstall -D make -n install


Lütfen cevabınızı açıklayınız.
vonbrand

1
make -n installmakedosyaları gerçekten yüklemeyi durdurur , ancak checkinstallsonuçları düzgün şekilde yorumlamaz. Sonunda ihtiyacınız olan tüm dosyaları içermeyen bir deb dosyası ile sonuçlanırsınız. Yani, bu işe yaramıyor.
Tim Tisdall
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.