我有一个我已经使用checkinstall了一段时间的包,我想自动化它(通过命令行传递值而不是键入选择,粘贴值等等)
我不确定这是否是一个checkinstall错误,但是如何通过命令行--requires选项包含多个包.如果我包括最小版本的包(例如--requires="libvte9 (>= 0.28.2)")或多个包(例如--requires "libvte9, libc6"),它似乎是barf
有没有人用多个包的命令行参数获得更好的成功?我做错了什么,或者这是一个错误.
注意:如果我运行脚本,并选择requires选项(10),并使用多个软件包和最低版本粘贴我的整行(例如libvte9 (>= 0.28.2), libc6 (>= 2.13),它工作正常,它似乎在命令行上它有问题.这也是使用该-D选项构建debian包.
Checkinstall无法生成包含以下错误的Ruby包.
# checkinstall -D --install=no --pakdir=/home/<username>/???????\ ????/
<...>
installing binary commands: /usr/local/bin
/home/<username>/??????? ????/ruby-1.9.2-p180/lib/fileutils.rb:854:in `utime': No such file or directory - /usr/local/bin/ruby (Errno::ENOENT)
from /home/<username>/??????? ????/ruby-1.9.2-p180/lib/fileutils.rb:854:in `block in install'
from /home/<username>/??????? ????/ruby-1.9.2-p180/lib/fileutils.rb:1423:in `block in fu_each_src_dest'
from /home/<username>/??????? ????/ruby-1.9.2-p180/lib/fileutils.rb:1437:in `fu_each_src_dest0'
from /home/<username>/??????? ????/ruby-1.9.2-p180/lib/fileutils.rb:1421:in `fu_each_src_dest'
from /home/<username>/??????? ????/ruby-1.9.2-p180/lib/fileutils.rb:850:in `install'
from ./tool/rbinstall.rb:154:in `install'
from ./tool/rbinstall.rb:307:in `block in '
from ./tool/rbinstall.rb:542:in `call'
from ./tool/rbinstall.rb:542:in `block (2 levels) in '
from ./tool/rbinstall.rb:539:in `each'
from ./tool/rbinstall.rb:539:in `block in '
from ./tool/rbinstall.rb:535:in `each'
from ./tool/rbinstall.rb:535:in `'
make: … 我有一个简单的命令行程序,字面上包含一个python脚本和一些帮助shell脚本.我想学习打包这个程序,虽然它很简单.
从我收集的内容中,我进入了configure/make/install路由.由于我没有任何配置或任何事情要做,我简单地创建了一个Makefile,只有一个安装部分:
install:
cp ./myProgram /usr/bin/my-program
chown root:root /usr/bin/my-program
chmod 777 /usr/bin/my-program
cp -r ./ProgramResources /usr/lib/my-program
chown -hR root:root /usr/lib/my-program
chmod -R 777 /usr/lib/my-program
Run Code Online (Sandbox Code Playgroud)
此时,我的程序安装并运行sudo make install正常运行.
然后,我尝试使用checkinstall创建一个deb文件,如下所示:
sudo checkinstall sudo make install
Run Code Online (Sandbox Code Playgroud)
它似乎超过了安装部分,因为它报告它成功,但随后失败:
======================== Installation successful ==========================
cp: cannot stat `//var/tmp/tmp.jKCmESc0v7/newfiles.tmp': No such file or directory
Copying files to the temporary directory...OK
Stripping ELF binaries and libraries...OK
Compressing man pages...OK
Building file list... FAILED!
Building Debian package...OK
Installing Debian package...OK
Erasing temporary files...OK
Deleting temp dir...OK
********************************************************************** …Run Code Online (Sandbox Code Playgroud) 我正在尝试编译Quarter并使用checkinstall打包它.
如果我做标准./configure && make && sudo make install,事情就好了.
$ wget http://ftp.coin3d.org/coin/src/all/Quarter-1.0.0.tar.gz
$ tar xzf Quarter-1.0.0.tar.gz
$ cd Quarter-1.0.0
$ ./configure
$ make
$ sudo make install
Run Code Online (Sandbox Code Playgroud)
但是当我使用checkinstall时,它失败了mkdir -p,应该可以正常工作.它失败的方式正是如何-p没有给出选项那样.这是我正在使用的checkinstall命令行:
$ checkinstall -D -y --install=no --pkgname=libquarter --pkgversion=1.0.0 \
--arch=i386 --pkglicense=GPL --maintainer=me@example.com --reset-uids=yes
Run Code Online (Sandbox Code Playgroud)
这是失败:
....
/bin/bash ../../../cfg/mkinstalldirs /usr/local/include/Quarter/devices
mkdir -p -- /usr/local/include/Quarter/devices
mkdir: cannot create directory `/usr/local/include/Quarter': No such file or directory
make[4]: *** [install-libdevicesincHEADERS] Error 1
....
Run Code Online (Sandbox Code Playgroud)
这是脚本的相关部分:
$ cat cfg/mkinstalldirs
....
case $dirmode …Run Code Online (Sandbox Code Playgroud) deb我正在尝试从我的 openCV (不相关)源代码创建一个文件。源的位置是~/software/opencv/
这是我成功执行的命令。
cd ~/software/opencv/
mkdir build
cd build
cmake ..
make
Run Code Online (Sandbox Code Playgroud)
然后sudo make install我使用而不是sudo checkinstall创建deb. 但在这个过程中,却出现了这个提示。
Some of the files created by the installation are inside the home directory: /home
You probably don't want them to be included in the package.
Do you want me to list them? [n]:
Run Code Online (Sandbox Code Playgroud)
当我列出文件时,它只是
/home
/home/user
/home/user/software
/home/user/software/opencv
/home/user/software/opencv/opencv-3.3.1
/home/user/software/opencv/opencv-3.3.1/build
/home/user/software/opencv/opencv-3.3.1/build/CMakeFiles
/home/user/software/opencv/opencv-3.3.1/build/install_manifest.txt
Run Code Online (Sandbox Code Playgroud)
我需要知道的是这个。
checkinstall?checkinstall而不出现这个提示呢?我一直在阅读有关为Python 2.6.4创建RPM的文章.在这个页面中:http://docs.python.org/distutils/builtdist.html它说你可以使用创建当前Python的RPM python setup.py bdist_rpm.我的问题是:
好吧,我使用checkinstall对此进行了排序.
我checkinstall从http://www.asic-linux.com.mx/~izto/checkinstall/下载.
然后我安装了包,但必须进入/usr/local/sbin/checkinstall我的PATH才能使它工作.然后我进入下一个copmmand以获取我的RPM目录.
yum install rpm-build
Run Code Online (Sandbox Code Playgroud)
然后我cd进入Python模块并输入以下命令:
checkinstall -R --nodoc --delspec=no --exclude=/selinux python2.6 ./setup.py install
Run Code Online (Sandbox Code Playgroud)
此命令将命令替换checkinstall为通过setup.py而不是普通make来安装python库.
然后我经历了这个checkinstall过程.完成的RPM放入/usr/src/redhat/RPMS/i386/.
注意:这是LINUX RED HAT.