博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenWrt的ipk包安装
阅读量:7227 次
发布时间:2019-06-29

本文共 5812 字,大约阅读时间需要 19 分钟。

hot3.png

在 make menuconfig 进行裁减 OpenWrt 时,为了让系统更精小一点,我们会把部分功能以“模块”的方式编译,即不编入内核,只是在后期用户可以进行安装与卸载。

包安装示例

如下关于Lua的配置项:

182445_iPLw_243525.png

其中 json4lua, lua-cjson, lua-copas, lua-coxpcall 是没有编入原生系统的。

在 make 完成之后。

在 bin/ar71xx/packages/ 路径下全是 ipk 安装包。其中上面对应的安装包就在 bin/ar71xx/packages/packages/ 目录下。

#--开发机--$ ls lua*lua-cjson_2.1.0-1_ar71xx.ipk      lua-rs232_1.0.3-1_ar71xx.ipklua-copas_2.0.0-1_ar71xx.ipk      luasocket_3.0-rc1-20130909-3_ar71xx.ipklua-coxpcall_1.15.0-1_ar71xx.ipk  luasql-mysql_2.3.0-1_ar71xx.ipkluaposix_v33.2.1-4_ar71xx.ipk     luasql-sqlite3_2.3.0-1_ar71xx.ipk

怎么安装到 OpenWrt上呢?

首先,用 scp 将 ipk 包发送到 OpenWrt 系统上。本人的 OpenWrt 的 IP 为 192.168.1.2,以 luasql 为例

#--开发机--$ scp luasql-mysql_2.3.0-1_ar71xx.ipk root@192.168.1.2:root@192.168.1.2's password: 
<输入密码>
luasql-mysql_2.3.0-1_ar71xx.ipk                      100% 6441     6.3KB/s   00:00

SSH登入 OpenWrt,查看文件。luasql-mysql_2.3.0-1_ar71xx.ipk 已在 /root/ 目录下了。

#--OpenWrt---$ opkg install luasql-mysql_2.3.0-1_ar71xx.ipkInstalling luasql-mysql (2.3.0-1) to root...Collected errors: * satisfy_dependencies_for: Cannot satisfy the following dependencies for luasql-mysql: *     libmysqlclient *  * opkg_install_cmd: Cannot install package luasql-mysql.

Oops,出师不力(不用惊慌,这也是常常遇到的事儿)~缺 libmysqlclient 库。

那就看看 libmysqlclient 库的 ipk 包有没有。如果 bin/ar71xx/packages 路径下没有,则是 make menuconfig 时没有加进来。这时,修改配置,再make一下就会有了。

在 bin/ar71xx/packages/ 路径下 find 一下。

#--开发机---$ find -name "libmysqlclient*"./packages/libmysqlclient_5.1.73-1_ar71xx.ipk

有!那就不用再make一遍了。

同样,用 scp 将 libmysqlclient_5.1.73-1_ar71xx.ipk 文件传送到 OpenWrt。

#--开发机---$ scp libmysqlclient_5.1.73-1_ar71xx.ipk root@192.168.1.2:

再在 OpenWrt 的 SSH 里安装刚发送过来的 ipk 包。

#--OpenWrt---$ opkg install libmysqlclient_5.1.73-1_ar71xx.ipk Installing libmysqlclient (5.1.73-1) to root...Collected errors: * satisfy_dependencies_for: Cannot satisfy the following dependencies for libmysqlclient: *     uclibcxx *  * opkg_install_cmd: Cannot install package libmysqlclient.

Oops~Again,libmysqlclient还依赖于uclibcxx库。安装 uclibcxx 库。

#--开发机---$ scp base/uclibcxx_0.2.4-1_ar71xx.ipk root@192.168.1.2:
#--OpenWrt---$ opkg install uclibcxx_0.2.4-1_ar71xx.ipk Installing uclibcxx (0.2.4-1) to root...Configuring uclibcxx.

uclibcxx库OK了

再来安装 libmysqlclient 库

#--OpenWrt---$ opkg install libmysqlclient_5.1.73-1_ar71xx.ipk Installing libmysqlclient (5.1.73-1) to root...Configuring libmysqlclient.

libmysqlclient库OK了。

最后安装 luasql 库

#--OpenWrt---$ opkg install luasql-mysql_2.3.0-1_ar71xx.ipkInstalling luasql-mysql (2.3.0-1) to root...Configuring luasql-mysql.

就这样,luasql 库安装完成了。

在 OpenWrt 系统的 /usr/lib/lua/ 目录下多出一个 luasql 目录,在该目录下有一个 mysql.so 文件。

启动 Lua 试试看:

#--OpenWrt---$ luaLua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio (double int32)> require 'luasql.mysql'

成功。

opkg 的使用

opkg 有点类似地 ubuntu 中的 dpkg 包管理工具。常见的用法是:安装、卸载软件包。

usage: opkg [options...] sub-command [arguments...]where sub-command is one of:Package Manipulation:    update            Update list of available packages    upgrade 
        Upgrade packages    install 
        Install package(s)    configure 
    Configure unpacked package(s)    remove 
    Remove package(s)    flag 
 
    Flag package(s)     
=hold|noprune|user|ok|installed|unpacked (one per invocation)Informational Commands:    list            List available packages    list-installed        List installed packages    list-upgradable        List installed and upgradable packages    list-changed-conffiles    List user modified configuration files    files 
        List files belonging to 
    search 
    List package providing 
    find 
        List packages whose name or description matches 
    info [pkg|regexp]    Display all info for 
    status [pkg|regexp]    Display all status for 
    download 
        Download 
 to current directory    compare-versions 
 
 
                        compare versions using <= < > >= = << >>    print-architecture    List installable package architectures    depends [-A] [pkgname|pat]+    whatdepends [-A] [pkgname|pat]+    whatdependsrec [-A] [pkgname|pat]+    whatrecommends[-A] [pkgname|pat]+    whatsuggests[-A] [pkgname|pat]+    whatprovides [-A] [pkgname|pat]+    whatconflicts [-A] [pkgname|pat]+    whatreplaces [-A] [pkgname|pat]+Options:    -A            Query all packages not just those installed    -V[
]        Set verbosity level to 
.    --verbosity[=
]    Verbosity levels:                    0 errors only                    1 normal messages (default)                    2 informative messages                    3 debug                    4 debug level 2    -f 
        Use 
 as the opkg configuration file    --conf 
    --cache 
    Use a package cache    -d 
        Use 
 as the the root directory for    --dest 
    package installation, removal, upgrading.                
 should be a defined dest name from                the configuration file, (but can also be a                directory name in a pinch).    -o 
        Use 
 as the root directory for    --offline-root 
    offline installation of packages.    --add-arch 
:
    Register architecture with given priority    --add-dest 
:
    Register destination with given pathForce Options:    --force-depends        Install/remove despite failed dependencies    --force-maintainer    Overwrite preexisting config files    --force-reinstall    Reinstall package(s)    --force-overwrite    Overwrite files from other package(s)    --force-downgrade    Allow opkg to downgrade packages    --force-space        Disable free space checks    --force-postinstall    Run postinstall scripts even in offline mode    --force-remove    Remove package even if prerm script fails    --force-checksum    Don't fail on checksum mismatches    --noaction        No action -- test only    --download-only    No action -- download only    --nodeps        Do not follow dependencies    --nocase        Perform case insensitive pattern matching    --force-removal-of-dependent-packages                Remove package and all dependencies    --autoremove        Remove packages that were installed                automatically to satisfy dependencies    -t            Specify tmp-dir.    --tmp-dir        Specify tmp-dir. regexp could be something like 'pkgname*' '*file*' or similar e.g. opkg info 'libstd*' or opkg search '*libop*' or opkg remove 'libncur*'

转载于:https://my.oschina.net/hevakelcj/blog/410144

你可能感兴趣的文章
text-decoration与color属性
查看>>
如何使用Mybatis第三方插件--PageHelper实现分页操作
查看>>
PyCharm搭建GO开发环境(GO语言学习第1课)
查看>>
Android交互
查看>>
提醒我喝水chrome插件开发指南
查看>>
列表数据转树形数据
查看>>
Java新版本的开发已正式进入轨道,版本号18.3
查看>>
从零开始的webpack生活-0x009:FilesLoader装载文件
查看>>
在electron中实现跨域请求,无需更改服务器端设置
查看>>
gitlab-ci配置详解(一)
查看>>
听说你叫Java(二)–Servlet请求
查看>>
案例分享〡三拾众筹持续交付开发流程支撑创新业务
查看>>
FreeWheel业务系统微服务化过程经验分享
查看>>
移动互联网下半场,iOS开发者如何“高薪”成长?
查看>>
Atlassian是怎样进行持续交付的?且听 Steve Smith一一道来
查看>>
Web Storage相关
查看>>
[PHP内核探索]PHP中的哈希表
查看>>
Apache-drill Architechture
查看>>
WordPress 5.2 Beta 3 发布,要求 PHP 5.6.20 以上版本
查看>>
通通连起来——无处不在的流
查看>>