发布时间:2024-01-10
浏览次数:0
搜索包
安装包
更新包
包回滚
卸载一个包
垃圾收集器
测试包
尼克斯表达
总结
以前的文章
为什么需要包管理器
如果你读过《程序员的自我修养》这本书,你一定知道软件包的发展历史。 现在的软件包大多是动态链接的,并且存在依赖关系。因此,安装软件包也需要解决依赖问题。 依赖的软件包还可能依赖于其他依赖项,因此这是一个复杂的过程。
删除软件包时也是如此,被删除的软件包所依赖的软件包也可能依赖于其他软件包。 删除软件包及其依赖项也是一个复杂的过程。
因此,需要像包管理器这样的程序来管理它。
传统的包管理器
说到管理,表面上主要是增、删、改、查,实际上是数据库信息的管理。 除了dpkg忽略依赖之外,其他包管理工具在功能上都差不多。
这里我们以APT包管理工具为例
1)更新索引
# 更新索引
sudo apt update
Index 从软件服务器更新最新的包索引信息,以便后续搜索和
2)搜索软件包
您可以根据软件包名称或功能描述关键字进行搜索
sudo apt search "web scanner"
查看包裹信息
sudo apt show nmap
该命令可以显示nmap软件包的基本信息,如软件包名称、版本、依赖项、大小、描述等。
查看软件源码信息
sudo apt showsrc nmap
3)安装
与下载源代码和编译相比,APT 等工具将安装简化为几条指令。
# 安装 nmap 软件包
sudo apt install nmap
APT是如何实现这种封装的呢?
首先我要知道去哪里下载,所以就有了更新源的概念。
该系列的系统更新源信息存储位置为
/etc/apt/.list 是系统官方定义的软件更新源
/etc/apt/.list.d/目录存放第三方软件的更新源
格式基本一样
软件包/软件源码 软件包服务器地址 发行版本-软件包分类 软件包分类目录
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
只下载deb包
sudo apt download nmap
至此,Nmap程序的deb包已经下载到当前目录,稍后可以通过dpkg进行安装。
只下载软件源码
sudo apt source nmap
通过浏览器获取deb包和源码
以阿里云镜像网站为例
以main为例
以nmap为例,选择n开头的
这样就可以找到nmap的deb安装包和源码了。
通常下载包的地方
通过sudo apt 下载安装的软件包在哪里?
更新或安装完成后,下载的软件包会自动清除
软件包安装在哪里
我个人很关心这个问题,因为默认的Linux包管理器会将一个软件包分解成许多文件并将它们放置在适当的位置,例如
但事实上,这件事不是由用户决定的,甚至不是由系统决定的,而是由包的维护者决定的。
以这个程序为例
首先使用apt正常安装
安装后使用dpkg -L查看包中各个文件的位置
现在我们使用apt purge卸载,然后尝试通过下载deb包修改相关文件的位置然后打包安装进行比较。
下载deb包并解压
查看包装内容
大家看到这里应该就明白了。 事实上sublime text 2安装包,包管理器将包的内容复制到相关位置并解决依赖问题。
现在我们尝试在文件夹中新建一个opt/-test目录,放置可执行文件,并删除默认的/usr/bin/
现在重新包装
dpkg-deb -b extract build/
安装新的 deb 包
sudo dpkg -i build/proxychains_3.1-7_all.deb
查看包相关文件
sudo dpkg -L proxychains
测试函数是否能够正确执行
由于/opt/-test不在当前环境变量中,所以无法直接执行,APT也无法识别我们安装了这个程序。
通过绝对路径执行可以成功。 现在让我们配置/etc/.conf来测试该功能。
如果我们把配置文件的位置改为/tmp//.conf,程序还能正常执行吗?
卸载
重新解压、修改、打包
结果打包的时候出现了错误。 这说明配置文件中记录了一些元信息。
记录配置文件位置的文件为 //
尝试修改文件内容为/tmp//.conf
成功打包安装测试功能
经过测试发现,虽然安装成功,但是在使用过程中,仍然发现/etc/.conf配置文件。
如何判断文件属于哪个包
dpkg -S xxxx
4)卸载
sudo apt remove nmap
sudo apt purge nmap
软件程序和帮助文档将被删除,但配置文件不会被删除。
purge 会删除配置文件
但是,purge 和 purge 都不会删除该软件程序在用户目录中创建的配置文件。
以鱼为例
~/.local/share/fish/ 是fish的配置文件夹。 现在我们尝试分别使用 purge 和 purge 来卸载fish。
purge和purge都不能删除软件包在用户目录下创建的配置文件。
5) 清理空间
# 删除下载过的所有软件包的安装包
sudo apt clean
# 删除已经过期的软件包的安装包
sudo apt autoclean
# 删除未使用的依赖项,主要是由软件包卸载后,没有其他软件包依赖这些项,于是处于未使用状态
sudo apt autoremove
软件在用户目录下留下的配置项不属于这三者的清理范围。
独立包管理器
包管理也在不断完善。 准确的说,可能是探索。 APT、DNF等包管理器给部分用户留下了依赖解决方案的不完美体验,大家都开始创建新的依赖解决方案。
总体思路是封装程序和一切,使得依赖不再共享,同一个依赖包可以包含不同的版本。
最重要的是,开发人员不再需要为各种包管理器打包并发布单独的包,因此出现了以下具有代表性的独立包管理器; 同时,通过对这些软件包进行虚拟化或者沙箱处理,在安全性方面更加可控
1) 捕捉
Snap是由开发公司,即开发商开发的。 开发snap的目的是创建一个跨平台的解决方案,包括桌面、服务器、IoT,甚至手机,同时兼顾安全性。
如今,snap包管理器基本上可以安装在所有主流的Linux系统上。 过去,官方在推动snap上甚至做出了一些更为激进的举动和决定。
snap的用法与apt类似,只是软件包格式为.snap,部分指令略有不同。
搜索程序
Snap目前只有官方来源,所以不需要配置来源。
sudo snap find nmap
查看节目信息
sudo snap info nmap
安装人员
sudo snap install nmap
更新程序
sudo snap refresh nmap
回滚到之前的版本
sudo snap revert nmap
由于我这里直接安装了最新版本,所以没有回滚版本。
查看已安装的快照
sudo snap list
卸载程序
sudo snap remove nmap
快照文件存储
通过环境变量可以发现与snap直接相关的目录是/snap/bin
查看/snap/可以看到这个目录的介绍
/snap/ 目录是已安装的 snap 包中的文件和文件夹出现在系统上的位置
/snap/bin 该目录存储指向实际 snap 包的链接文件。
/snap//挂载点信息
这里是 nmap,其中 2944
/snap//代表当前版本。 由于snap有版本回滚功能,所以我猜这个文件应该是为版本记录和回滚而准备的。
既然上面我们提到了挂载点,那么我们可以过滤一下挂载信息,看看是否有对应关系。
sudo mount | grep nmap
可以看到目录/snap/nmap/2944其实就是设备的挂载(文件)/var/lib/snapd/snaps/.snap
sudo lsblk -a
这就是snap的工作模式。 .snap快照文件放置在/var/lib/snapd/snaps/下,然后通过块文件挂载的方式挂载到/snap//目录下。
用户使用snap程序生成的数据存储在~/snap目录下,格式与/snap下基本相同。
程序目录控制
snap把程序和它的依赖包打包在一起,通过一个叫的东西给程序分配权限,这就涉及到程序可以访问的路径。 这件事对于安全人员和运维人员来说有着不同的意义。 现在是通过树 这个应用程序可以让你探索这个
安装 tree
sudo snap install tree
查看 tree 这个软件包的 connections
sudo snap connections tree
可以看到tree可以访问的目录包括/home和可移动设备。 目前,/home 上有一个插槽,而可移动设备上没有插槽。 因此,tree可以访问/home目录,但不能访问其他目录。 测试。 一度
可以看出
这样限制了单个程序的目录访问,一定程度上增强了安全性,但易用性却降低了。
程序权限控制
快照相当有趣。 该程序旨在以插槽和插头的形式获取某些系统资源。
所谓插槽sublime text 2安装包,就是系统提供的一些资源,比如文件资源、音频播放、摄像头、网络接口等。插头也是如此,只不过插头和插槽需要连接起来,形成一个接口()允许程序获取此资源。
接口如何使用插头和插座
一般情况下,程序包需要哪些接口已经过审核,可以通过以下命令查看
sudo snap connections nmap
nmap有四个接口,其中三个插在插槽上,这样nmap就有主目录的访问权限,可以使用网络并进行网络绑定。
查看所有插槽
snap connections --all | cut -d " " -f 1 | sort | uniq
现在我想插入最后一个nmap插件
sudo snap connect nmap:network-control :network-control
注意插头和插座名称必须一致。
如果我想将插头插入不存在的系统插槽,会发生什么情况?
以手动分配nmap录音为例
sudo snap connect nmap:audio-record :audio-record
正如您所看到的,对不存在的插头进行操作将会失败。
断开接口也很简单
sudo snap disconnect nmap:network-control :network-control
程序配置项
Snap还提供对需要配置的软件包的支持。 您需要先安装此软件包,然后才能获取、设置和取消设置某些配置项。
以官网为例。 这是一个文件管理和共享工具,类似于百度网盘。
使用快照安装
sudo snap install nextcloud
获取配置信息
sudo snap get nextcloud
配置以key和value的形式显示。 可以看到mode的值为,表示当前处于生产模式。 其他选项如http对应的值为{...},表示有多个配置,下面还有子配置。
以获取到的ports配置项为例
sudo snap get nextcloud ports
根据经验我们可以知道这是配置http和https的端口号
设置配置项
sudo snap set nextcloud ports.https=8443
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码