首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

rpmbuild在/usr/local中构建目标目录,而不是在我指定的位置

rpmbuild是一个用于构建RPM包的工具,它可以将源代码和相关文件打包成可安装的RPM包。在默认情况下,rpmbuild会将构建目标目录设置为/usr/local。

/usr/local是一个常见的系统目录,用于存放用户自行安装的软件。在这个目录下,用户可以自由地安装和管理自己的软件,而不会与系统自带的软件产生冲突。

然而,rpmbuild也提供了一些选项,可以让用户指定构建目标目录。例如,可以使用--buildroot选项来指定构建目标目录的位置。具体的命令格式如下:

rpmbuild --buildroot=<目录路径> ...

通过指定--buildroot选项,可以将构建目标目录设置为任意位置,而不仅限于/usr/local。这样可以更灵活地控制构建过程中生成的文件的位置。

在使用rpmbuild构建RPM包时,需要注意以下几点:

  1. 构建目标目录应该是一个空目录,否则rpmbuild会将构建过程中生成的文件覆盖已有的文件。
  2. 构建目标目录应该具有足够的权限,以便rpmbuild可以在其中创建文件和目录。
  3. 构建目标目录的位置应该与RPM包的规范相符,以便在安装RPM包时能够正确地将文件复制到目标位置。

总结起来,rpmbuild在默认情况下将构建目标目录设置为/usr/local,但用户可以通过指定--buildroot选项来自定义构建目标目录的位置。这样可以更灵活地控制构建过程中生成的文件的位置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

RPM打包原理、示例、详解及备查

这些文件就是用户安装 RPM 后,最终得到的文件。注意一个奇怪的地方: 最终安装目录 不是 构建目录。通过执行类似 make install 的命令实现。...-c name : 如果源码包解压后包含多个目录,而不是单个目录时,此选项可以创建名为 name 的目录,并在其中解压。...测试代码应写入 %check 部分(紧接在 %install 之后,因为需要测试 %{buildroot} 中的文件),而不是写入 %{build} 部分,这样才能在必要时忽略测试。...注意: 如果指定 %doc 条目,rpmbuild 在安装前会将 %doc 目录删除。...如果您想要在 %install 中安装一些文档,请将它们临时安装到 build 目录(不是 build root 目录)中,例如 _docs_staging,接着在 %files 中列出,如 %doc

11.3K71

rpm 快速入门与基础

- 树形依赖 - 环形依赖 - 模块依赖 模块依赖的的文件名是以.so.2结尾的时候,代表这是一个文件,而不是一个软件包此时是模块依赖,需要依赖一个库文件。...平台 -i686 适合的硬件平台 -rpm 扩展名 源码包和RPM包的区别: 安装之前的区别:概念上的区别 安装之后的区别:安装位置不同,rpm也可以指定安装目录,rpm包安装的服务可以使用系统服务管理命令...start RPM包默认安装位置: /etc/ 配置文件安装目录 /etc/sysconfig/ 初始化环境配置文件位置 /etc/init.d/ 启动脚本位置 /usr/bin/ 可执行的命令安装目录...(由rpmbuild管理)- 解压的程序源代码编译文件存储目录 SOURCE:用来存放打包是要用到的源文件和补丁文件等存放位置 - 脚本存放目录 SPEC:存放spec文件作为制作rpm包的领岗文件以...指定包的名字 -v 指定包的版本号 -C 指定打包的相对路径(在搜索文件之前,将目录更改为这里) -d 指定依赖于哪些包 -f 第二次打包时目录下如果有同名安装包存在

1.7K41
  • 如何无网络下免编译的安装程序(RPM包)

    解压源码等 %setup: 解压源码(一般是位于%prep下的macro, 自动解压源码) %build: 编译 %install: 安装, 即把一些可执行文件和配置复制到目标目录中。...指定rpm包在安装卸载前后的动作,比如在安装前用脚本做一些准备、在安装后用脚本做一些初始化动作、在卸载前用脚本做一些准备、在卸载后用脚本做一些清理动作 rpmbuild命令的选项 rpmbuild命令有不少选项...centos下无污染地打rpm包 mock编包一般是做发行版本给别人使用,当然你做的软件要能在别人机器上跑,那么在开发过程中,我们必须模拟一个纯净的用户环境(即是所谓的chroot),mock在编包前先构建一个这样的用户环境...总结来说,rpmbuild编出来的包是特例,而mock编出来包在具有共性。mock相当于给rpmbuild增加了一个外壳,包装了一下。...总结 rpmbuild打包一般步骤 根据rpmbuild标准,创建打包的目录结构 将源码和辅助文件放到指定目录 编写spec文件,放到指定目录 根据需要构建rpm,或者rpm和srpm等。

    2.2K170

    RPM包制作之Spec文件参数详解

    最终,Spec文件中最后有清理阶段,这个目录中的内容将被删除   Spec文件的宏定义: rpmbuild --showrc | grep topdir #工作车间目录...为什么要定义宏,因为不同的系统,命令的存放位置可能不同,所以通过宏的定义找到命令的真正存放位置   1.2 理解Spec脚本中各个变量 rpm的配置文档还算是比较有调理性的...这样,必须在这里定义该标识,并在编写%install脚本的时候引用,才能实现rpm安装时重新指定位置的功能 Prefix: %{_sysconfdir} 这个原因和上面的一样,但由于%{_prefix.../configure --user=nginx --group=nginx --prefix=/usr/local/nginx/…… %install: 安装步骤,此时需要指定安装路径,创建编译时自动生成目录...在该选项中%defattr (-,root,root)一定要注意。

    3.2K20

    RPM包制作之Spec文件参数详解

    最终,Spec文件中最后有清理阶段,这个目录中的内容将被删除   Spec文件的宏定义: rpmbuild --showrc | grep topdir #工作车间目录...为什么要定义宏,因为不同的系统,命令的存放位置可能不同,所以通过宏的定义找到命令的真正存放位置   1.2 理解Spec脚本中各个变量 rpm的配置文档还算是比较有调理性的...这样,必须在这里定义该标识,并在编写%install脚本的时候引用,才能实现rpm安装时重新指定位置的功能 Prefix: %{_sysconfdir} 这个原因和上面的一样,但由于%{_prefix.../configure --user=nginx --group=nginx --prefix=/usr/local/nginx/…… %install: 安装步骤,此时需要指定安装路径,创建编译时自动生成目录...在该选项中%defattr (-,root,root)一定要注意。

    4.5K00

    RPM软件包管理机制之旅

    -U和-F的区别在于,-U允许系统未安装将要升级的包,在升级的时候执行安装动作,而-F则不能升级未安装的包。...,用于查询某具体的RPM包的信息,而不是已经安装到系统的RPM包的信息,如果想要查询已经安装到系统的包的信息,可以去掉-p选项。...1.获取HLFS源代码    在安装rpmbuild之后,通常会在家目录下产生rpmbuild目录: [kelvin@localhost ~]$ ls -r ~/rpmbuild SRPMS SPECS...一般来说,对于同一版本的代码,每打包一次release号加1。Group指定了该软件的类型,rpm所有可用的类型可以在/usr/share/doc/rpm-(rpm版本)/GROUPS文件中查到。...rpmbuild常用的宏是在以下几个文件中定义的,需要时可以查看: /usr/lib/rpm/macros /usr/lib/rpm/redhat/macros /etc/rpm/macros ~/.rpmmacros

    2.9K70

    RPM包制作方法

    RPM包制作方法 最近有同学问我制作RPM包相关的问题,我发现我以前做过,但是忘记记录了,现在记录一下: 以打包nginx并带有nginx-rtmp的工程为rpm为例: 首先,需要安装一个...rpmbuild: 点击(此处)折叠或打开 yum install rpm-build 安装完成之后,系统中可以使用rpmbuild命令 然后下载nginx与nginx-rtmp...,当然,做包的前提是我们手动能够编译,安装nginx+nginx-rtmp 接下来就可以开始写spec,因为打包rpm时,rpmbuild会根据spec来进行操作,将源码包解压,然后按照我们的手动操作的步骤进行操作...,一般是在/root/rpmbuild下面 点击(此处)折叠或打开 [root@sr01 SOURCES]# pwd /root/rpmbuild/SOURCES [.../usr/local/nginx/conf/nginx.conf.default /usr/local/nginx/conf/scgi_params /usr/local/nginx

    1.3K40

    简单介绍RPM包制作方法

    RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。...以下操作在centos-7进行。 制作nginx的rpm例子 建立目录结构 /usr/src/redhat/SOURCES — 存放源代码,补丁,图标等文件。.../usr/src/redhat/RPMS — 存放由rpmbuild制作好的二进制包。 /usr/src/redhat/SRPMS —存放由rpmbuild制作好的源码包。...| grep nginx | grep -v grep`" ];then killall nginx >/dev/null exit 0 fi %files /usr/local/nginx 在制作RPM...%build :开始编译软件,如make %install :开始安装软件,如make install %files :指定哪些文件需要被打包,如/usr/local/nginx %preun :定义卸载之前的动作

    1.3K30

    实用入门分享:如何基于 OpenCloudOS 制作 RPM 软件包?

    安装、卸载、文件列表:指定了RPM包的安装、卸载和文件列表等信息。脚本:包含了在安装、卸载、升级RPM包时需要执行的脚本。...rpmbuild,即可完成 RPM 包的构建。...命令如下:rpmbuild -bb ~/rpmbuild/SPECS/demo.specrpmbuild -bb 是一个用于在 Linux 系统上构建 RPM 包的命令,它会读取.spec 文件和 SOURCES...最后生成的 RPM 包将在 ~/rpmbuild/RPMS/noarch 中,这里通过 ls 查看该目录下文件:ls ~/rpmbuild/RPMS/noarch可以看到 demo-0.1-1.oc8....安装完成后,可以看到 /usr/bin 下存在一个 hello 的可执行文件:ls /usr/bin | grep hello执行安装在系统中的 hello 命令:hello执行完成后显示:hello,

    37340

    rpm-build方式制作rpm包

    二.具体操作 1.安装软件,这个命令将构建rpm包 yum -y install rpm-build 2.开始初始化,如下命令必定报错,他会在当前生成一个文件夹 rpmbuild -ba nginx.spec...:nginx-1.8.0.tar.gz #source制定源代码包,后面可以用%{source1}引用 %define nginx_datadir /usr/local/nginx #下面定义了nginx.../logs/error.log --http-log-path=%{nginx_datadir}/logs/access.log make %install #%install段开始把软件安装到虚拟的根目录中...rpm中 %defattr(-,root,root,-) #%defattr指定包装文件的属性 %{nginx_datadir} %changelog #%changelog 变更日志 4.开始打包 rpmbuild...rpmbuild/RPMS/x86_64/nginx-1.8.0-1.el7.centos.x86_64.rpm 因为打包时,没有将nginx脚本复制出来,所以要进到目录 用rpm -qi 可以看到打包的信息

    6.1K00

    三分钟手操rpm包

    准备rpm打包环境 我搞了一台CentOS6.8的系统来演示这个骚操作,redhat系的其它发行版应该也类似。...我创建了一个coding3min的文件夹,里面名为run.sh的脚本,作用是输出一句话。 把自己的源码打成一个tar.gz的包(随便什么压缩格式),然后放到rpmbuild的源码包所在位置。...要想写一个自己的spce文件,不如抄一个下来改改,一通操作过后,我制作了一个精简的spec文件 sudo vim rpmbuild/SPECS/coding3min.spec vim在编辑的时候会自动生成...解压源码等 %prep %setup -q # 编译 %build # rpm安装前执行的动作 %pre echo install begin... # 安装, 即把一些可执行文件和配置复制到目标目录中...# 清理一些暂存文件 %clean rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_DIR # 定义哪些文件或者目录会放入rpm中 %files %defattr(-,

    68410

    docker+ovs+pipework配置容器ip互通

    /local/bin/ 6.设置OVS系统开机启动 mkdir /opt/script mv autostart.sh script/ 自启动脚本 (每一台都要装)(该脚本只在重启虚拟机之后使用)...vim /etc/rc.d/rc.local /opt/script/autostart.sh 将/opt/script/autostart.sh的路径放入文本中 chmod +x /etc/rc.d...效果:各自ping对方的容器 虚拟机容器互通 验证网桥:进入每台机的容器去ping同一台机的虚拟机ip 注意:如果其他主机内的容器不能ping同该容器,而相同主机的容器能ping通,请检查创建脚本是否忘记添加网关的...ip ---- 八股文 docker 四种网络模型 我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式 host模式,使用...kubernetes中的pod就是多个容器共享一个Networknamespace. host模式 --net=host 容器和宿主机共享Network namespace 用户自定义 --net=自定义网络

    27120

    CentOS6下rpm打包实战

    /SPECS/python.spec # 参照这个文件来写自己软件包的spec文件 写自己软件包的spec文件 spec文件中各个选项的意义参照这里 cd ~/rpmbuild cat ..../SPECS/python27-tstack.spec %debug_package %{nil} %define install_dir /usr/local/python27 Name: python27.../RPMS/x86_64/目录下找到编译好的rpm包。...指定rpm包在安装卸载前后的动作,比如在安装前用脚本做一些准备、在安装后用脚本做一些初始化动作、在卸载前用脚本做一些准备、在卸载后用脚本做一些清理动作 rpmbuild命令的选项 rpmbuild命令有不少选项...rpm包和源码rpm包 --target 指定生成rpm包的平台,默认会生成i686和x86_64的rpm包,但一般我只需要x86_64的rpm包 参考 http://vault.centos.org/

    1.5K50

    keepalived+haproxy构建高可用负载均衡集群

    Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器 发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活.../configure --prefix=/usr/local/keepalived                              指定路径编译 其中可能安装一下依赖包: openssl-devel.../local/keepalived/                                                      默认主目录,存在sbin/和etc/目录 # ln -s.../usr/local/keepalived/sbin/keepalived /sbin/                 便于管理keepalived,将文件链接 # ln -s /usr/local...#rpmbuild -tb haproxy-1.4.23.tar.gz                                            使用源码包构建rpm包 #cd /root

    1.5K70

    根据红帽RHEL7官方文档对centos7进行技术剖析(一)

    /usr/sbin系统管理员命令脚本         /usr/local自定义软件路径     /etc:系统的配置文件所存放的位置     /var:系统数据存放位置     /run...]# pwd /root/rpmbuild 总结:在/root下,使用(cd rpmbuild)就是相对路径切换目录;使用(cd /root/rpmbuild)就是使用绝对路径进行切换目录 [root@...使用yum管理软件: yum配置文件:/etc/yum.conf  将配置中的keepcache改为1则可以将安装的软件下载 yum源文件目录:/etc/yum.repos.d/ yum源的创建和指定:...那么我自己的yum源是前四条,[base]是源的名字,给系统识别的;name=xxb是源的描述,方便自己知道源的用途;baseurl=file:///mnt/centos7是我自己指定的源,因为我用的是自己本地创建的...们是同一个文件,而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;  在文件属性上软链接明确写出了是链接文件,而硬链接没有写 出来,因为在本质上硬链接文件和原文件是完全平等关系

    1.4K60

    抛弃 Autotools 向 CMake 迈进吧

    DIRECTORY 参数指定了数据文件是一个目录,而不是一个文件(FILE)或者脚本(SCRIPT)。你使用的参数和复制一些额外文件到编译目录时是一样。...在 Linux 系统上,TYPE DATA 一般是 /usr/local/share 或者 /usr/share,除非用户定义了其他的位置。 这是诸如 CMake 之类的良好构建系统的强大功能之一。...因为我不希望我的简单的 “hello world” 应用程序真的被安装到我的系统上,我设置了 --prefix 选项,将 CMake 的目标从根目录(/)重定向到 /tmp 的一个子目录。...同样,为了避免在我的系统上安装一个演示程序,我在这个例子中设置了 DESTDIR 变量,将安装目标重定向到 /tmp 的一个子目录: $ mkdir /tmp/dist-hello $ make install...快速自定义 CMake 的安装前缀(由 CMAKE_INSTALL_PREFIX 变量指定)默认是在 /usr/local 这个位置,但是所有的 CMake 变量都可以在你运行 cmake 命令的时候,

    45120
    领券