opkg 包管理器介绍与使用

73 阅读4分钟

前言

今天想在 Nas 服务器上面拉取一个 Git 项目,结果发现服务器上居然没有默认安装 Git。习惯性地尝试使用 apt-getyum 安装时,却发现这两个命令都没有。然后,我上网查找相关资料,发现大家几乎都是使用 ipkg 作为包管理器。但在搜索过程中,我没能找到 ipkg 的官网或相关详细项目资料,大多数文章只提到 NSLU2 Linux 项目 的托管地址:ipkg.nslu2-linux.org/,不过这个地址上面的安装包最后一次更新已经是2014年了。

opkg

介绍

在搜索 ipkg 相关内容时,我发现了 opkg( OPKG Package Manager )这个包管理器,基于 ipkg 开发。opkg 是一个轻量级的包管理工具,专为嵌入式设备设计,功能比 ipkg 更加全面。与 ipkg 主要将软件安装到特定目录(如 /opt)不同,opkg 支持对根文件系统的完全管理,并且能够自动解决软件包的依赖关系,安装过程若遇到问题则会中止。

简单来说,opkg 是 ipkg 的增强版,不仅提供了根文件系统的全功能管理能力,还能安装内核模块和驱动程序。相比之下,ipkg 仅限于将软件安装到独立的目录中。因此,opkg 在功能上是 ipkg 的扩展和提升。

安装

opkg 的安装过程与一般软件安装相似,提供了安装脚本,执行一条命令即可完成安装。

ssh 连接

首先,你需要通过 SSH 连接到你的服务器。在 Nas 服务器上安装时,出于安全原因,默认情况下 SSH 通常是关闭的,需要手动开启。

获取root权限

安装 opkg 需要 root 权限,因此需要以 root 用户身份进行安装。如果你不是 root 用户,可以通过以下命令获取 root 权限:

sudo -i

查看系统架构

不同架构的安装包是不同的,因此首先需要确认服务器的系统架构,可以使用以下命令查看:

uname -m

执行安装脚本

执行以下命令来自动安装 opkg。需要注意的是,这个脚本是针对 x86-64 架构的。如果你的系统架构不同,下面表格中列出了其他架构的安装脚本。

wget -O - https://bin.entware.net/x64-k3.2/installer/generic.sh | /bin/sh

以下是各类系统架构的安装脚本地址:

架构内核版本GNU C 语言库版本标准安装脚本
armv7sf2.62.23bin.entware.net/armv7sf-k2.…
x862.62.23bin.entware.net/x86-k2.6/in…
x86_643.22.27bin.entware.net/x64-k3.2/in…
armv5sf3.22.27bin.entware.net/armv5sf-k3.…
armv7sf3.22.27bin.entware.net/armv7sf-k3.…
mipssf3.42.27bin.entware.net/mipssf-k3.4…
mipselsf3.42.27bin.entware.net/mipselsf-k3…
aarch643.102.27bin.entware.net/aarch64-k3.…

安装过程中,如果没有出现错误信息且提示安装成功,则说明安装已经完成。

添加环境变量

为了方便使用 opkg,需要将其添加到环境变量中。可以编辑 /etc/profile 文件:

vim /etc/profile

在文件最后追加以下内容:

PATH=/opt/bin:/opt/sbin:$PATH

尝试一下 opkg 命令是否正常

opkg --version

测试使用

通过下面的命令可以测试 opkg 是否能够正常安装和卸载软件包。

注意: 非 root 用户,使用命令前需要加入 sudo 前缀

安装 whois

opkg install whois

安装完成后,你可以通过以下命令测试 whois 是否可用:

whois baidu.com

卸载 whois

opkg remove whois

常用命令

以下是 opkg 的常用命令及其功能,类似于 apt-getyum

1. 安装软件包

  • 命令opkg install <package-name>
  • 功能:安装指定的软件包。
  • 示例
opkg install git

2. 升级软件包

  • 命令opkg upgrade <package-name>
  • 功能:升级指定的软件包到最新版本。
  • 示例
opkg upgrade git

3. 升级所有软件包

  • 命令opkg upgrade
  • 功能:升级所有已安装的软件包。
  • 示例
opkg upgrade

4. 卸载软件包

  • 命令opkg remove <package-name>
  • 功能:卸载指定的软件包。
  • 示例
opkg remove git

5. 查询软件包信息

  • 命令opkg info <package-name>
  • 功能:显示指定软件包的详细信息。
  • 示例
opkg info git

6. 列出已安装的软件包

  • 命令opkg list-installed
  • 功能:列出所有已安装的软件包。
  • 示例
opkg list-installed

7. 查找可用软件包

  • 命令opkg list <pattern>
  • 功能:列出符合模式的所有可用软件包。
  • 示例
opkg list '*git*'

8. 更新软件包索引

  • 命令opkg update
  • 功能:更新软件包索引文件,获取仓库中最新的软件包信息。
  • 示例
opkg update

9. 查看可用的升级列表

  • 命令opkg list-upgradable
  • 功能:列出所有可以升级的软件包。
  • 示例
opkg list-upgradable

结语

在安装过程中,官方教程和一些博客会提示你配置一个自动重启命令:

/opt/etc/init.d/rc.unslung start

不过,我个人并没有发现这个命令的实际作用。经过测试,重启系统后也可以正常使用 opkg。如果遇到问题,你可以将该命令添加到启动脚本中。

相关连接