我已经从.rpm文件安装了一个包,它存储在/ opt中.
经过一些配置后,我发现需要重新安装软件.所以我删除了该目录并尝试重新安装该文件rpm -i XXX.rpm
.但它告诉我package xxx is already installed
.
我该如何重新安装?
有没有办法从rpm包中提取spec文件(我只有RPM文件)
不是
rpm --scripts -qp my-great-app-1.1.2.rpm
Run Code Online (Sandbox Code Playgroud)
(这种语法只能从rpm获取spec脚本中的脚本)
我修改自动生成,并想告诉rpmbuild
来调用它,当使用特定生成区域.
这类似于现有问题,但更具体.
我不想以root用户身份运行任何构建命令; 目的只是拥有一个RPM,而不是在系统中安装任何东西.
我不想要求用户更改他们的dotfiles(例如$HOME/.rpmrc
); 构建应该是自包含的,不会影响用户的现有设置.
我不想将位置硬编码到foo.spec
文件中; 如果用户想要在不同的位置构建,那么该文件应该可以使用.
该--buildroot
选项是不是我所需要; 为make
构建过程的一部分设置伪根文件系统,但我需要为整个 RPM构建过程指定"构建区域" .
我正在寻找的是一个假设的--build-area FOODIR
选项,可以给rpmbuild
命令或等效的环境变量.因此,它应该仅影响该命令的单个调用,并使其对其构建区域使用指定的用户可写位置.
我已经看到了对_topdir
宏的引用,这似乎就是我所说的,但它似乎不是每次调用都可配置的.
如果rpmbuild
可以在需要时在该位置设置自己的环境,那将是理想的,但我不介意为每个构建设置目录,因为这可以作为构建的一部分自动化.目标是使用户可写位置仅在构建运行期间存在,然后在生成RPM文件后通过删除整个位置进行清理.
我是一个ubuntu用户,但我需要安装一个打印机驱动程序,这是一个RPM(*.rpm)文件(抱歉,这是Linux制造商网站上唯一可用的驱动程序).
是否可以在ubuntu上安装RPM文件?
提前致谢.
我正在运行Mac OS X 10.6.6.我有一些我想要构建的仅限数据的RPM.
直到最近,我已经在运行CentOS的VM上完成了大部分开发工作,但是我已经能够将这些任务逐步转移到Mac上.我一直在使用Fink访问我需要的Open/Free工具,但我还没准备好去Fink unstable,RPM5软件包已经存在了一段时间.
我还尝试从源代码构建RPM实用程序,到目前为止运气不佳.
是否还有其他人在Mac上本地构建RPM?如果是这样,怎么样?
在构建RPM包的过程中,我必须指定BuildRoot,稍后将在%install中使用,它将调用$ RPM_BUILD_ROOT.我一直认为$ RPM_BUILD_ROOT是RPM执行打包的虚假安装.然后,在安装时使用RPM包,它将安装到实际位置.例如:
$RPM_BUILD_ROOT/usr/bin
Run Code Online (Sandbox Code Playgroud)
我认为$ RPM_BUILD_ROOT仅用于打包过程,并且在某些方面RPM可以区分$ RPM_BUILD_ROOT和实际安装位置,当用户执行"rpm -ivh package.rpm"时将是/ usr/bin.
但是最近在阅读一些文档时,建议$ RPM_BUILD_ROOT是将要安装的实际位置,并且$ RPM_BUILD_ROOT由用户使用环境变量$ RPM_BUILD_ROOT的设置指定,以便让用户在他们的愿望中安装包位置.否则,$ RPM_BUILD_ROOT将为null,它将安装到默认位置.在上面的例子中,它是/ usr/bin.因此,$ RPM_BUILD_ROOT不仅适用于打包或"虚假安装"过程,而且是用户定义安装位置的一种方式,类似于Windows中的选择文件夹位置.
我不知道我的想法是否正确.有人可以验证吗?提前致谢.
我在一个文件夹中有一堆rpm文件.我正在尝试使用以下命令安装它们:
rpm -ivh *.rpm
因此rpm可以处理正确的安装顺序.
在其中一些rpms中,我在我的系统中安装了更新的版本,所以我得到了例子:
package info-5.0-1 (which is newer than info-4.13a-2) is already installed
/opt/freeware/man/man1/infokey.1 from install of info-4.13a-2 conflicts with file from package info-5.0-1
有没有办法忽略旧的.rpm文件并使用已安装的新版本解决依赖关系?我想到了--force选项.但是--force如何解决冲突?用旧版本覆盖它们还是忽略它们离开新版本?
欢迎任何想法.
我有一个spec文件.我需要定义一个spec变量,它从系统上的一行文件中获取其值.
例如
%define path `cat /home/user/path_file`
Run Code Online (Sandbox Code Playgroud)
并且在path_file中是一行
/var/www/html/hosts
Run Code Online (Sandbox Code Playgroud)
这部分有效.我说从RPM BUILD输出开始有时值${path}
实际上是我的命令cat /home/user/path_file
,有时值是path_file(/ var/www/html/hosts)中的行应该是什么?
我正在升级我们的项目RPM.问题是当我从projectname-1.0-0升级到projectname-1.0-1时,它首先安装新项目并卸载旧项目,从整体上看,它完全删除了我的项目.我在升级时使用了"vv"选项,输出显示安装完成后卸载.
有人请帮忙解决这个问题.有什么我应该在RPM规范或rpmbuild选项中专门更改?
我正在.spec
通过URL 向现有rpm 文件添加一些源,但尚未下载它们.有没有办法rpmbuild
下载源而不是手动执行?