首页 > 编程语言 >安装及管理程序

安装及管理程序

时间:2023-07-23 16:45:46浏览次数:29  
标签:管理程序 安装 tree 软件包 root rpm localhost

Linux应用程序基础

应用程序与系统命令的关系

角色系统命令应用程序
文件位置 一般在/bin和/sbin目录中,或为Shell内部命令 通常在/usr/bin和/usr/sbin目录中
主要用途 完成对系统的基本管理工作,例如IP配置工具 完成相对独立的其他辅助任务,例如网页浏览器
使用环境 一般只在字符操作界面中运行 根据实际需要,有些程序可在图形界面运行
运行格式 一般包括命令字、命令选项和命令参数 通常没有固定的执行格式

操作系统提供平台,系统命令(内部命令)来管理系统,应用程序(外部命令)来完成特定任务。

源代码要借助bash运行

/usr/bin

/usr/sbin

放命令

常见的软件包封装类型

文件类型保存目录
RPM软件包 扩展名为“.rpm”
DEB软件包 扩展名为".deb"
源代码软件包 一般为“tar.gz"、"tar.bz2"等格式的压缩包包含程序的原神代码
绿色免安装的软件包 软件包的扩展名不一,以TarBall格式的居多在压缩包内提供已编译好的执行程序文件解开压缩包后的文件即可直接使用

 

RPM软件包管理工具

Red-Hat Packet Manager

由Red Hat公司提出,被众多Linux发行版所采用

  • 建立统一的数据库文件

  • 详细记录软件包安装、卸载等变化信息

  • 自动分析软件包依赖关系

作用:RPM常用于查询是否安装该软件

一般命名格式:bash-4.1.2-15.el6_4.x86_64.rpm

bash shell环境 版本信息 4.1.2 15发布次数 x86_64硬件(为“i386”或“i686”等)

rpm命令功能

查询、验证RPM软件包的相关信息——常用

安装、升级、卸载RPM软件包——安装略麻烦,不常用

维护RPM数据库信息等综合管理操作——我们不需要维护数据库

rpm命令的格式

查询

  • 查询已安装的RPM软件信息:

rpm -q[子选项] [软件名]

常用选项:-qa、-qi、-ql、-qf、-qc、-qd

  • 查询未安装的RPM软件包文件中信息:

rpm -qp[子选项] RPM包文件

常用选项:-qpi、-qpl 、-qpc 、-qpd

选项功能效果
rpm -qa(all) 显示当前系统中以 RPM 方式安装的所有软件列表
rpm -q 软件名 查询指定软件是否已安装
rpm -qi 软件名 查看指定软件包的名称、版本、许可协议、用途描述等详细信息
rpm -ql(list) 软件名 显示指定的软件包在当前系统中安装的所有目录、文件列表
rpm -qc (configfiles ) 软件名 列出已安装的指定软件的配置文件
rpm -qd(docfiles) 软件名 列出已安装的指定软件的软件包文档所在位置
rpm -qR (requires) 软件名 列出已安装的指定软件的依赖的软件包及文件
rpm -qf(file) 软件名 查看指定的文件或目录是由哪个软件包所安装的
rpm-qpd 查询未安装指定软件包的文档位置
rpm -qpi 查询未安装指定软件包的完整名称详细信息
rpm -qpl 查询未安装指定软件包的文件列表
rpm -qpc 查询未安装指定软件包的配置文件位置

例子:

 
  1 [root@localhost system]# rpm -qa
  2  #查询所有的已rpm方式安装的软件列表
  3  ​
  4  [root@localhost data]# rpm -q httpd
  5  #查看httpd有没有安装
  6  httpd-2.4.6-67.el7.centos.x86_64
  7  ​
  8  [root@localhost data]# rpm -qi httpd
  9  [root@localhost data]# rpm -qi tree 
 10  #查看httpd的详细信息
 11  ​
 12  [root@localhost data]# rpm -ql httpd
 13  [root@localhost data]# rpm -ql tree 
 14  #目录或文件列表
 15  ​
 16  [root@localhost data]# rpm -qc httpd
 17  #配置文件位置
 18  ​
 19  [root@localhost data]# rpm -qd tree 
 20  #软件包文档所在位置
 21  /usr/share/doc/tree-1.6.0/LICENSE
 22  /usr/share/doc/tree-1.6.0/README
 23  /usr/share/man/man1/tree.1.gz
 24  ​
 25  [root@localhost data]# rpm -qR tree 
 26  #查看依赖包
 27  libc.so.6()(64bit)
 28  libc.so.6(GLIBC_2.14)(64bit)
 29  libc.so.6(GLIBC_2.2.5)(64bit)
 30  libc.so.6(GLIBC_2.3)(64bit)
 31  libc.so.6(GLIBC_2.3.4)(64bit)
 32  libc.so.6(GLIBC_2.4)(64bit)
 33  rpmlib(CompressedFileNames) <= 3.0.4-1
 34  rpmlib(FileDigests) <= 4.6.0-1
 35  rpmlib(PayloadFilesHavePrefix) <= 4.0-1
 36  rtld(GNU_HASH)
 37  rpmlib(PayloadIsXz) <= 5.2-1
 38  ​
 39  [root@localhost Packages]# rpm -qf /usr/bin/ls
 40  #查看命令程序由那个包安装的
 41  coreutils-8.22-18.el7.x86_64
 42  ​
 43  [root@localhost Packages]# rpm -qpi tree-1.6.0-10.el7.x86_64.rpm 
 44  #查看未安装软件的
 45  [root@localhost Packages]# rpm -qpc httpd-2.4.6-67.el7.centos.x86_64.rpm 
 46  /etc/httpd/conf.d/autoindex.conf
 47  /etc/httpd/conf.d/userdir.conf
 48  /etc/httpd/conf.d/welcome.conf
 49  /etc/httpd/conf.modules.d/00-base.conf6
 50  /etc/httpd/conf.modules.d/00-dav.conf
 51  ​
 52  [root@localhost Packages]# rpm -ivh httpd-2.4.6-67.el7.centos.x86_64.rpm 
 53  错误:依赖检测失败:
 54      /etc/mime.types 被 httpd-2.4.6-67.el7.centos.x86_64 需要
 55      httpd-tools = 2.4.6-67.el7.centos 被 httpd-2.4.6-67.el7.centos.x86_64 需要
 56      libapr-1.so.0()(64bit) 被 httpd-2.4.6-67.el7.centos.x86_64 需要
 57      libaprutil-1.so.0()(64bit) 被 httpd-2.4.6-67.el7.centos.x86_64 需要
 58  #####依赖关系原因需要安装以下包
 59  rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm
 60  rpm -ivh apr-1.4.8-3.el7.x86_64.rpm
 61  rpm -ivh mailcap-2.1.41-2.el7.noarch.rpm
 62  rpm -ivh httpd-tools-2.4.6-67.el7.centos.x86_64.rpm 
 63  rpm -ivh httpd-2.4.6-67.el7.centos.x86_64.rpm
 64  ​
 65  ​
 66  ​
 67  [root@localhost Packages]# rpm -q tree
 68  #查询是否安装
 69  未安装软件包 tree 
 70  [root@localhost Packages]# rpm -ivh  tree
 71  #安装软件包 tree 
 72  [root@localhost Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
 73  #安装软件包 tree
 74  [root@localhost Packages]# rpm -q tree
 75  #查看是否安装
 76  tree-1.6.0-10.el7.x86_64
 77  [root@localhost Packages]# rpm -qi  tree
 78  #详细信息
 79  Name        : tree
 80  Version     : 1.6.0
 81  Release     : 10.el7
 82  Architecture: x86_64
 83  Install Date: 2021年08月27日 星期五 10时42分26秒
 84  Group       : Applications/File
 85  Size        : 89505
 86  License     : GPLv2+
 87  Signature   : RSA/SHA256, 2014年07月04日 星期五 13时36分46秒, Key ID 24c6a8a7f4a80eb5
 88  Source RPM  : tree-1.6.0-10.el7.src.rpm
 89  Build Date  : 2014年06月10日 星期二 03时28分53秒
 90  Build Host  : worker1.bsys.centos.org
 91  Relocations : (not relocatable)
 92  Packager    : CentOS BuildSystem <http://bugs.centos.org>
 93  Vendor      : CentOS
 94  URL         : http://mama.indstate.edu/users/ice/tree/
 95  Summary     : File system tree viewer
 96  Description :
 97  The tree utility recursively displays the contents of directories in a
 98  tree-like format.  Tree is basically a UNIX port of the DOS tree
 99  utility.
100  [root@localhost Packages]# rpm -ql tree
101  #文件列表
102  /usr/bin/tree
103  /usr/share/doc/tree-1.6.0
104  /usr/share/doc/tree-1.6.0/LICENSE
105  /usr/share/doc/tree-1.6.0/README
106  /usr/share/man/man1/tree.1.gz
107  [root@localhost Packages]# rpm -qc vsftpd
108  #配置文件
109  /etc/logrotate.d/vsftpd
110  /etc/pam.d/vsftpd
111  /etc/vsftpd/ftpusers
112  /etc/vsftpd/user_list
113  /etc/vsftpd/vsftpd.conf
114  ​
115  [root@localhost Packages]# rpm -qd tree
116  #文档位置
117  /usr/share/doc/tree-1.6.0/LICENSE
118  /usr/share/doc/tree-1.6.0/README
119  /usr/share/man/man1/tree.1.gz
120  ​
121  [root@localhost Packages]# rpm -qR tree
122  #查看已安装的包依赖关系
123  libc.so.6()(64bit)
124  libc.so.6(GLIBC_2.14)(64bit)
125  libc.so.6(GLIBC_2.2.5)(64bit)
126  libc.so.6(GLIBC_2.3)(64bit)
127  libc.so.6(GLIBC_2.3.4)(64bit)
128  libc.so.6(GLIBC_2.4)(64bit)
129  rpmlib(CompressedFileNames) <= 3.0.4-1
130  rpmlib(FileDigests) <= 4.6.0-1
131  rpmlib(PayloadFilesHavePrefix) <= 4.0-1
132  rtld(GNU_HASH)
133  rpmlib(PayloadIsXz) <= 5.2-1
134  ​
135  ​
136  ​
137  [root@localhost Packages]# type rpm
138  rpm 已被哈希 (/usr/bin/rpm)
139  [root@localhost Packages]# rpm -qf /usr/bin/rpm
140  rpm-4.11.3-25.el7.x86_64
141  #查看软件来自哪个rpm包
142  ###不要卸载rpm包否则无法再次安装
143  ​
144  ​
145  [root@localhost Packages]# rpm -K tree-1.6.0-10.el7.x86_64.rpm 
146  tree-1.6.0-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 确定
147  #查看相关的 签名是否合法
View Code

 

安装、升级、卸载

安装或升级:rpm [选项] RPM包文件;-i、-U、-F

rpm -ivh 软件名——下载

rpm -e 软件名——卸载

选项效果
-i 安装一个新的RPM软件包
-U 升级某个软件包,若未安装过则进行安装
-F 升级某个软件包,若未安装过则直接结束
-h 在安装或升级过程中已#号显示读条
-v 显示安装过程的详细信息
--force 强制安装某个软件包
-e 软件名 卸载指定的软件
--nodeps 在安装或升级、卸载一个软件包时,不检查与其他包的依赖关系
 [root@localhost Packages]#rpm -e tree
 [root@localhost Packages]#rpm -ive tree
 ​
 [root@localhost Packages]# rpm -ivh httpd-2.4.6-67.el7.centos.x86_64.rpm 
 #进入
 错误:依赖检测失败:
     httpd-tools = 2.4.6-67.el7.centos 被 httpd-2.4.6-67.el7.centos.x86_64 需要

 

 

挂载

格式:mount 设备 文件夹路径 (已存在且是空的文件夹,原来的数据将被隐藏)解挂载用umount

挂载规则

  • 一个挂载点同一时间建议只挂载一个设备(windows里只能挂载一个,linux 可以挂载多个)

  • 一个挂载点同一时间可以挂载了多个设备,但只能看到最后一个挂载设备的数据,其它设备上的数据将被隐藏,不推荐

  • 一个设备可以同时挂载到多个挂载点

  • 通常挂载点一般是已存在空的目录(不为空也行,但可能会丢失原文件,不建议)

解挂载时要离开目标目录,目标目录不该处于被使用状态

光驱有两种刻录模式,一个是类似于USB闪存驱动器(可反复存取);另一个是“带有CD/DVD播放器”

维护RPM数据库

1.重建RPM数据库

当RPM 数据库发生损坏,可通过 重建RPM 数据库 修复

rpm --rebuild 或者 rpm --initdb

2.导入验证公钥

在没有导入用于数字签名验证的公钥之前,安装光盘中的一部分RPM 包时会报错。需要向RPM数据库中导入位于光盘根目录下的公钥文件。

源代码编译安装

1、大部分是c语言开发的,更方便的使用

2、优点

  • 软件版本比较新,新功能,修复bug

  • 可以自行定义配置文件的路径

  • 源码可能有100个功能,红帽认为你可能不需要会自行处理砍掉,自行定制50

rpm中的软件包都是别人二次加工好的,更新速度慢,内容固定。

3、程序包编译安装:

源代码-->预处理-->编译-->汇编-->链接-->执行

多文件:文件中的代码之间,很可能存在跨文件依赖关系

虽然有很多开源软件将软件打成包,供人们使用,但并不是所有源代码都打成包,如果想使用开源软件,可能需要自已下载源码,进行编译安装。另外即使提供了包,但是生产中需要用于软件的某些特性,仍然需要自行编译安装。但是利用源代码编译安装是比较繁琐的,庆幸的是有相关的项目管理工具可以大大减少编译过程的复杂度

编译过程名词概述

Tarball封包:".tar.gz"".tar.bz2"居多

完整性校验:”md5sum校验工具“

确认源代码编译环境:需要安装支持C/C++程序语言的编译器,如gcc、fcc-c++、make......

 
#分步骤编译运行
 gcc -E hello.c -o hello.i 对hello.c文件进行预处理,生成了hello.i 文件
 gcc -S hello.i -o hello.s 对预处理文件进行编译,生成了汇编文件
 gcc -c hello.s -o hello.o 对汇编文件进行编译,生成了目标文件
 gcc hello.o -o hello 对目标文件进行链接,生成可执行文件
 #一步实现编译过程
 gcc hello.c -o hello 直接编译链接成可执行目标文件
 ​
 ​
 #include<stdio.h>
 ​
 int main()
 ​
 {
 ​
 printf("Hello World!\n");
 ​
 }
 ​
 [root@localhost nginx-1.18.0]#find -name "*.c" -exec cat {} \;|wc -l
 #查看 nginx 包里有多少行
 179605
 ​
 ldd

 

 

编译安装过程(三步)

image-20230720003452933

1、检测环境,检测是否有编译工具——./configure(在源码下输入,检测是否缺少工具);./configure --prefix=/apps/httpd(指定安装目录的选项)

2、make编译,高级语言转为机器语言——编译时在源码包下编译(主要依靠configure工具)

3、安装进磁盘,放到文件里make install

yum 安装

YUM(Yellow dog Updater,Modified)

yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间

/etc/mine.types会规定网页链接会跳转展示、文件下载

 

前言:linux中有三种安装方式

1、编译安装,自由度最高、复杂度最高

systemctl管理程序的开机是否自启动关闭开启查看进程状态

.service需要手写

./configure

make

make install

2、rpm安装 写好 .service systemctl start|stop|reload|status|enable|disable

开启 停止 重新加载 状态 开机自启 关闭开机自启

缺点:只检测依赖关系的缺失,却不解决

rpm -q 软件名

rpm -qc 配置文件

rpm -ql 全部文件

安装

rpm -ivh 软件名

rpm -e 软件名

3、yum 不但检测还解决问题,yum仓库——服务端与客户端(服务端提供安装包;客户端安装)需要配置路径

服务端包含:

  • RPM包(Packages 文件夹中)

  • 元数据(repodata文件夹:目录(软件的目录),软件的依赖关系,软件的位置)

元数据里有:

  1. 指明安装包路径

  2. 依赖关系

客户端需要包含:配置文件

配置文件格式:

客户端默认配置文件在/etc/yum.repo.d/

配置文件必须以.repo结尾

服务端位置路径(mirrorlist、baseurl)

如何实现安装服务

image-20220320204127781

配置的文件格式

[ local ]仓库描述

name=local 仓库名字

baseurl=file:// /mnt 仓库路径——指明服务端的位置

gpgcheck=1检测

gpgkey=路径——验证文件路径

gpgkey=file:// /piki/rpm-gpg/

file://——代表本地

本地搭建YUM仓库(三种)

1网页搭建

2文件共享

3自己当仓库

image-20230720104058626

mount /dev/sr0/mnt 挂载提供安装包和元数据

cd /etc/yum.repos.d/ 切换到客户端的指定目录

mkdir bak 建立文件夹存放网络yum仓库的配置文件

mv *.repo bak/ 将网络源移走,减少干扰

vim local.repo

[local]

name=local

baseurl=file://mnt

gpgcheck=0

 

自己实验练习一下:

image-20230720120518233

 

 
 1 ####测试连通性(与下列操作无关)
 2  [root@localhost ~]#ping www.baidu.com
 3  PING www.a.shifen.com (180.101.50.188) 56(84) bytes of data.
 4  64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=1 ttl=128 time=0.417 ms
 5  64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=2 ttl=128 time=5.01 ms
 6  64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=3 ttl=128 time=0.581 ms
 7  ^C
 8  --- www.a.shifen.com ping statistics ---
 9  3 packets transmitted, 3 received, 0% packet loss, time 2002ms
10  rtt min/avg/max/mdev = 0.417/2.005/5.017/2.130 ms
11  ###本地搭建YUM仓库
12  ##1、挂载提供安装包和元数据
13  [root@localhost ~]#mount /dev/sr0 /mnt/
14  mount: 在 /dev/sr0 上找不到媒体
15  [root@localhost ~]#mount /dev/sr0 /mnt/
16  mount: /dev/sr0 写保护,将以只读方式挂载
17  ​
18  [root@localhost ~]#cd /etc/yum.repos.d/
19  [root@localhost yum.repos.d]#mount /dev/sr0 /mnt/
20  mount: /dev/sr0 写保护,将以只读方式挂载
21  ####2、建立文件夹存放网络yum仓库的配置文件
22  [root@localhost yum.repos.d]#mkdir bak
23  [root@localhost yum.repos.d]#ls
24  bak               CentOS-CR.repo         CentOS-fasttrack.repo  CentOS-Sources.repo
25  CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo      CentOS-Vault.repo
26  ####3、移走网络源,减少干扰
27  [root@localhost yum.repos.d]#mv *.repo bak/
28  ####4、编写本地yum仓库
29  [root@localhost yum.repos.d]#vim local.repo
30  ####文件里:
31  [local]##仓库描述
32  name=local##仓库名字
33  baseurl=file:///mnt##仓库路径——指明服务端的位置
34  gpgcheck=1##
35  ####5、清除缓存
36  [root@localhost yum.repos.d]#yum clean all
37  已加载插件:fastestmirror, langpacks
38  正在清理软件源: local
39  Cleaning up everything
40  Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
41  Cleaning up list of fastest mirrors
42  ####6、重新构建元数据
43  [root@localhost yum.repos.d]#yum makecache 
44  已加载插件:fastestmirror, langpacks
45  local                                                                                                                | 3.6 kB  00:00:00     
46  (1/4): local/group_gz                                                                                                | 156 kB  00:00:00     
47  (2/4): local/primary_db                                                                                              | 3.1 MB  00:00:00     
48  (3/4): local/other_db                                                                                                | 1.2 MB  00:00:00     
49  (4/4): local/filelists_db                                                                                            | 3.1 MB  00:00:00     
50  Determining fastest mirrors
51  元数据缓存已建立

 

 

标签:管理程序,安装,tree,软件包,root,rpm,localhost
From: https://www.cnblogs.com/bacolate/p/17575193.html

相关文章

  • Ubuntu安装Gtest
    安装运行过程概述最近要使用到Gtest做一些测试,网上找了很多方法,感觉都不全,半截子,一时半伙我也是很蒙蔽,所以这里做一个Gtest安装步骤的讲解。备注:本测试在Linux系统下运行,默认已经配置好C++编译环境。获取安装包两种方式方案一:这种方案能下载下来,但是我没有安装成功 gitc......
  • 安装及管理程序
    安装及管理程序开发语言系统级开发汇编语言CC++应用级开发javaPythongophpperldelphiLinux源码包实际上,源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的Linux二进制包二进制包,也就是源码包经过成功编译之后产生的包。由于二进制包在发布之前......
  • 如何配置Apache24+PHP8+Mysql8包括安装
    一、PHP版本的选择与安装配置PHP官方PHP下载页面选择自己想要的版本点击Zip链接即可下载,x64是操做系统的位数,ThreadSafe是线程安全版本(多线程版Apache服务器使用),NoneThreadSafe是非线程安全版(单线程版IIS服务器使用)然后解压出来后把Apache24根目录的php.ini-developm......
  • Node.js下载安装教程
    一、下载安装包1、百度网盘自提链接:链接:https://pan.baidu.com/s/1Bbw895MtUgjlfZylPHCCxw 提取码:x89v 2、进入官网下载https://nodejs.org/zh-cn/download/选择对应版本,我这里选的windows64位版本 二、安装程序1、双击下载好的安装包,出现这个界面点【next】2、选......
  • 1.2.1 pytorch安装
    1.安装地址:PyTorch选择适合自己的版本,复制命令,粘贴在Anacondapromote中 安装成功 ......
  • rpm 与 程序安装
    rpm1)rpm查询命令-q查询已经安装的软件包 2)mount挂载挂载mount设备文件路径(已存在且空,原来的数据会被隐藏)规则:1.一个挂载点同一时间只能挂载一个设备2.一个挂载点同一时间挂载多个设备,只能看见最后一个挂载设备的数据其他设备上的数据将被隐藏3.一个设......
  • Keil5安装、激活
    一、Keil5安装、激活下载地址:链接:https://pan.baidu.com/s/1O6bcrHe4TfTtV__xlnAiUQ提取码:9999文件包含:ARM.CMSIS-Driver.2.3.0.packARM.CMSIS-RTOS_Validation.1.1.0.packARM.CMSIS.5.4.0.packKeil.ARM_Compiler.1.6.0.packKeil.MDK-Middleware.7.7.0.packKeil.STM......
  • zookeeper(二):安装部署
    一、目标安装部署一套3节点的ZooKeeper集群,并运行起来。规划如下:节点ip主机名软件192.168.1.201zk-node1zookeeper192.168.1.202zk-node2zookeeper192.168.1.203zk-node3zookeeper二、搭建虚拟机1、安装虚拟机软件这里选择的是VirtualBox:Downloads......
  • OpenResty 入门实战(1)--简介及安装
    本文介绍的 OpenResty为开源版本OpenResty,官网地址为:https://openresty.org/cn/,如需了解商业版本,可访问商业官网:https://openresty.com.cn/cn/;文中所使用到的软件版本:OpenResty 1.21.4.2、pcre8.43、opnessl1.1.1s、zlib1.2.11、CentOS 7.9.2009。1、简介OpenResty®是......
  • infraworks卸载不干净无法安装?一招教你如何搞定infraworks安装失败报错的问题【转载】
    infraworks专用卸载工具,完全彻底卸载删除干净infraworks各种残留注册表和文件的方法和步骤。如何卸载infraworks呢?有很多同学想把infraworks卸载后重新安装,但是发现infraworks安装到一半就失败了或者显示infraworks已安装或者安装未完成,大多数情况下其实是infraworks没有被卸载干......