Debian checkinstallはinstall = noを無視します。パッケージを自動インストールしないでビルドする方法は?


14

わかりました、これは私を困惑させる1つのことです...私はソースからパッケージを構築し、それからcheckinstall.debパッケージを生成しようとしています。.debパッケージを作成したいだけですが、インストールしたくないことに注意してください。

だから、ここに例があります-私はUbuntu 11.04にいて、最初にfehデフォルトのリポジトリからパッケージをインストールします。バージョン番号は明らかに1.3.4.dfsg.1-3です

次にfeh 、ソースからビルドしようとしています。得make渡すために、新しいを実行できるfehコマンドラインから。素晴らしい。

最後に、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 <pkg-phototools-devel@lists.alioth.debian.org>" \
  --pakdir=../.. \
  --requires=libc6,libice6,libsm6,libx11-6,libxaw7,libxext6,libxmu6,libxt6,dpkg,install-info

OK、私は--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 <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 !!!!!!!!!!

私は、いまいましいパッケージをインストールしたいしませんでした-私が使用した理由であること--install=noLOUDクラインOUT FOR !!!

そして、明らかに皮肉な試みで、ログは続きます:

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 DIDがインストールされていることは明らかです、インストールしないように私の指示の中で...

確かに、後で削除しようとすることができます:

$ 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 --purgeapt-get remove手動でインストールされた.debパッケージなので、そもそも動作しません)。そしてdpkg -r、バージョンを提供しないことに加えて(したがって、それが削除されるべきものが本当にわからない)-それは実際に血まみれの実行可能ファイルを削除しませんでした?!

そしてどのように取得する-ことができますが、誰もがここで何が起こっているかを説明checkinstallするだけの.debを生成し、同時にそれをインストールしませんか?ボーナスの質問- この方法でインストールされたの実行可能ファイルを含むすべてのファイルを削除する/usr/local/bin/方法-どうやらdpkg -r機能しないのですか?


私は困惑しています。バイナリパッケージがあるのに、なぜソースからインストールしたいのですか?
ファヒームミタ

そして、--maintainerに関するエラーをどのように修正しましたか?
アクエリアスパワー

RE:--maintainerエラーのチェックインストールソースを見てみました。問題は、引用符で囲まれていない<および>記号の結果です。簡単な答えは、シンボルを使用しないことです。より問題のある答えは、checkinstallに深刻な問題があるということです。ソース全体が散らばっていeval echo $1ます...それは実際にあるはずeval "echo '$1'"です。著者または何かと連絡を取ろうと思います。
6

回答:


13

正しい; 私は最終的に何が起こっているのかを理解したと思う-私が逃したキーラインは次のとおりです:

Installing with make install...

これはmake install、2.7ソースパッケージが実行されたことを意味します。おそらく、これらのファイルが最終的にどこに到達するかを「見る」ために、新しい.debにそれらの場所を書き込むためですか。しかし、いずれにしても、新しい2.7 .debは実際にはインストールされませんでした。そのため、で削除することができずdpkg -r、実行可能ファイルはdpkg -r

したがって、実行後にこのインストールを削除するにcheckinstallは、実際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

...そして最後に、新しく作成したパッケージを試すことができます:

$ 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

ええと....プロセスが今どのように進行するかを正しく理解したいのですが。



4

「2回」インストールできます。

  1. 作成したパッケージ経由。オフに切り替えることができます--install=no

  2. メイク経由。make(なしでinstall)を入力するだけでオフにできます

例:

  • インストールなし:

    sudo checkinstall --install=no make

  • makeによるインストール:

    sudo checkinstall --install=no make install


これが最良の答えだと思います。
jgomo3

1
「sudo checkinstall --install = no --fstrans = yes make」が機能しました。:私はこの1つでこの答えを混合unix.stackexchange.com/a/170170/156284
テオ

-1

あなたが使用しようとする必要があります:

sudo checkinstall --install=no make -n install

-1

使用:sudo checkinstall -D make -n install


答えを説明してください。
フォンブランド14年

1
make -n installmake実際にファイルをインストールすることを停止しますがcheckinstall、結果を適切に解釈しません。必要なファイルがすべて含まれていないdebファイルになります。したがって、これは機能しません。
ティムティス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.