前言
今天想在 Nas 服务器上面拉取一个 Git 项目,结果发现服务器上居然没有默认安装 Git。习惯性地尝试使用 apt-get
或 yum
安装时,却发现这两个命令都没有。然后,我上网查找相关资料,发现大家几乎都是使用 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 语言库版本 | 标准安装脚本 |
---|---|---|---|
armv7sf | 2.6 | 2.23 | bin.entware.net/armv7sf-k2.… |
x86 | 2.6 | 2.23 | bin.entware.net/x86-k2.6/in… |
x86_64 | 3.2 | 2.27 | bin.entware.net/x64-k3.2/in… |
armv5sf | 3.2 | 2.27 | bin.entware.net/armv5sf-k3.… |
armv7sf | 3.2 | 2.27 | bin.entware.net/armv7sf-k3.… |
mipssf | 3.4 | 2.27 | bin.entware.net/mipssf-k3.4… |
mipselsf | 3.4 | 2.27 | bin.entware.net/mipselsf-k3… |
aarch64 | 3.10 | 2.27 | bin.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-get
或 yum
。
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。如果遇到问题,你可以将该命令添加到启动脚本中。
相关连接
- Entware 项目: github.com/Entware/Ent…
- Entware Wiki: github.com/Entware/Ent…