在Linux中使用 Stow 管理软件包(转)

在Linux中使用 Stow 管理软件包(转)[@more@]  本文是关于 Stow 的,它是用于 Linux 的软件安装管理实用程序,它许多地方都优于“久经考验”的 Red Hat 和 Debian 软件包管理系统。通过使用 Stow,可以将应用程序打包成标准的 tar 文件,并按照逻辑安排应用程序二进制文件,以易于访问。
Stow 是用 Perl 编写的,易于安装和使用,它虽然简单,但对于在 Linux 机器上组织和管理各种软件安装却很有效。Stow 可以方便地将不同软件包安排在组织良好的目录树结构中。这不仅有助于将属于特殊软件包的文件与其它文件分开,而且还给予用户在任何期望的位置存储或安装软件包的自由,同时使软件看上去被安装在软件包或 OS 要求的位置上。
注:如果具有 Linux 的中级知识并安装过 Linux 应用程序,则有助于理解本文。在本文中,我们使用 Stow V1.3.3 和 Perl V5.005。
Linux 的软件安装管理
在我们开始了解 Stow 之前,先让我们研究一下软件安装管理,它也称作软件包管理。软件安装管理在总体上描述了在系统上安装、卸载、更新和组织软件应用程序(或称为软件包)的活动。在这些活动中,组织应用程序是尤其重要的活动。如果应用程序组织得井井有条,那么在 Linux 机器上安装、升级和卸载应用程序会变得更加容易且更方便。
在 Linux 系统上,大多数应用程序必须安装在某一特定目录(通常是 /usr/local/)中才能正确运行和起作用;这种需求来自 Linux 或应用程序本身。如果只在 Linux 系统上安装了很少的应用程序并且它们各自的文件都可以很容易地彼此区分,那么这不会造成任何严重问题。
然而,在实际方案中,可能有大量应用程序安装在同一目录中,该目录不久就会变得很杂乱。设想一下,在安装一个应用程序时,它意外地覆盖了属于另一个应用程序的文件,那么您不得不替换该文件。或者设想一下,在卸载和删除应用程序之前,设法确定哪些文件属于该应用程序。或者,您可能希望找到并删除应用程序不需要的文件。所有这些情形都会花费许多精力和时间,并且要求牢记文件名。
为了克服这样的问题,所以将软件安装管理实用程序用于 Linux 系统。它们不仅有助于组织和安排多个软件安装,而且还可以根据需要,任意次数地更改这样的安排,而且不费吹灰之力。Stow 就是这样一种用于 Linux 的实用程序。
介绍 Stow
虽然一些 Linux 分发版(如 Red Hat 和 Debian)提供了它们自己的软件包管理实用程序(分别是 rpm 和 apt-get),这些实用程序与 Stow 一样有效,但它们仅用于特定的打包格式(分别是 .rpm 和 .deb)。当管理只打包成 .tar 文件的应用程序时,Stow 是最佳选择。
另外,如果人们除了使用 Red Hat 和 Debian 之外,还要使用其它 Linux 分发版,或者希望为现有的软件包管理实用程序找到便宜或免费的备用方案,再或者只想自己控制每件事情,那么 Stow 是一个好的选择。Stow 是遵循 GNU GPL(通用公共许可证,General Public License)的免费软件,它灵活并且可以用充足的用户支持和可用资源进行定制。
Stow 通过将应用程序的安装文件存储并组织到其自己的单独目录(称为软件包目录),从而使它们彼此分开,来管理不同应用程序。这些软件包目录驻留在一个 stow 目录中,该目录包含所有已装载的应用程序的软件包目录,是这些目录的父目录。
Stow 允许用户自由地将应用程序及其相关文件安装和存储在任何期望位置的软件包目录中(通过将该位置指定为装载目录),而不是本地安装的应用程序的公共位置(/usr/local/ 目录)或由应用程序本身指定的缺省位置。该方法有助于使 /usr/local/ 目录保持整洁,而应用程序被安排在井然有序的目录树结构中,易于查找。
注:缺省 stow 目录是 Stow 自己的目录,位于 /usr/local/bin 中;在安装 Stow 时可以更改它(请参阅安装 Stow)。
Stow 不仅可以将应用程序组织在 stow 目录树中,而且还可以在缺省位置(应用程序最初被要求安装的位置)创建相应的符号链接(symlink)。在 Stow 术语中,该缺省位置称为目标目录。缺省情况下,目标目录是 stow 目录的父目录。尽管对于所有用 stow 处理的应用程序而言,用 /usr/local/stow 作为 stow 目录并且用 /usr/local 作为目标目录是习惯作法,但用户可以自由地为 Stow 和目标目录指定其它位置(请参阅 stow 命令)。stow 目录中的应用程序目录树应该与目标目录中所期望的树一样。
应用程序相应的符号链接(位于应用程序目标目录中)指向 stow 目录中应用程序的实际位置(其软件包目录)。符号链接有点类似于 Windows 快捷方式或 MacOS 别名,它可以表示驻留在另一个位置(或许是不同的驱动器或目录)的应用程序的映象。然后,使用这些符号链接来调用或运行该应用程序。这让人觉得应用程序本身被安装在目标目录中并且是从该目录中运行的。当其它应用程序需要调用正在讨论的应用程序或要与之进行交互,并期望它驻留在其缺省位置时,该方法很有用。
注:
Stow 创建相对符号链接;即符号链接指明了至软件包目录的相对路径(相对于符号链接自己的位置)。
Stow 设法为每个应用程序创建最小数目的符号链接 — 如果可能,仅为软件包目录中的整个子目录树创建一个符号链接。创建这种单一符号链接的过程称为树折叠。
Stow 还可用于执行同一应用程序的多次安装。不同的安装可以驻留在不同的位置上,并且 Stow 可用于创建和更新一组应用程序符号链接,使之指向任何期望的位置。
Stow 不仅可以组织软件安装,而且还可以根据需要任意次数地更改任何以前的软件安装布局。Stow 将决不会删除 stow 目录中的任何文件或目录,即使在卸载期间也是如此。它只更新或除去目标树中指向应用程序安装的符号链接,所以要再次安装已卸载的应用程序,只要重新装载它就行了。
安装和运行 Stow
需求
安装 Stow 确实非常简单。安装和运行 Stow 的唯一需求是 Stow 本身和 Perl V5.005 或更高版本。
可以从 GNU FTP 站点(请参阅参考资料以获取链接)下载 Stow 的最新版本。本文使用 V1.3.3,在编写本文时,该版本是最新的。
Perl 是所有主要 Linux 分发版标准安装的一部分。要查看您所拥有的版本,使用命令 perl -v。可以从 perl.com(请参阅参考资料以获取链接)获得有关 Perl 及其最新版本的更多信息。
安装 Stow
要安装 Stow,在 Linux 系统上必须以 root 用户身份登录。下载 Stow 源文件(stow-1.3.3.tar.gz)之后,下列命令将解包(untar)并安装 Stow。
清单 1. 安装 Stow
# tar -zxvf stow-1.3.3.tar.gz
# cd stow-1.3.3
#./configure
# make
# make install prefix=/usr/local/stow
Stow 安装的缺省位置是 /user/local/bin 目录。通过将所期望的位置(作为一个绝对目录路径)指定为上面清单中 make install 命令的 prefix 选项的值,就可以更改这个位置。
Stow 现在被安装在位于 /usr/local/stow 下自己的目录树中。也就是说,Stow 可执行文件现在驻留在 /usr/local/stow/bin 目录中,Stow man 文件驻留在 /usr/local/stow/man 目录中,而 info 文件驻留在 /usr/local/stow/info 目录中。现在,Stow 已经准备好装载应用程序。
注:
在解包 Stow 源文件之后,产生的 stow-1.3.3 文件夹包含一个名为 INSTALL 的文件,该文件包含有用的安装指示信息。

在安装 Stow 之后,将至 stow 目录的绝对路径添加到 $PATH 变量中。
stow 命令
Stow 提供了一个特殊命令 stow,该命令可以与各种选项一起执行,以调用 Stow 进行软件安装管理。Stow 命令的常规语法如下:
$ stow [options] application-name
下面描述了各种 stow 选项:
-v 或 --verbose[=n]:显示描述 Stow 正在做什么的详细输出。n 表示详细级别,可以是 0、1、2 或 3;缺省值是 0。使用 -v 或 --verbose 将详细级别增加 1;使用 --verbose=n 将它设置为 n。
-d directory 或 --dir=directory:将 stow 目录设置成 directory(到期望目录的绝对路径)而不是当前目录。这也可以使目录的父目录成为缺省目标目录。
-t directory 或 --target=directory:将目标目录设置成 directory(至期望目录的绝对路径)而不是当前 stow 目录的父目录。
-D 或 --delete:从目标目录删除应用程序的符号链接,也就是卸空(unstow)应用程序。
-R 或 --restow:重新装载应用程序(先卸空,然后再装载)。通过更改符号链接的软件包目录,在更新应用程序之后,该选项对更新符号链接并从目标树除去旧的符号链接很有用。
-c 或 --conflicts:搜索可能由实际 stow 操作引起的所有冲突。该选项与另一个选项 -n(请见下面的选项)一起使用。但可能会报告假冲突(请参阅参考资料,以获取 Stow 手册中有关冲突一节的链接)。
-n 或 --no:不执行任何 stow 操作,只显示将发生什么。由于不执行实际操作,所以 stow -n 会报告不存在的冲突(请参阅参考资料,以获取 Stow 手册中有关冲突一节的链接)和必定会发生的实际冲突。
-V 或 --version:显示 Stow 版本号。
-h 或 --help:显示 Stow 命令语法。
使用 Stow 的示例
为了学习如何使用 Stow,让我们装载一个虚构的应用程序 app-1.4。让我们假设应用程序源文件是 app-1.4.tar.gz,它必需安装在 /usr/local/bin 中。要安装该应用程序,我们必需以 root 用户身份登录。
首先,我们需要将用 tar 压缩过的源文件解压到(比方说)名为 source 的目录中:
[root@linuxbox source]# tar -zxvf app-1.4.tar.gz
这将在目录 source 中创建包含 app-1.4 源文件的目录 app-1.4。现在,我们更改到 app-1.4 目录:
[root@linuxbox source]# cd app-1.4
首先,我们需要将应用程序安装到 stow 目录下。让我们假设其位置是 /usr/local/stow。我们将对该安装执行普通的 configure、make 和 make install 过程,如下所示:
[root@linuxbox app-1.4]# ./configure --prefix=/usr/local/stow/app-1.4 [root@linuxbox app-1.4]# make [root@linuxbox app-1.4]# make install
现在,我们通常使用 Stow,来装载应用程序安装并在目标目录 /usr/local/bin 中创建相应的符号链接。我们不必以 root 用户身份登录来执行该任务。首先,让我们更改至 stow 目录,然后从那里执行 stow 命令。
[userX@linuxbox app-1.4]$ cd /usr/local/stow/ [userX@linuxbox stow]$ stow -t /usr/local/bin app-1.4
现在,应用程序 app-1.4 驻留在 stow 目录中其自己的软件包目录 app-1.4 中,其相应的符号链接被放在目标目录 /usr/local/bin 中。
如果我们需要升级或重新配置 app-1.4,只要更改到其软件包目录,并且在更新应用程序之后,重新装载它以更新相应的符号链接:
[userX@linuxbox stow]# stow -R app-1.4
要卸载该应用程序,只需卸空 app-1.4:
[userX@linuxbox stow]# stow -D app-1.4
Stow 将只除去指向应用程序安装的链接,决不会删除任何安装文件。因此,稍后可以再次装载应用程序以使用它。
结束语
Stow 是用于 Linux 系统的一种免费、简单且易于使用的软件安装管理实用程序。对于从应用程序的 tar 源文件直接安装的应用程序而言,Stow 是十分理想的,而象 .rpm 或 .deb 这样的标准打包格式在此情况下并不适合。Stow 通过将应用程序安装保存在任何期望位置下其自己的单独目录中来管理它们,同时使它们看上去被安装在必需的位置上。
使用 Stow 进行软件安装管理提供了许多优点,如易于安装和卸载应用程序、易于跟踪已安装的应用程序及其相关文件、易于升级和易于重新配置已装载的应用程序。
参考资料
请访问 Stow 主页,以获取到 Stow 的 GNU 正式站点上相关信息的链接。
从 GNU FTP 站点下载 Stow 的最新版本。
请参考 Stow 手册页面,以获取一般信息以及有关 Stow 如何处理命名冲突的章节。
请在 Linux Gazette 上阅读由 Allan Peda 撰写的有关 Stow 的有用文章“Simple Package Management With Stow”。
有关 Perl 信息及其最新版本的下载,请访问 perl.com。
有关 Red Hat 的软件包管理实用程序概述,请阅读我们的三部分系列文章。第 1 部分 讨论了如何使用 RPM,第 2 部分讨论了软件补丁和分发 RPM,第 3 部分讨论了在安装和卸载期间运行脚本。
我们在有关编译源文件和管理软件包的教程中讨论了 Red Hat 和 Debian 软件包管理。
如果需要在整个企业范围内管理软件分发版,那么 Tivoli 可以帮助您。请查看 IBM.com 上的 Tivoli Configuration Manager。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10617731/viewspace-947187/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10617731/viewspace-947187/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在ROS 2安装Cartographer,可以按照以下步骤进行操作: 1. 首先,确保已经安装了ROS 2和Cartographer的依赖项。您可以通过运行以下命令安装ROS 2: ``` sudo apt update sudo apt install ros-<distro>-desktop ``` 注意在`<distro>`替换为您要使用的ROS 2发行版(如`foxy`或`dashing`)。 2. 接下来,安装Cartographer的依赖项。您可以使用以下命令来安装它们: ``` sudo apt update sudo apt install git cmake protobuf-compiler libceres-dev libboost-all-dev liblua5.3-dev ``` 3. 接下来,创建一个工作空间并克隆Cartographer的源代码。使用以下命令: ``` mkdir -p cartographer_ws/src cd cartographer_ws/src git clone https://github.com/googlecartographer/cartographer.git git clone https://github.com/googlecartographer/cartographer_ros.git ``` 4. 然后,安装其他依赖项和构建Cartographer。使用以下命令: ``` sudo apt update sudo apt install python3-vcstool cd .. rosdep install --from-paths src --ignore-src --rosdistro <distro>-release -y colcon build --symlink-install ``` 请注意,将上述命令的`<distro>`替换为您要使用的ROS 2发行版(如`foxy`或`dashing`)。 5. 最后,您需要设置与Cartographer和ROS 2相关的环境变量。使用以下命令: ``` source install/setup.bash ``` 现在,您已经成功地在ROS 2上安装了Cartographer。您可以通过使用Cartographer ROS软件包提供的节点和服务来开始使用它进行建图和定位。 ### 回答2: 要在ROS2环境安装Cartographer,需要执行以下步骤: 第一步,安装依赖项。在ROS2环境下,安装Cartographer之前,需要先安装一些依赖项。打开终端窗口,执行以下命令: ``` sudo apt-get update sudo apt-get install -y protobuf-compiler libprotobuf-dev libboost-all-dev python3-sphinx ros-<distribution>-gazebo-ros-pkgs ``` 在命令将“<distribution>”替换为ROS2的发行版本,例如“foxy”或“rolling”。 第二步,克隆Cartographer源代码。继续在终端窗口执行以下命令: ``` mkdir -p ~/cartographer_ws/src cd ~/cartographer_ws/src git clone https://github.com/cartographer-project/cartographer.git ``` 第三步,构建Cartographer。在终端窗口执行以下命令: ``` cd ~/cartographer_ws source /opt/ros/<distribution>/setup.bash colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release ``` 同样,将命令的“<distribution>”替换为ROS2的发行版本。 第四步,安装Cartographer ROS包。在终端窗口执行以下命令: ``` cd ~/cartographer_ws source ~/cartographer_ws/install/setup.bash sudo apt-get install -y ros-<distribution>-cartographer ros-<distribution>-cartographer-ros ``` 确保将命令的“<distribution>”替换为ROS2的发行版本。 安装完成后,即可在ROS2使用Cartographer进行建图和定位。根据需要,可以使用Cartographer提供的命令行工具或者编写自己的ROS节点来使用Cartographer的功能。 ### 回答3: 要安装ROS 2的Cartographer,你需要按照以下步骤进行操作: 1. 首先,确保你已经正确安装ROS 2。你可以从ROS官方网站上找到ROS 2的安装指南,并根据指南的步骤进行安装。 2. 在安装ROS 2之后,你需要安装Cartographer的依赖项。打开一个终端窗口,执行以下命令来安装Cartographer的依赖项: ``` sudo apt-get install -y python3-wstool python3-rosdep ninja-build stow python3-pep8 sudo pip3 install -U setuptools ``` 3. 接下来,你需要获取Cartographer源代码。在终端窗口执行以下命令: ``` mkdir -p ~/cartographer_ws/src cd ~/cartographer_ws/src git clone https://github.com/cartographer-project/cartographer.git git clone https://github.com/cartographer-project/cartographer_ros.git cd ~/cartographer_ws rosdep update rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} ``` 在第三步,我们将源代码克隆到了`~/cartographer_ws/src`目录下,并且使用`rosdep`来安装所需的ROS依赖项。 4. 现在,编译Cartographer。在终端窗口执行以下命令: ``` cd ~/cartographer_ws src/cartographer/scripts/install_abseil.sh src/cartographer/scripts/install_proto3.sh ament build --symlink-install ``` 这一步骤可能需要一些时间来完成,确保网络连接良好,以便能够下载和编译所需的软件包。 5. 安装完成后,你可以尝试运行Cartographer的示例。在终端窗口执行以下命令: ``` source install/local_setup.bash roslaunch cartographer_ros demo_revo_lds.launch ``` 这将运行Cartographer与一个示例激光雷达一起工作的启动文件。如果一切顺利,你应该能够在RViz看到建图的结果。 以上就是使用300字文回答ros2安装Cartographer的步骤。请注意,这只是简要的安装指南,更详细和特殊的需求请参考Cartographer和ROS 2的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值