linux介绍
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统
Linux的发行版本
Linux有上百种不同的发行版,其中大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本。如基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux,和基于社区开发的debian、archlinux等。前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。
Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。
Debian,或者称Debian系列,包括Debian和Ubuntu等,我们所用的kali也属于这个系列。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由Ian Murdock于1993年创建。Debian最具特色的是apt-get / dpkg包管理方式。
在实际使用中,所感受到的最大差别应是两个体系在安装软件时所用的软件包的安装方式不同,例如redhat的yum与RPM,debian的apt-get与dpkg。有关这方面知识我们会在下节课详述。
除了这具有代表性的两大体系外,Linux发行版还有其他体系,例如Slackware系的SUSE Linux。我们的教程主要使用的是redhat与debian系。
Debian体系的软件安装
在前文中,我们了解到linux系统的发行版主要分为debian和redhat两个体系。
两个体系最直观的不同是软件安装命令的不同。这一节,我们要来学习debian体系的软件安装。
前文我们使用的Kali系统,就以本节所介绍的命令来管理软件的安装与卸载。
dpkg命令
dpkg
是为"Debian"操作系统专门开发的套件管理系统,用于软件的安装,更新和移除。能被dpkg
命令安装的软件包一般以.deb
为文件后缀。
dpkg -i # 安装软件包
dpkg -r # 移除软件(保留配置)
dpkg -P # 移除软件(不保留配置)
dpkg -c # 列出deb包的内容
dpkg -l # 配合|grep,查找主机包
dpkg -s # 查找包的详细信息
dpkg -L # 查看已安装的软件包,都存在系统哪有文件
dpkg -S # 显示指定包的状态信息
apt命令
apt
是一个在Debian中的Shell前端软件包管理器。
apt
命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
apt
命令执行需要超级管理员权限(root)
源配置
apt
命令更新和安装软件包是从软件安装源中请求的,源的通俗理解就是一些deb包位置都给你罗列出来,形成依赖。
kali系统的源文件在/etc/apt/sources.list
。
常见的kali源:
#官方源
deb http://http.kali.org/kali kali-rolling main contrib non-free
#中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
#阿里云
#https://developer.aliyun.com/mirror/ 官方源地址,如果下面的源失效可以去该地址找
deb http://mirrors.a/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
#清华大学
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
可以编辑/etc/apt/sources.list
文件,将源切换成需要的源。
修改之后,需要通过apt update
或者apt-get update
命令来更新源。
如果更新源的过程中失效了就apt-get clean all
然后再去切换源再执行上述命令更新
apt命令
apt-get install #安装软件包 可以-y自动确定
apt-get remove #仅卸载软件,但是并不卸载配置文件
apt-get purge #卸载指令,同时卸载相应的配置文件
apt-get update #将所有包的来源更新(更新源)
apt-get upgrade #将系统中旧版本的包升级成最新的,某种意义上和更新操作系统一样,kali上慎用
apt-cache search #用关键字搜索包
apt-cache show #显示特定包的基本信息
apt-cache depends #列出包的依赖
apt-get clean #清理本地包占用的磁盘空间(/var/cache/apt/archives)
apt-get autoremove #卸载软件的时候同时卸载那些当初作为依赖但是现在并不需要的包
小结
两者的使用是区分应用场景的,apt-get更方便,通常情况下就使用apt就可以,但是有的包并没有被收录到源里面,这时候我们就需要去下载包用dpkg安装
redhat体系的软件安装
rpm命令
rpm
命令用于管理软件。rpm原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。能被rpm
命令安装的软件包一般以.rpm
为文件后缀。
常见命令
rpm -ivh [package_name] #安装软件包,i参数是安装,vh可以显示信息以及详细的进度条
rpm -evh [package_name] #卸载软件
rpm -qlp *.rpm #列出rpm包的内容
rpm -qa |grep [字符串] #在已安装的所有软件中查询包含某字符串的软件版本
rpm -ql [软件名] #列出该软件所有文件与目录所在的完整文件名
rpm -qc [软件名] #列出软件的所有设置文件
rpm -qR [软件名] #查询某软件依赖的其他软件
rpm -qf [文件名] #查询文件属于哪个软件包
yum命令
yum
命令是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令。和Debian体系的apt命令有异曲同工之妙
yum源配置
同apt命令一样,yum
依然从源获取软件。在centos中yum源文件存储在/etc/yum.repos.d
目录中,apt是把所有的deb都写到一个源文件里面,而yum是一个rpm写一个repo文件。
repo文件实例:
[baseos]
name=Rocky Linux $releasever - BaseOS
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever
#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
具体的换源过程可以参考:
https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11XvjSRf
epel源是redhat系比较常用的源。
EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux.
安装epel源只需要安装一个叫”epel-release”的软件包,这个软件包会自动配置yum的软件仓库。
命令为:dnf install -y epel-release
yum命令
yum makecache #更新源(安装新源后执行)
yum clean all #清除缓存目录(/var/cache/yum)下的软件包及旧的headers
yum list |grep #显示所有已经安装和可以安装的程序包
yum info [package-name] #显示安装包信息
yum -y install [package-name] #安装软件,默认选yes
yum remove [package-name] #卸载
yum deplist rpm #查看程序rpm依赖情况
yum update #更新全部软件包
yum group list #列出组
yum group install "Security Tools" #安装‘Security Tools’软件组
yum search #检索安装包
dnf命令
DNF
是新一代的rpm软件包管理器。它正在逐步取代yum
命令。
dnf repolist #该命令用于显示系统中可用的 DNF 软件库
dnf repolist all #该命令用于显示系统中可用和不可用的所有的 DNF 软件库
dnf list #用户系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包
dnf list installed #该命令用于列出所有安装了的 RPM 包
dnf list available #用于列出来自所有可用软件库的可供安装的软件包
dnf search [pakage] #用该命令来搜索软件包
dnf provides /bin/bash #查找某一文件的提供者
dnf info nano #查看软件包详情
dnf install [pakage] #安装软件包
dnf update systemd #该命令用于升级指定软件包
dnf check-update #该命令用于检查系统中所有软件包的更新
dnf update #该命令用于升级系统中所有有可用升级的软件包
dnf remove [pakage] #删除系统中指定的软件包
dnf autoremove #删除无用孤立的软件包
dnf clean all #删除缓存的无用软件包
dnf history #查看您系统上 DNF 命令的执行历史
dnf grouplist #该命令用于列出所有的软件包组
dnf groupinstall ‘Educational Software’ #该命令用于安装一个软件包组
dnf groupupdate ‘Educational Software’ #升级一个软件包组中的软件包
dnf groupremove ‘Educational Software’ #该命令用于删除一个软件包组
dnf reinstall [pakage] #该命令用于重新安装特定软件包