apk
(Alpine Package Manager
)
apk
是Alpine Linux的包管理工具。
apk仓库
就是一种文件的组织方式,其结构如下:
alpine
├── MIRRORS.txt
├── v3.8
│ ├── community
│ │ ├── x86
│ │ │ ├── APKINDEX.tar.gz
│ │ │ ├── mm-2.8.1-r0.apk
│ │ │ └── mm-doc-2.8.1-r0.apk
│ │ └── x86_64
│ │ ├── APKINDEX.tar.gz
│ │ ├── nn-2.8.1-r0.apk
│ │ └── nn-doc-2.8.1-r0.apk
│ ├── main
│ │ ├── x86
│ │ │ ├── APKINDEX.tar.gz
│ │ │ ├── xx-2.8.1-r1.apk
│ │ │ └── xx-doc-2.8.1-r1.apk
│ │ └── x86_64
│ │ ├── APKINDEX.tar.gz
│ │ ├── yy-2.8.1-r1.apk
│ │ └── yy-doc-2.8.1-r1.apk
│ └── release
└── v3.9
│
apk仓库
的地址格式:${sourceURL}/alpine/${version}/${repositoryName}
上面的${sourceURL}/alpine/v3.8/main
和${sourceURL}/alpine/v3.8/community
是两个仓库。
apk仓库
可以存放在任何地方,下面是两个例子:
CD-ROM
中,通过把CD-ROM
挂载到操作系统中,再配置一下仓库地址就可以了。apk仓库的镜像
就是对原始仓库的一个完整克隆,镜像存在的目的就是使得网络访问速度加快。
https://mirrors.alpinelinux.org里列出了官方认证的镜像。
下面是国内用户使用最多的镜像:
名称 | 地址 |
---|---|
官方源 | dl-cdn.alpinelinux.org |
阿里云的镜像 | mirrors.aliyun.com |
科大的镜像 | mirrors.ustc.edu.cn |
1、从官方源中拉取main
和community
两个仓库:
wget -r -np -nH http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/
wget -r -np -nH http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/
2、安装nginx
3、将alpine
目录整体移动到/usr/local/nginx/html
目录下:
mv ~/alpine /usr/local/nginx/html/
4、启动nginx:
nginx
得到仓库地址:
http://your_host_ip/alpine/v3.8/main
http://your_host_ip/alpine/v3.8/community
apk
仓库的配置文件是/etc/apk/repositories
apk
支持从多个仓库下载软件,在/etc/apk/repositories
里可以配置很多个仓库的地址, 下面是我的配置:
http://mirrors.aliyun.com/alpine/v3.8/main
http://mirrors.aliyun.com/alpine/v3.8/community
如果您修改了/etc/apk/repositories
,修改完之后,必须使用apk update
命令进行更新仓库的索引, 否则配置不会生效。
apk update
命令用于更新配置在/etc/apk/repositories
中的所有apk
仓库中软件的索引。 修改了/etc/apk/repositories
之后一定要执行此命令。
apk update
命令会从各个仓库根目录下载APKINDEX.tar.gz
,存储到本地的/var/cache/apk
目录中。
升级当前已经安装了的包(包括内核)。
查询给定名字的包。
示例1 - 展示描述信息:
apk search -v vim
示例2 - 在描述信息中匹配:
apk search -d vim
从仓库中安装最新软件包,并自动安装必须的依赖包。
示例1:
apk add vim
示例2:
apk add openssh openntp
示例3:
apk add --no-cache mysql-client
示例4:
apk add docker --update-cache --repository http://mirrors.ustc.edu.cn/alpine/v3.4/main/ --allow-untrusted
示例5 - 安装指定版本软件包:
apk add asterisk=1.6.0.21-r0
apk add 'asterisk<1.6.1'
apk add 'asterisk>1.6.1'
示例5 - 升级指定软件包:
apk add --upgrade busybox
卸载给定名字的包。
显示软件包的信息。
示例1 - 列出所有已安装的软件包:
apk info
示例2 - 显示完整的软件包信息:
apk info -a vim
示例3 - 显示指定文件所属的包:
apk info --who-owns /sbin/lbu
维护本地缓存的包仓库。
对比已安装和可用的包之间的不同之处。
从包列表创建仓库的索引。
下载但不安装包。
从原始包安装状态向文件系统列表更改。
验证包签名。
示例:
apk verify openrc-0.35.5-r5.apk
尝试修复或者升级已安装的包。
apk
包的本质就是.tar.gz
包,我们可以通过tar zvxf xx.apk -C xx/
进行解压,就可以看到里面的内容了。