Ø 简介
本文主要介绍 Linux 软件包的管理,包括如下内容:
目录
5. RedHat 系脚本安装(Shell 或 Java 脚本)
6. Debian 系 Linux 软件包管理介绍(APT 包管理)
1. wget 命令的使用
wget是Linux下下载文件的最常用命令。wget支持HTTP,HTTPS和FTP协议,支持自动下载,即可以在用户退出系统后在后台执行,直到下载结束。 | |
语法 | wget [选项] [URL] -P 指定下载存储路径; -b 启动后转入后台; -N 只获取比本地文件新的文件; -c 断点续传下载文件。 -S 打印服务器响应,不下载任何文件 --spider 模拟下载,不下载任何文件; --no-check-certificate 不验证HTTPS服务器的证书 |
示例:
#下载nginx
wget -P /opt/soft https://nginx.org/download/nginx-1.18.0.tar.gz
wget --spider http://test.ms.zxsxdd.com #模拟下载(检查网站是否正常)
wget 介绍:
wget 可以跟踪 HTML 页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构,这又常被称作”递归下载”;
wget 非常稳定,它在带宽很窄的情况下,或者网络不稳定的情况下有很强的适应性。如果是由于网络的原因下载失败,wget 会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。
更多使用方法:https://www.cnblogs.com/ftl1012/p/9265699.html
2. RedHat 系使用 RPM 二进制软件包管理
n RPM 的优缺点
1) rpm 在查询上很好的弥补了 yum 的不足,查询速度要比 yum 快很多;
2) rpm 不足的地方是,在解决软件包的依赖关系上,不如 yum 方便。
n RPM 软件包的一个例子:
sudo.1.7.2pl-5.e15.i386.rpm 各部分分别表:
l sudo 表示软件名;
l 1.7.2p1 版本号
l 5.e15 发行号
l i386 硬件平台
l rpm 后缀,表示为RPM包
1) 卸载
# rpm -e sudo #sudo 表示要卸载的软件名称
注意:如果其他软件包有依赖关系,卸载是会产生提示信息,可以使用 –nodeps 选项进行强制卸载,例如:# rpm -e –nodeps samba
2) 安装
# rpm -ivh sudo-1.7.2pl-5.e15.i386.rpm
选项:-i 安装;-v 显示安装时的详细信息;-h 显示安装进度(#号)
1. 从 Linux 系统光盘中安装
挂载光盘:
# mkdir /mnt/cdrom #创建挂载点目录
# mount /dev/cdrom /mnt/cdrom #将 /dev/cdrom 挂载到 /mnt/cdrom
说明:现在访问 /mnt/cdrom 这个目录,就相当于访问光盘上的 /dev/cdrom
# ls -l | grep sudo #在 /mnt/cdrom/Packages 目录下查找 sudo 软件包
# rpm -ivh sudo-1.8.23-3.el7.x86_64.rpm #安装 sudo 软件包
[root@localhost Packages]# rpm -q sudo #查看软件包是否安装
[root@localhost Packages]# rpm -qa | grep samba #查看所有安装的软件包中指定的软件包
2. 其他安装选项
1) 不安装文档文件
[root@localhost Packages]# rpm -ivh --excludedocs sudo-1.8.23-3.el7.x86_64.rpm #不安装软件包中的文档文件(说明文档、帮助文档等)
2) 指定安装目录
[root@localhost Packages]# rpm -ivh --prefix=/usr/local/sudo sudo-1.8.23-3.el7.x86_64.rpm #指定安装包的安装目录
注意:
1. 在 Linux 中,大多数 RPM 包都不允许指定安装目录,因为在很多 rpm 包的作者在生成 rpm 包时,都已经规定好 rpm 软件包的存放位置;
2. 这样会不会管理很麻烦,或者卸载不干净?是不会的,安装后并不会向 Windows 一样会有注册表、或存储在其他位置,导致卸载不不干净。Linux 卸载时也会卸载对应的安装目录,这个不用担心。
3) 测试安装
[root@localhost Packages]# rpm -ivh --test sudo-1.8.23-3.el7.x86_64.rpm #只对安装进行测试,并不是实际安装
说明:比如测试是否已经安装、是否会冲突、是否存在依赖等。
4) 软件包已被安装
[root@localhost Packages]# rpm -ivh --replacepkgs sudo-1.8.23-3.el7.x86_64.rpm #覆盖安装该软件包
5) 文件冲突
[root@localhost Packages]# rpm -ivh --replacepkgs --replacefiles sudo-1.8.23-3.el7.x86_64.rpm #如果要安装的软件包中有一个文件以及在安装其它软件包是安装,解决文件冲突时可以使用 --replacefiles 选项,可以忽略该错误信息。
6) 未解决依赖关系
RPM 软件包可能依赖于其他软件包,在安装了特定的软件包之后才能安装该软件包。
[root@localhost Packages]# rpm -ivh --replacepkgs --nodeps sudo-1.8.23-3.el7.x86_64.rpm
说明:如果不考虑依赖关系,强行安装可以使用 --nodeps 选项,但是安装后该软件包可能不能正常运行。
3) 升级
[root@localhost Packages]# rpm -Uvh sudo-1.8.23-3.el7.x86_64.rpm
注意:
1. 首先需要将新版本的软件包下载下来;
2. 指定升级的软件包应该比当前的软件包版本更高。
4) 查询【选项】
1. -p 查询软件包
# rpm -q sudo
注意:只能查询二进制软包,不能查询源代码包和脚本安装的软件。
2. -a 查询所有已安装的软件包
# rpm -qa
3. -f 查询文件(文件、命令、配置文件等)所属的软件包
# rpm -qf /etc/services #查看配置文件软件包
# rpm -qf /bin/ls #查看命令所属软件包
4. -i 查询已安装的软件包信息
# rpm -qi sudo
5. -p 查询未安装的软件包信息
# rpm -qip sudo-1.8.23-3.el7.x86_64.rpm #因为还未安装,所以需要写上软件包的全称
6. -l 查询软件包中的文件列表
# rpm -ql sudo #查询已安装软件包的安装目录和文件
# rpm -qlp sudo-1.8.23-3.el7.x86_64.rpm #查询未安装软件包的安装目录和文件
提示:在 Linux 相同类型的文件都存放在同一目录下,例如:
/etc/ 一般用于存放配置文件
/usr/bin/ 或者 /usr/sbin/ 一般用于存放命令文件
/usr/libexec/ 一般用于存放库文件
/usr/share/doc/ 一般用于存放文档文件
/usr/share/man/ 一般用于存放帮助文件
/var/ 一般用于存放临时文件
7. -d 查询被标注为文档的文件列表(与 -l 相比,可以看做是分类查询)
# rpm -qd sudo #查询已安装的
# rpm -qdp sudo-1.8.23-3.el7.x86_64.rpm #查询未安装的
8. -c 查询被标注为配置文件的文件列表(与 -l 相比,可以看做是分类查询)
# rpm -qc sudo #查询已安装的
# rpm -qcp sudo-1.8.23-3.el7.x86_64.rpm #查询未安装的
示例1:查看一个服务的软件包信息
# ls /etc/rc.d/init.d
functions msg.script netconsole network README
# rpm -qf /etc/rc.d/init.d/functions
initscripts-9.49.46-1.el7.x86_64
# rpm -qip /etc/rc.d/init.d/functions
示例2:查看 vim 软件包的示例文件(寻找 ~/.vimrc 文件注释问题)
# rpm -qa | grep vim #查找 vim 的安装包
# rpm -ql vim-common | grep example #查找 vim 的示例文件
# more /usr/share/vim/vim74/vimrc_example.vim #查看 vim 示例文件内容
可以看到,示例文件中并不是以 # 号注释,而是使用"(双引号)
5) 校验
校验的作用:解决比如黑客侵入系统,获取其他人将软件文件修改,删除,导致软件运行不了。这时就需要使用到校验功能。
语法:# rpm -V 软件名称
示例:
# rpm -V sudo #首先校验 sudo 软件包(无返回内容)
说明:在无任何改动的情况下,是不没有返回内容的(这是正常的)
# vi /etc/pam.d/sudo #模拟将 sudo 的配置文件进行修改
# rpm -V sudo #再次校验 sudo 软件包
S.5....T. c /etc/pam.d/sudo #返回内容
n 以上值分别代表的改变项:
1. 5 文件的 md5 校验值
2. S 文件的大小
3. L 链接文件
4. T 文件的创建或修改时间
5. D 设备文件
6. U 文件的用户
7. G 文件的用户组
8. M 文件的权限
说明:为什么 RPM 软件包可以校验?是因为 rpm 软件包安装到系统后,会自动生成一个 rpm 库,校验时会与 rpm 库进行比较,得出校验的值。
6) 软件包文件提取
如果不小心把系统中的配置文件或命令删除掉了,可以通过软件包文件提取的方式,恢复丢失的文件。
示例:将 sudo 中的 sudo-i 配置文件删除后,再从软件包中恢复。
# rpm -ql sudo | grep etc #查找 etc 下的配置文件
/etc/pam.d/sudo-i #以 sudo-i 为例
# rm -f /etc/pam.d/sudo-i #删除 sudo-i
# rpm -q sudo #确定 sudo 属于哪个软件包
sudo-1.8.23-3.el7.x86_64
[root@localhost /]# mkdir backup #创建解压目录
[root@localhost backup]# rpm2cpio /mnt/cdrom/Packages/sudo-1.8.23-3.el7.x86_64.rpm | cpio -idv ./etc/pam.d/sudo-i #解压到当前目录(/backup/etc/pam.d)
[root@localhost backup]# cp etc/pam.d/sudo-i /etc/pam.d/sudo-i #拷贝恢复文件
[root@localhost /]# rm -rf backup #删除临时目录
3. RedHat 系使用 YUM 二进制软件包管理
n YUM 的优缺点
1) 自动解决软件包的依赖关系;
2) 方便软件包的升级(不需要手动下载软件包,可以自动在 yum 源中下载);
3) 安装的软件包是 yum 源官方的,是可以信赖的。如果自己去网站中下载,软件包中可能植入木马,是不安全的。
4) 缺点是,yum 在查询软件包信息时比较慢,这是可以采用 RPM 来弥补。
1) 安装
# yum install sudo #自动安装 sudo 软件包
# yum -y install tree #当安装过程提示选择全部为"yes"
注意:因为 yum 是在互联网寻找软件包的源,所以必须是联网的。
2) 检测升级
# yum check-update sudo #指定检测 sudo 软件包是否升级,如果不指定将检测所有软件包。如果有可用的新软件包将会显示,否则不会显示
说明:为什么要升级软件包呢?因为软件包可能存在一些漏洞或BUG,这些漏洞可能照成黑客的侵入,所以有必要升级为最新的软件包。
3) 升级
# yum update sudo #升级 sudo 软件包
# yum -y update #升级所有包同时也升级软件和系统内核
# yum -y upgrade #只升级所有包,不升级软件和系统内核
4) 查询软件包
# yum list | more #查询 yum 源中所有的软件包
# yum list | grep sudo #查询 yum 源中 sudo 软件包的安装信息
或者
# yum list sudo #查询 yum 源中 sudo 软件包的安装信息
sudo.x86_64 1.8.23-4.el7_7.2 @updates
@updates 处可能包含的值(带有@表示已更新或已安装):
l updates: 未安装
l installed: 已安装
l @updates: 已更新
l base: Linux 自带的软件包(已安装)
l extras: Linux 自带的软件包(未安装)?
l @anacond: Linux 自带的软件包(已更新)?
5) 查看软件包
yum info sudo #查看软件包信息
yum list | grep libgdiplus #查看软件包安装位置
rpm -ql libgdiplus-devel.x86_64
6) 卸载
yum remove sudo
7) 帮助
yum -help
man yum
4. RedHat 系源代码包安装
n 源代码包的特点
1) 二进制包在安装和使用比较简单,但是二进制包并没有提供给使用者提供更多的空间,导致使用者很难去配置,或指定安装目录。
2) 而源代码包可以指定很多的设置和选项,或者去修改源代码,在很多知名软件中都是直接提供源代码包的,灵活度和定制型非常高,使用者可以自己去增加或去掉一些功能。
3) 因为是源代码包,是在安装时才进行编译安装,与二进制包相比,它可以支持更多的 CPU 和操作系统。
1) 安装示例(proftpd)
1. 第一步:下载源代码包
2. 第二步:下载后上传至系统 /home/abream/learn 目录下
/home/abream/learn/proftpd-1.3.6c.tar.gz
分别表示:proftpd 软件名称;1.3.6c 版本号;tar.gz 压缩格式
3. 第三步:解压缩到当前目录
[root@localhost learn]# tar -xzvf proftpd-1.3.6c.tar.gz
4. 第四步:进入到解压目录(proftpd-1.3.6c)
[root@localhost proftpd-1.3.6c]# ls
标准的源代码包中都会有一个 configure 的可执行脚本。
5. 第五步:配置
与 rpm 二进制包不一样,源代码包没有专门的卸载命令,所以安装前建议指定安装目录。通常情况下,源代码包建议安装在 /usr/local 目录下,然后再加一个以软件名命名的目录,例如:/usr/local/proftpd
[root@localhost proftpd-1.3.6c]# ./configure --prefix=/usr/local/proftpd
以上提示错误信息:表示在系统的 $PATH (缺省路径)中,没有找到 C 的编译器,配置终止了。如果存在其他错误,注意看提示信息!如果存在缺少的软件包,安装上即可。
C 编译器广泛采用的是 gcc,下面就安装下 gcc 的编译器。而 gcc 依赖于很多库文件,所以建议采用 yum 来进行安装。
[root@localhost proftpd-1.3.6c]# yum install gcc
提示:
1) 因为源代码是 C 语言写的,所以必须有一个 C 的编译器才能安装;
2) C 编译器装 cc 或者其他的都是可以的,只是 gcc 用的比较广泛。
gcc 安装完成后,再次执行配置
[root@localhost proftpd-1.3.6c]# ./configure --prefix=/usr/local/proftpd
显示以上提示,表示配置这个步骤已经完成了。
6. 第六步:编译
[root@localhost proftpd-1.3.6c]# make
编译成功后,会在当前目录中生成对应的可执行文件,提供按安装。
7. 第七步:编译安装
[root@localhost proftpd-1.3.6c]# make install
安装完成后,可以在安装目录下查看到安装目录和文件:
提示:
1) 直到这一步才真正将源代码包安装完成;
2) 最后一步(安装),其实就是将编译好的文件,拷贝到对应的目录中。
2) 卸载示例(proftpd)
# kill `pgrep proftpd` #关闭 proftpd 的进程
# rm -rf /usr/local/proftpd #删除安装的目录即可
5. RedHat 系脚本安装(Shell 或 Java 脚本)
因为源代码包安装比较复杂,所以有些公司推出脚本安装的方式(比如:webmin),这种方式与 Windows 安装软件没多大区别。脚本安装分为两种,一种是 Shell 脚本(webmin),另一种是 Java 脚本(如:OpenOffice)(Java 脚本采用图形安装)。
1) 安装示例(webmin(Shell 脚本安装示例))
远程管理 Linux 除了使用命令行工具(如:Xshell、SecureCRT、putty),和图形管理工具(如:WinSCP、XManager)。
而 webmin 是一个介于两则之间的远程管理工具,采用浏览器来远程管理操作系统,它是一种图形化的操作。在业界是比较有名的,强大的远程管理工具。
1. 第一步:下载软件包
下载地址:http://webmin.com/
2. 第二步:下载后上传至系统 /home/abream/learn 目录下
/home/abream/learn/webmin-1.941.tar.gz
3. 第三步:解压缩到当前目录
[root@localhost learn]# tar -xzvf webmin-1.941.tar.gz
4. 第四步:查看安装说明文件
[root@localhost webmin-1.941]# ls -l | grep README
-rw-rw-r--. 1 3001 wheel 3801 1月 15 08:06 README.md
[root@localhost webmin-1.941]# cat README.md
在 Linux 中,如果不是标准的源代码安装方式,那么一定有一个说明文档,比如:README(请先读我)、INSTALL(安装说明)
5. 开始安装
[root@localhost webmin-1.941]# ./setup.sh #执行安装脚本
说明:确定配置文件目录,不改直接回车,如果要改则输入指定的目录。
说明:因为 webmin 是使用 perl 语言写的,安装会检查是否 perl 语言,如果没有安装将会终止。
说明:指定 webmin 的端口,例如:web service:80,ftp:20或21,ssh:22
安装过程中,会生成卸载 webmin 的脚本,后续需要卸载直接执行该脚本即可。
注意:当完成以上设置后,后续的编译安装过程都是自动完成的。
安装完成!用户名:admin,密码:admin
6. 访问 webmin
本机访问:http://localhost.localdomain:10000/
局域网访问:http://192.168.1.150:10000/
局域网如果无法访问,需要打开防火墙:
1) 进入 /etc/sysconfig/ 目录
2) 将端口加入信任规则中,执行命令:
iptables -I INPUT -p TCP –dport 10000 -j ACCEPT
2) 卸载示例(webmin)
# /etc/webmin/uninstall.sh #执行卸载脚本
6. Debian 系 Linux 软件包管理介绍(APT 包管理)
1. 搜索软包 apt-cache search
2. 软件包信息 apt-cache show
3. 安装 apt-get install(reinstall、-f)
4. 删除 apt-get remove(autoremove、--purge)
5. 更新软件源 apt-get update
6. 更新已安装包 apt-get upgrade