鸣涧 发表于 2022-3-13 17:00:05

OpenWrt的ipk包安装

OpenWrt的ipk包安装


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

包安装示例


如下关于Lua的配置项:

其中 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.ipk
Installing 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.ipk
Installing luasql-mysql (2.3.0-1) to root...Configuring luasql-mysql.
就这样,luasql 库安装完成了。
在 OpenWrt 系统的 /usr/lib/lua/ 目录下多出一个 luasql 目录,在该目录下有一个 mysql.so 文件。

启动 Lua 试试看:
#--OpenWrt---$ luaLua 5.1.5Copyright (C) 1994-2012 Lua.org, PUC-Rio (double int32)> require 'luasql.mysql' 成功。

opkg 的使用 opkg 有点类似地 ubuntu 中的 dpkg 包管理工具。

常见的用法是:安装、卸载软件包。
usage: opkg sub-command
where sub-command is one of:Package Manipulation:    update            Update list of available packages    upgrade <pkgs>      Upgrade packages    install <pkgs>      Install package(s)    configure <pkgs>    Configure unpacked package(s)    remove <pkgs|regexp>    Remove package(s)    flag <flag> <pkgs>    Flag package(s)   <flag>=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 <pkg>      List files belonging to <pkg>    search <file|regexp>    List package providing <file>    find <regexp>      List packages whose name or description matches <regexp>    info     Display all info for <pkg>    status     Display all status for <pkg>    download <pkg>      Download <pkg> to current directory    compare-versions <v1> <op> <v2>                        compare versions using <= < > >= = << >>    print-architecture    List installable package architectures    depends [-A] +    whatdepends [-A] +    whatdependsrec [-A] +    whatrecommends[-A] +    whatsuggests[-A] +    whatprovides [-A] +    whatconflicts [-A] +    whatreplaces [-A] +Options:    -A            Query all packages not just those installed    -V[<level>]      Set verbosity level to <level>.    --verbosity[=<level>]    Verbosity levels:                  0 errors only                  1 normal messages (default)                  2 informative messages                  3 debug                  4 debug level 2    -f <conf_file>      Use <conf_file> as the opkg configuration file    --conf <conf_file>    --cache <directory>    Use a package cache    -d <dest_name>      Use <dest_name> as the the root directory for    --dest <dest_name>    package installation, removal, upgrading.                <dest_name> should be a defined dest name from                the configuration file, (but can also be a                directory name in a pinch).    -o <dir>      Use <dir> as the root directory for    --offline-root <dir>    offline installation of packages.    --add-arch <arch>:<prio>    Register architecture with given priority    --add-dest <name>:<path>    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*'

页: [1]
查看完整版本: OpenWrt的ipk包安装