Package and Software Management
Windows软件包类型
- Windows常见的软件包格式是.exe(可执行文件),包含计算机执行的指令和程序资源。
- MSI文件是微软安装包,配合Windows Installer管理程序的安装、维护和卸载。
安装方式与选择
- EXE文件可作为启动Windows Installer的引导程序,也可作为自定义安装程序独立运行。
- 使用MSI文件和Windows Installer适合标准安装,定制安装则用自定义EXE安装程序。
Windows Store与APPX包
- Windows 8引入Windows Store,提供通用Windows平台应用,使用APPX格式打包。
命令行安装软件
- 命令行安装适用于自动化和批量安装,运行EXE文件或安装程序时可带参数实现静默安装等功能。
- 不同软件安装程序支持的命令行参数不同,常用“/?“查看帮助,具体参数需参考厂商文档。
Linux软件包类型
- 不同Linux发行版使用不同的软件包类型,例如Red Hat使用RPM包,Ubuntu使用Debian包(.deb文件)。
- 本课程重点介绍Debian包的管理方法。
安装和卸载Debian包
- 使用dpkg命令安装Debian包,命令格式为dpkg -i <package.deb>。
- 卸载软件包使用dpkg -r <package_name>命令。
查询已安装的软件包
- 使用dpkg -l命令列出所有已安装的软件包。
- 结合grep命令可以搜索特定的软件包,例如dpkg -l | grep atom用于查找名为atom的软件包。
归档文件的定义与类型
- 归档文件是将一个或多个文件压缩成一个文件的形式,常见类型有.tar、.zip和.rar。
- 归档文件不仅用于软件源代码,也可用于存储图片、音乐等各种文件。
归档文件的操作方法
- 安装软件时,需先解压归档文件,然后根据软件语言选择安装方法。
- Windows中常用的开源工具7-Zip可以方便地进行归档和解压操作。
命令行操作归档文件
- PowerShell 5.0及以上版本支持通过命令行压缩和解压归档文件。
- 例如,使用Compress-Archive命令可以将文件夹内容压缩成.zip文件,便于传输和管理。
Use PowerShell to Archive or Zipped
7-Zip和tar命令的使用
- 7-Zip在Linux中对应的包是p7-zip-for,使用命令7z加上参数e来解压文件。
- tar命令是大多数Linux发行版默认安装的归档工具,常用于处理各种类型的归档文件。
软件包与依赖关系
- 软件包通常依赖其他代码库才能正常运行,例如游戏依赖物理引擎和渲染库。
- 依赖关系意味着一个程序需要其他软件组件(如动态链接库DLL)来提供功能。
Windows中的共享库与安装
- DLL是Windows中共享代码的方式,多个程序可以共用同一个DLL,节省内存。
- Windows安装包通常包含所有依赖和一个MSI文件,安装程序负责管理这些依赖。
解决DLL地狱问题的机制
- 过去不同程序更新同一DLL可能导致冲突,称为“DLL地狱”。
- 现代Windows通过“并行程序集”(Side-by-Side Assemblies,SXS)管理多个版本的共享库,避免冲突。 应用程序通过清单文件(manifest)指定所需库,Windows从winsxs文件夹加载对应版本。
Windows包管理工具的使用
- Windows PowerShell提供包管理命令(如Find-Package和Install-Package)来查找和安装软件及其依赖。
- 需要先注册软件源(如Chocolatey)才能找到更多软件包。 通过包管理器可以方便地安装和维护软件及其依赖,提升系统管理效率。
动态链接库(DLL)文件及其作用
- DLL文件包含可重用的编程模块,多个应用程序可以共享同一个DLL文件,从而节省磁盘空间和内存,提高操作系统和应用程序的运行效率。
- 常见的DLL类型包括设备驱动(.drv)、ActiveX控件(.ocx)和控制面板文件(.cpl),应用程序可以按需加载DLL模块,减少内存占用。
DLL依赖关系及其问题
- 应用程序对DLL文件的依赖可能因覆盖、删除或升级DLL文件而被破坏,导致应用程序无法正常运行,这种情况被称为“DLL地狱”。
- 版本回滚也可能引发问题,即安装旧版本应用时覆盖了新版本DLL,导致新应用失败。
微软解决DLL依赖问题的方法
- Windows文件保护机制限制只有带有有效数字签名的应用才能更新或删除系统DLL文件。
- 私有DLL机制为应用创建私有DLL副本,避免共享DLL的更改影响应用。
- .NET框架通过程序集版本控制解决“DLL地狱”,允许多个版本的DLL共存,存放在全局程序集缓存(GAC)中。
并行程序集和清单文件
- 并行程序集是运行时可用的公共或私有资源集合,包含XML格式的清单文件,存储应用配置和依赖信息,替代传统的Windows注册表。
- 清单文件中包含文件命名、资源集合、类和依赖关系等元数据,帮助IT支持人员在排查应用问题时定位配置来源。
软件包依赖问题
- 安装Google Chrome时出现依赖错误,提示缺少libappindicator1包。
- 依赖包是指一个软件运行所需的其他软件包或共享库。
依赖问题的挑战
- 使用独立的包安装工具(如dpkg)不会自动安装依赖包。
- 依赖包可能不止一个,有时多达十个,手动安装非常繁琐。
解决方案:包管理器
- 包管理器可以自动处理依赖关系,简化软件安装和卸载过程。
- 了解包管理器的作用有助于更高效地管理Linux软件包。
Linux软件包及依赖关系
- Linux软件包是包含软件应用所需文件的压缩档案,常见格式有.deb(Debian包)、.rpm(RedHat包)等。
- 软件包可能依赖其他包(依赖关系),包管理器负责自动处理这些依赖,确保软件正常安装和运行。
Debian及其包管理工具
- Debian是一个流行的Linux发行版,Ubuntu等系统基于它构建。
- dpkg是Debian系统中用于安装、管理和删除软件包的基础命令行工具。
dpkg命令的常用操作
- 安装软件包:sudo dpkg --install packagename
- 删除软件包:sudo dpkg --remove packagename
- 完全清除软件包及其文件:sudo dpkg --purge packagename
- 查询已安装包列表和包内文件信息等。
其他Debian包管理工具
- APT(Advanced Package Tool)是dpkg的前端,能自动处理依赖关系。
- 还有图形界面工具如Synaptic、Ubuntu Software Center,以及命令行工具aptitude和KPackage,方便用户管理软件包。
包管理器的作用
- 包管理器自动化软件的安装、卸载、更新及依赖关系管理,简化了传统手动下载安装程序的繁琐步骤。
- 传统安装方式需要用户访问网站下载安装包,更新和卸载过程也较为分散和复杂。
Windows上的包管理器Chocolatey
- Chocolatey是一个第三方Windows包管理器,基于PowerShell,支持从公共仓库安装各种软件包。
- 用户可以添加缺失的软件包到公共仓库,或创建私有仓库用于内部应用管理。
Chocolatey的使用方法
- 可以通过安装Chocolatey命令行工具直接在PowerShell中使用,或通过PowerShell的包管理功能指定Chocolatey源。
- 使用Find-Package命令查找软件包,Install-Package命令安装软件及其依赖,Get-Package命令验证安装,Uninstall-Package命令卸载软件。
APT包管理工具的功能
- APT简化了软件包的安装过程,自动处理依赖关系,方便查找和清理软件包。
- 通过命令如sudo apt install gimp安装软件,sudo apt remove gimp卸载软件,APT会自动管理相关依赖。
软件包仓库与源配置
- 软件包仓库是存放软件包的服务器,Ubuntu通过/etc/apt/sources.list文件管理仓库源。
- 个人包档案(PPA)是特殊的仓库,允许开发者发布软件,但使用时需注意安全性和可靠性。
软件包更新管理
- 使用apt update命令更新仓库中的软件包列表,确保获取最新的软件信息。
- 使用apt upgrade命令升级系统中已安装的过时软件包,保持系统软件最新。
- 通过apt --help可以查看更多APT命令的用法和功能。
Linux PPAs Linux open-source graphical editor GIMP
工具与进一步探索
- Orca.exe是微软提供的工具,允许用户查看和编辑MSI安装包,适合对安装包细节感兴趣的用户。
- 该工具是Windows软件开发工具包(SDK)的一部分,使用门槛不高,适合非程序员探索安装包内容。
Linux软件安装的基本流程
- 软件可以直接从源代码安装,不同编程语言的编译方式不同。
- 以一个简单的软件包为例,软件包通常包含源码、安装脚本和README文件。
安装脚本的作用
- 安装脚本负责执行安装任务,如编译代码、复制可执行文件到系统目录。
- 脚本内容由软件开发者决定,可能包括创建文件夹、更新目录等操作。
设备驱动程序和设备管理
- 驱动程序是帮助硬件设备与操作系统交互的软件。
- Windows通过设备管理器(Device Manager)集中管理所有设备和驱动程序,用户可以通过运行命令devmgmt.msc或右键“此电脑”选择管理进入设备管理器。
设备识别与驱动安装过程
-
Windows使用即插即用(Plug and Play)系统自动检测新硬件设备。
-
新设备会提供一个硬件ID,Windows根据该ID在本地驱动库、Windows更新或安装盘中查找合适的驱动程序并自动安装。 设备管理器的功能
-
设备管理器按类别显示设备,用户可以展开查看具体设备。
-
通过右键菜单,用户可以卸载、禁用、更新驱动程序,检测硬件更改,以及查看设备和驱动的详细信息(如制造商和驱动版本)。
Linux设备管理基础
-
在Linux中,所有硬件设备都被视为文件,连接的设备会在/dev目录下生成对应的设备文件。
-
设备文件分为字符设备(如键盘、鼠标,按字符传输数据)和块设备(如硬盘、U盘,按数据块传输数据)。 常见设备文件及其标识
-
通过ls -l命令可以看到文件类型,字符设备用C表示,块设备用B表示,普通文件用-表示,目录用D表示。
-
以/dev/sd开头的设备文件通常是大容量存储设备,后面的字母表示设备的检测顺序。 Linux设备驱动和内核模块
-
设备驱动不存储在/dev目录,很多驱动集成在Linux内核中,内核负责硬件交互。
-
对于内核未内置支持的设备,可以通过安装内核模块(kernel module)来扩展内核功能,模块安装方式类似普通软件安装。

Linux内核版本查看与作用
- 内核是操作系统的核心组件,负责控制系统的基本功能。
- 使用命令 uname -r 可以查看当前运行的内核版本。
软件包更新与内核升级
- apt update 命令用于更新软件包的源信息。
- apt full-upgrade 命令可以升级所有软件包,包括内核,安装最新的安全补丁和功能更新。
系统重启与验证
- 升级内核后需要重启系统以应用新内核。
- 重启后再次使用 uname -r 命令确认内核版本已更新。


