使用bootstrap.sh安装quagga

本文介绍了一个基于IS-IS路由协议的开源项目OSR。该项目是对quagga的改进和维护,修复了许多bug并增加了新特性。文章还提供了在Ubuntu 12.4环境下搭建quagga的详细步骤。

最近有个项目需要基于IS-IS路由协议做开发。所有找到了quagga这个开源的路由软件,好像目前只有它是支持IS-IS协议并且开源的路由软件了。但是quagga本身有很多的bug,并且对IS-IS的支持不是太好,bug更多(没办法,好像IS-IS大家用的挺少的)。

这里推荐一个项目——OSR(open source routing)。这里简单介绍一下OSR,OSR是一个基于quagga的开源项目,我认为实质上对是quagga的维护,为quagga社区贡献代码。它修改了quagga的很多bug,并添加了一些新的feature。详细信息大家可以参考他们的网站:http://opensourcerouting.org/(官网)和http://jira.isc.org:8090/display/osr/Home(开发)。

我使用的liunx系统是Ubuntu12.4,quagga的依赖的很多工具包都是比较旧的版本,所以需要手动下载这些版本的工具进行安装,而不是使用apt-get。

首先从OSR提供的git链接上下载quagga的源码:https://github.com/opensourcerouting/quagga.git,下载到/opt目录下。

源码下载完成后,最好看一下它的安装文档,INSTALL.quagga.txt。

打开源码目录后会发现没有configure文件和makefile文件,因为这几个文件是使用bootstrap.sh来生成。打开终端,进入到源码目录,键入如下命令:

./bootstrap.sh

这时会报错,是因为安装文件中提到的那些工具没有安装,或者安装版本不对。

解决办法:

  1. 安装 autoconf 2.59
    不要用apt-get安装,apt-get安装的是最新版本,需要从网上下载源码包,然后手动安装。如下工具也是一样。另外,如果系统已经安装了相应版本的autoconf工具,在手动安装之前需要卸载。使用如下命令进行检测是否已经安装:
    dpkg -l autoconf

    如果已经安装,需要卸载,使用如下命令:

    sudo apt-get purge autoconf
    sudo apt-get autoremove autoconf
    sudo apt-get clean autoconf

    下面工具的检测和卸载一样

  2. 安装 automake 1.9.6
  3. 安装 libtool 1.5.22
  4. 安装 texinfo 4.7
  5. 安装 GNU AWK 3.1.5

安装上述工具之后,可能仍然不能正确安装quagga,如果出现类似与规则错误,则需要案子POSIX-compliant shell。按照quagga安装文档的描述:“Quagga expects a POSIX.2 compliant system”。这里我了一个ubuntu下POSIX-comliant的shell,地址:https://apps.ubuntu.com/cat/applications/precise/dash/。点击中间的安装按钮,ubuntu会自动使用软件中心打开。在终端中使用sh命令启动。

OK,现在应该可以使用

转载于:https://www.cnblogs.com/joleang/archive/2013/05/09/3069403.html

<think>首先,用户的问题是:“我想解决运行bootstrap.sh脚本时遇到的权限不足问题 请问Permission denied when running bootstrap.sh script”。这是一个权限问题,具体是运行bootstrap.sh脚本时出现“Permission denied”错误。 从系统级指令来看: - 所有行内数学表达式必须使用$...$格式。 - 独立公式使用$$...$$格式。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾添加引用标识,如[^1]。 用户提供的引用: - 引用[1]:错误涉及权限被拒绝访问文件,如“EACCES: permission denied”。 - 引用[2]:另一个权限被拒绝错误,涉及HDFS和HBase。 - 引用[3]:一个启动脚本,涉及创建目录、设置权限和运行Docker容器。 用户的问题是关于运行bootstrap.sh脚本时的权限问题。引用[1]和[2]直接涉及权限被拒绝错误,引用[3]展示了设置权限的脚本示例。 我的回答应该: - 结构清晰,逐步解决问题。 - 帮助用户解决权限不足问题。 - 在末尾生成相关问题。 - 使用中文。 可能的解决方案: 1. **检查脚本权限**:确保脚本有执行权限。使用`chmod +x bootstrap.sh`来添加执行权限。 2. **检查文件所有权**:用户可能没有脚本的所有权或权限。使用`ls -l bootstrap.sh`检查权限。 3. **运行脚本作为sudo**:如果用户有sudo权限,可以尝试`sudo ./bootstrap.sh`,但这可能不是最佳实践,因为它可能带来安全风险。 4. **检查脚本内容**:脚本可能试图访问用户没有权限的文件或目录。 5. **参考引用**:引用[1]和[2]显示权限问题,引用[3]展示了如何设置权限(例如,`chmod 777`)。 逐步解决: 1. **确认问题**:运行`./bootstrap.sh`时出现“Permission denied”。 2. **添加执行权限**:运行`chmod +x bootstrap.sh`。 3. **检查权限**:运行`ls -l bootstrap.sh`确认权限是否设置正确。 4. **运行脚本**:再次尝试运行`./bootstrap.sh`。 5. **如果仍然有问题**:检查脚本内部是否有访问其他文件的命令,可能需要为那些文件设置权限。 6. **使用sudo**:作为最后手段,使用`sudo ./bootstrap.sh`,但警告用户谨慎使用。 在回答中引用参考: - 引用[1]提到权限被拒绝错误,类似用户的问题。 - 引用[3]展示了设置权限的命令,如`chmod`。 生成相关问题: 基于用户的问题,生成一些相关问题,如: 1. 如何永久解决Linux权限问题? 2. 什么是Linux文件权限的最佳实践? 3. 如何调试脚本中的权限错误? 回答结构: - 开头确认问题。 - 逐步提供解决方案。 - 在相关部分添加引用标识。 - 结尾生成相关问题。</think>### 解决运行bootstrap.sh脚本时的权限不足问题 当您运行`bootstrap.sh`脚本时遇到“Permission denied”错误,这通常表示当前用户缺乏执行该脚本的权限。Linux系统通过文件权限控制访问,脚本需要“可执行”权限才能运行。下面我将逐步解释原因并提供解决方案,确保操作安全可靠。参考您提供的引用,权限问题常见于文件或目录访问受限,例如引用[1]中的“EACCES: permission denied”错误[^1],或引用[3]中通过`chmod`命令显式设置权限的示例[^3]。 #### 步骤1: 确认问题原因 - **错误表现**:运行`./bootstrap.sh`时,终端返回“bash: ./bootstrap.sh: Permission denied”或类似消息。 - **常见原因**: - 脚本文件缺少执行权限(最常见)。 - 脚本内部命令访问了用户无权限的文件或目录(如引用[1]中访问`priv_sk`文件的错误)[^1]。 - 文件所有权不匹配(例如,脚本由root用户创建,但当前用户无权限)。 - **诊断方法**: - 使用`ls -l bootstrap.sh`命令检查文件权限。输出类似: ``` -rw-rw-r-- 1 user group 1024 Jun 10 10:00 bootstrap.sh ``` 如果权限开头不是`-rwx`(缺少`x`表示可执行),则问题在此。 - 检查脚本内容:用文本编辑器(如`nano bootstrap.sh`)查看是否有访问受限路径的命令(如`/opt/`或`/etc/`下的文件)。 #### 步骤2: 添加执行权限(推荐首选方法) 如果诊断显示脚本缺少执行权限,请按以下操作: 1. **添加权限**: ```bash chmod +x bootstrap.sh # 为脚本添加可执行权限 ``` - `chmod +x` 是标准方法,使文件对所有用户可执行(权限变为`-rwxr-xr-x`)。 - **参考引用[3]**:该示例使用`sudo chmod 777`设置目录权限,但`chmod +x`更安全,避免过度开放权限[^3]。 2. **重新运行脚本**: ```bash ./bootstrap.sh # 正常执行脚本 ``` - 如果成功,问题解决。如果仍报错,继续下一步。 #### 步骤3: 处理脚本内部权限问题 如果添加权限后错误依旧,可能脚本内部命令访问了受限资源: 1. **检查脚本内容**: - 打开脚本:`cat bootstrap.sh`。 - 查找可能引发权限错误的命令,例如: - 文件操作(如`touch /path/to/file` 或 `mkdir /protected/dir`)。 - 服务启动命令(如引用[2]中HBase启动时的权限问题)[^2]。 2. **修复内部权限**: - 为脚本内访问的目录或文件添加权限: ```bash sudo chmod -R 755 /path/to/directory # 递归设置目录权限(755是安全级别) ``` - 使用`sudo`仅当必要,避免滥用(如引用[3]中仅在必要时使用`sudo`)[^3]。 - 或修改脚本:将受限路径改为用户有权限的位置(如`~/mydir/`)。 3. **以更高权限运行(谨慎使用)**: - 如果脚本必须访问系统文件,临时使用`sudo`: ```bash sudo ./bootstrap.sh # 以root权限运行 ``` - **警告**:这可能有安全风险,仅在其他方法无效时使用。完成后撤销权限:`sudo chown user:group bootstrap.sh`。 #### 步骤4: 验证所有权和系统限制 - **检查文件所有权**: ```bash ls -l bootstrap.sh # 查看所有者和组 ``` - 如果所有者不是当前用户,使用`sudo chown $USER bootstrap.sh`修改。 - **系统级限制**: - 如果脚本涉及Docker或容器(如引用[3]),确保用户在有权限的组中(例如,运行`sudo usermod -aG docker $USER`后重新登录)。 - 检查SELinux或AppArmor:如果启用,它们可能阻止脚本执行。临时禁用:`sudo setenforce 0`(生产环境不推荐)。 #### 预防措施 - **最佳实践**: - 始终优先使用`chmod +x`而非`chmod 777`,以最小化安全风险[^3]。 - 在脚本开头添加权限检查,例如: ```bash #!/bin/bash if [ ! -x "$0" ]; then echo "Error: Script not executable. Run 'chmod +x $0' first." exit 1 fi ``` - **引用总结**:权限问题常源于文件系统限制(如引用[1][^1]和[2][^2]),通过正确设置权限可解决(如引用[3][^3])。 如果以上步骤仍无效,请提供更多细节(如脚本内容或完整错误日志),以便进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值