Linux安装及管理程序
1 Linux应用程序基础
1.1 Linux 命令与应用程序的关系
在 Linux 操作系统中,一直以来命令和应用程序并没有特别明确的区别,从长期使用习惯来看,可以通过以下描述来对两者进行区别:
- 应用程序命令的执行文件大多比较小,通常放置在/bin和/sbin 目录中
- 对于内部命令,常集成在Bash 程序内,而不是独立地执行文件
- 命令文件一般在安装操作系统时一起安装,用于辅助操作系统本身的管理
- 命令行大多适用于“命令字选项参数”形式的一般格式;
- 命令只在字符操作界面中运行
- 应用程序的执行文件通常放在/usr/bin、/usr/sbin/usr/local/bin、/usr/local/sbin等目录中
- 应用程序一般需要在操作系统之外另行安装,提供相对独立于操作系统的功能,有时候等同于“软件”的概念
- 应用程序一般没有固定的执行格式,运行方式由程序开发者自行定义
- 应用程序可能会用到图形界面,形式多样
- 有些应用程序提供的执行文件,能够使用像Linux命令一样的运行格式,所以也经常被称为程序命令。
系统命令 | 应用程序 | |
---|---|---|
文件位置 | 一般在/bin和/sbin目录中,或为Shell内部指令 | 通常在/usr/bin和/usr/sbin目录中 |
主要用途 | 完成对系统的基本管理工作,例如IP配置工具 | 完成相对独立的其他辅助任务,例如网页浏览器 |
适用环境 | 一般只在字符操作界面中运行 | 根据实际需要,有些程序可在图形界面中运行 |
运行格式 | 一般包括命令字、命令选项和命令参数 | 通常没有固定的执行格式 |
- 应用程序被视为将软件包安装到系统中后产生的各种文档,其中包括可执行文件、配置文件、用户手册等内容,这些文档被组织为一个有机的整体,为用户提供特定的功能。
- 因此,对于“安装软件包”与“安装应用程序”这两种说法,并不做严格的区分。
1.2 Linux 应用程序的组成
在Linux 操作系统中,典型的应用程序通常由以下几部分组成:
- 普通的可执行程序文件:一般保存在/usr/bin 目录中,普通用户即可执行
- 服务器程序、管理程序文件:一般保存在/usr/sbin 目录中,只有管理员能执行
- 配置文件:一般保存在/etc 目录中,配置文件较多时会建立相应的子目录
- 日志文件:一般保存在/var/log 目录中
- 关于应用程序的参考文档等数据:一般保存在/usr/share/doc/目录中
- 执行文件及配置文件的 man 手册页:一般保存在/usr/share/man/目录中
文件类型 | 保存目录 |
---|---|
普通执行程序文件 | /usr/bin |
服务器执行程序文件和管理程序文件 | /usr/sbin |
应用程序配置文件 | /etc |
日志文件 | /var/log |
应用程序参考文档文件 | /usr/share/doc/ |
应用程序手册页文件 | /usr/share/man/ |
1.3 软件包的封装类型
对于各种应用程序的软件包,在封装时可以采用各种不同的类型,不同类型的软件包其安装方法也各不相同。
1.3.1 RPM软件包
- 软件包文件的扩展名为“.rpm”,只能在使用RPM(RPM PackageManager,RPM软件包管理器)机制的Linux操作系统中安装,如RHEL、Fedora、CentOS等。
- RPM软件包一般针对特定版本的操作系统量身定制,因此依赖性较强。
- 安装RPM软件包需要使用操作系统中的rpm命令。
1.3.2 DEB软件包
- 种软件包文件的扩展名为“.deb”,只能在使用DPKG(DebianPackage,Debian包管理器)机制的 Linux 操作系统中进行安装,如Debian、Ubuntu等。
- 安装DEB软件包需要使用操作系统中的dpkg命令。
1.3.3 源代码软件包
- 这种软件包是程序员开发完成的原始代码,一般被制作成“.tar.gz” 或“.tar.bz2”等格式的压缩包文件,因多数使用 tar 命令打包而成,所以经常被称为“TarBall”。
- 安装源代码软件包需要使用相应的编译工具,如Linux 中的 C 语言编译器gcc。因此,在安装操作系统的时候尽量勾选“开发工具”一项来安装基本的编译环境。
1.3.4 附带安装程序的软件包
- 这种软件包的扩展名不一,但仍以TarBall 格式的居多。
- 软件包中会提供用于安装的可执行程序或脚本文件,如 install.sh、setup 等,有时候会以“.bin”格式的单个安装文件形式出现。
- 安装时只需运行安装文件就可以根据向导程序的提示完成安装操作。
1.3.5 总结对比
开放源代码的自由软件绝大多数选择以TarBall 的形式发布,而 RPM 软件包、DEB 软件包等则使用了二进制的文件格式,代码相对比较封闭。
文件类型 | 扩展名 |
---|---|
RPM软件包 | 扩展名为“.rpm” |
DEB软件包 | 扩展名为“.deb” |
源代码软件包 | 一般为“.tar.gz”、“.tar.bz2”等格式的压缩包包含程序的原始代码 |
绿色免安装的软件包 | 软件包的扩展名不一,以TarBall格式的居多在压缩包内提供已编译好的执行程序文件解开压缩包后的文件即可直接使用 |
2 Linux源码编译安装
在 Linux 操作系统中搭建一些大型服务时,考虑兼容性与功能的扩展,通常会选择源代码安装软件,其实最早的 Linux 操作系统整体上都是编译安装而成的,文件包格式以.tar.gz和.tar.bz2格式居多。
- 使用源代码安装软件的优点
- 获得最新的软件版本,及时修复bug
- 根据用户需要,灵活定制软件功能
- 应用场合举例
- 安装较新版本的应用程序时
- 当前安装的程序无法满足需要时
- 需要为应用程序添加新的功能时
- 编译安装的基本过程
2.1 实例:安装jdk
- 下载jdk,选择JDK1.8+
https://www.oracle.com/java/technologies/downloads/ - 上传下载好的文件,并解压
rz jdk-8u451-linux-x64.tar.gz
mkdir /usr/local/java
tar -zxvf jdk-8u451-linux-x64.tar.gz -C /usr/local/java - 配置环境变量
vim /etc/profile
JAVA_HOME=/usr/local/java/jdk1.8.0_451
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME
source /etc/profile
4. 测试是否安装成功
java - version
或
javac -version
2.2 安全验证
- 对于从互联网中下载的软件包,建议使用md5sum命令工具检查 MD5 校验和。
- md5sum jdk-8u451-linux-x64.tar.gz
- 将其与软件官方提供的校验值进行比较,若相同则说明该软件包在网络传输过程中没有被非法改动。
- 对于校验和不一致的软件包,应尽量不要使用,以免带来病毒、木马等不安全因素。
3 deb包安装
- Deb包是Debian系列发行版(如Ubuntu、Debian等)中使用的软件安装包格式。
- deb命令是Linux系统中的一个包管理工具,用于安装、更新和卸载deb格式的软件包。
3.1 常用命令
- 安装软件包
dpkg -i package_name.deb - 更新软件包
dpkg -i –force-confmiss package_name.deb - 卸载软件包
dpkg -r package_name - 列出已安装软件包目录
dpkg –list - 查找软件包
dpkg -l package_name
3.2 实例:安装Google
- 下载安装包
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - 安装
dpkg -i google-chrome- stable_current_amd64.deb - 如果出现依赖问题,运行以下命令修复依赖,并重新安装
apt-get install -f
dpkg -i google-chrome- stable_current_amd64.deb - 运行
google-chrome- stable
4 Linux apt命令
- apt(Advanced Packaging Tool)是一个在Debian和 Ubuntu 中的 Shell 前端软件包管理器。
- apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
- apt 命令执行需要超级管理员权限(root)。
- 语法:apt [options] [command] [package…]
- options:可选,选项包括
- -h(帮助)
- -y(当安装过程提示选择全部为"yes")
- -q(不显示安装的过程)等
- command:要进行的操作
- package:安装的包名
- options:可选,选项包括
4.1 apt常用命令
- 安装指定的软件
- apt install <package_name>
- 安装多个软件包
- apt install <package_1> <package_2><package_3>
- 更新的软件包列表
- apt update
- 升级所有可更新的软件包
- apt upgrade
- 更新指定的软件
- apt upgrade <package_name>
- 升级软件包,升级前先删除需要更新软件包
- apt full-upgrade
- 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等
- apt show <package_name>
- 删除软件包
- apt remove <package_name>
- 清理不再使用的依赖和库文件
- apt autoremove
- 移除软件包及配置文件
- apt purge <package_name>
- 查找软件包命令
- apt search
- 列出所有已安装的包
- list --installed
- 列出所有已安装的包的版本信息
- list --all-versions
- 列出可更新的软件包及版本信息
- list --upgradable
4.2 实例
# 安装软件包
apt install lrzsz
# 卸载软件包
apt remove lrzsz
# 更新软件包列表
apt update
# 更新所有软件包
apt upgrade
# 安装软件包,若已存在不升级
apt install lrzsz --no-upgrade
4.3 更换apt镜像源
切换apt命令的镜像源(mirror源)可以通过修改/etc/apt/sources.list文件来实现
修改完毕后执行apt update命令使新配置的镜像源生效(可以同时配置多个镜像源)
4.3.1 阿里云镜像源
- deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
- deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
- deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
- deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
- deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
- deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
- deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
- deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universemultiverse
4.3.2 清华大学镜像源
- deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
- deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
- deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
- deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
- #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
- #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
- #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
- #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
4.3.3 中国科学技术大学镜像源
- deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
- deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiversep deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
- deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
- #deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
- #deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universemultiverse
- #deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universemultiverse
- #deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universemultiverse
4.3.4 网易镜像源
- deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
- deb http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
- deb http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
- deb http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
4.4 PPA 源安装
- PPA 全称为 Personal Package Archives(个人软件包档案),是 Ubuntu Launchpad网站提供的一项服务,当然不仅限于Launchpad 。
- 它允许个人用户上传软件源代码,通过Launchpad进行编译并发布为二进制软件包,作为apt/新立得源供其他用户下载和更新。在Launchpad网站上的每一个用户和团队都可以拥有一个或多个PPA。
- 通常 PPA 源里的软件是官方源里没有的,或者是最新版本的软件。
- 相对于通过 Deb 包安装来说,使用PPA的好处是,一旦软件有更新,通过apt-get upgrade这样命令就可以直接升级到新版本。
- 通常的搜索方法是软件名称关键字+ PPA ,或者也可直接到launchpad.net 上去搜索。
- 搜索到后就可以直接用apt-add-repository命令把PPA源添加到Source list中。
4.4.1 示例:安装FireFox
- FireFox PPA 源:https://launchpad.net/~ubuntu-mozilla-daily/+archive/ppa
- 将源添加到source list中:apt-add-repository ppa:ubuntu-mozilla-daily/ppa
- 更新列表:apt-get update
- 安装:apt-get install firefox-4.0
4.4.2 示例:安装python3.13
- 使用deadsnakes PPA:add-apt-repository ppa:deadsnakes/ppa
- 更新软件包列表:apt update
- 安装:apt install python3.13
- 验证:python3.13 --version
5 Linux RPM软件包管理工具(RedHat)
- rpm(redhat packagemanager)原本是 Red Hat Linux 发行版专门用来管理Linux各项套件的程序,由于它遵循GPL 规则且功能强大方便,因而广受欢迎。
- 逐渐受到其他发行版的采用。RPM套件管理方式的出现,让 Linux 易于安装,升级,间接提升了Linux的适用度。
- 使用 RPM 机制封装的软件包文件拥有约定俗成的命名格式,如下:
- 软件名-软件版本 - 发布次数. 操作系统类型. 硬件架构 类型 .rpm
- 如:bash-4.2.46-20.el7_2.x86_64.rpm
- 其中硬件平台通常为“i386”或“i686”等,表示适用于Intel 公司的处理器,“x86_64”表示适用于64位的系统,如果是“noarch”表示不区分硬件架构(支持不同硬件体系的处理器)
5.1 Linux rpm命令
- Linux rpm 命令用于管理套件,是实现RPM软件包管理的主要工具
- 在Ubuntu系统中需要执行apt install rpm安装rpm
- 执行“man rpm”命令可以获得关于rpm命令的详细帮助信息
- rpm 命令具有非常强大的功能,结合不同的命令选项及子选项主要可以实现以下三类功能:
- 查询、验证 RPM 软件包的相关信息
- 安装、升级、卸载RPM软件包
- 维护 RPM 数据库信息等综合管理操作
5.2 查询RPM软件包信息
- 查询已安装的 RPM软件信息
- rpm -q[子选项] [软件名]
- 常用选项:-qa、-qi、-ql、-qf、-qc、-qd
- 示例
# 查询是否已安装elinks和lynx软件包
rpm -q elinks lynx
# 了解samba-client软件包的摘要信息
rpm -qi samba-client
使用 rpm 命令只能查询通过RPM方式安装的软件包信息,对通过其他途径安装(如源码编译、手动复制等方式)到系统中的软件包,rpm命令则无法获取相关信。
5.3 安装、升级、卸载RPM软件包
- 安装或升级RPM软件
- rpm [选项] RPM包文件
- 常用选项:-i、 -U、 -F
- 卸载指定的RPM软件
- rpm -e 软件名
- 辅助选项
- –force、–nodeps、-h、-v
5.4 维护RPM数据库
- RPM 数据库用于记录在Linux 操作系统中安装、卸载、升级应用程序的相关信息,由RPM软件包管理系统自动完成维护,一般不需要用户干预。
- 当 RPM 数据库发生损坏(可能由误删文件、非法关机、病毒破坏等导致),且Linux 操作系统无法自动完成修复时,将导致无法使用rpm命令正常地安装、卸载及查询软件包。
- 这时可以使用 rpm命令的“–rebuilddb”或“–initdb”功能对 RPM数据库进行重建。
- 重建RPM数据库
- rpm --rebuilddb
- rpm --initdb
- 导入验证公钥
- rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-7
5.5 Linux yum命令
- yum( Yellow dog Updater, Modified)是一个在Fedora 和 RedHat 以及SUSE 中的Shell 前端软件包管理器。
- 基于 RPM 包管理,能够从指定的服务器自动下载RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
- yum语法
- yum [options] [command] [package…]
- options:可选项
- -h(帮助)
- -y(当安装过程提示选择全部为 “yes”)
- -q(不显示安装的过程)等
- command:要进行的操作
- package:安装的包名
- yum clean, yum clean all (= yumclean packages; yumcleanoldheaders) :清除缓存目录下的软件包及旧的headers
- yum常用命令
# 1.列出所有可更新的软件清单
yum check-update
# 2.更新所有软件
yum update
# 3.仅安装指定的软件
yum install <package_name>
# 4.仅更新指定的软件
yum update <package_name>
# 5.列出所有可安裝的软件清单
yum list
# 6.删除软件包
yum remove <package_name>
# 7.查找软件包
yum search <keyword>
# 8.清除缓存# 清除缓存目录下的软件包
yum clean packages
# 清除缓存目录下的headers
yum clean headers
# 清除缓存目录下旧的headers
yum clean oldheaders