Linux基础16 yum命令, 源码安装nginx, fpm工具打rpm包进yum仓库, ubuntu软件管理(dpkg, apt), snap工具

yum实战命令:

    安装:
        yum install 
        -y:不交互安装    # 选项[y/d/N]: d代表只下载不安装   没有-d参数
        
        yum localinstall 安装本地的rpm包,并安装依赖(从其他源里下载安装)
        
        yum reinstall   重装    # 可用于修复
        
    查询:
        yum list 查询所有的安装包    (包含安装的来源仓库, 还会列出伪装过的包)
        
        yum info 查看安装或未安装包的详细信息    # 例: yum info tree
        
    
    更新:
        yum check-update                  检查可以更新的包
        
        yum update python -y             更新python包
        !!!!!!!!!
        yum update -y  ******注意          非常危险,更新所有包,包括内核(yum update -y会把所有包升级,升级内核把centos6升为7)
        
        
    删除:
        yum remove : 删除rpm包(会把依赖也删除)    尽量少用,把依赖删除危险。重装直接yum reinstall,不要先删后装
                rpm -e 只删除对应的包,比较安全
        yum erase  : 删除rpm包(和yum remove一样, 没区别)
        
    
    yum仓库相关命令:
        yum repolist :查看仓库中的所有rpm包数量
        
        yum repolist all: 查看启用的和没启用的仓库    # 通过修改仓库配置文件enable
        
        # 阿里源仓库配置文件3个地址 
        http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/            自己的服务,走这个源
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/            
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/        购买的云主机,内网源(走阿里内网速度快)
    
        
        yum-config-manager --enable : 启用yum仓库(可以直接通过修改仓库配置文件实现)
        
        yum provides : 查询你想要敲的命令,属于哪个rpm包    # 例: yum provides ifconfig  或写命令路径 yum provides /sbin/ifconfig
     # 注意:需要yum仓库有这个命令或包,改命令根据仓库地址去查的
yum缓存:(很少用,现在换源用不到) yum clean all # 清缓所有yum缓存, 企业里少用all, 用yum clean packages yum makecache # 加载当前源的缓存包 yum配置文件中 vim /etc/yum.conf 里面有个keepcache=0 # 缓存软件包, 0关闭, 1开启(缓存开启的情况下, 安装包后会在/var/cache/yum/x86_64/7有对应的包) find /var/cache/yum/x86_64/7 # 装一个服务,会把包放在对应的缓存下面 find /var/cache/yum/x86_64/7 -type f -name '*.rpm' 查缓存里的包

 

    yum包组相关命令:    (就是安装centos时包组选项页面(有最小安装), 左右两边都有) # 很少用到
        yum groups list
        
        yum groups install Development tools    (就是安装centos时选项页面(有最小安装)的 Development Tools)
        
        yum groups remove  -y Base
        
        
    yum历史相关命令:
        yum history
        
        yum history info     # 例: yum history info 38
        
        yum history undo 43    # 取消43步的操作(没什么意义,还要查历史)
        
    yum配置文件了解
        vim /etc/yum.conf
        keepcache    # 缓存软件包, 1启动 0 关闭  (打包会用到)
        debuglevel    # 调试级别
        logfile        # 日志记录位置
        exactarch        # 检查平台是否兼容
        obsoletes        # 检查包是否废弃
        gpgcheck        # 检查来源是否合法,需要有制作者的公钥信息 (自己安装没必要开启)
        plugins        # 是否启用查询
    
    # 不进行签名验证(如果碰到需要签名验证的,可以追加参数不验证)
    yum install httpd --nogpgcheck

 

源码包:

    yum安装,优点:速度快,简单
        缺点:rpm -ql 查看 命令目录,配置文件目录,站点目录...
              
              
    源码包优缺点:
    优点:
    
    1.有了源码包,那我就可以自行修改代码,提供我们使用,传说中的二次开发
    2.可以定制需要的相关功能
    3.新版本优先更新源码
    4.自动化规范,方便落地
    
    缺点:
    1.相对于yum安装,复杂
    2.耗时比较长

 

源码包地址

mysql (官网选择, 源码包就是Source Code, 一般都是tar包, .tar.gz)
wget https://downloads.mysql.com/archives/get/file/mysql-5.6.42.tar.gz
nginx
wget http://nginx.org/download/nginx-1.16.0.tar.gz

 

安装源码包:

        # 安装nginx所有依赖包
        [root@db_rpm ~]# yum install -y gcc gcc-c++ glibc pcre-devel zlib-devel openssl-devel

            # 把需要安装的依赖包拷贝出来(用于下面fpm打rpm包)
            # 修改yum缓存,把安装的相关依赖包本地保存下来
            sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
            # 查找当前yum缓存下的安装包
            find /var/cache/yum/ -name '*rpm'
            # 把下载的包拷贝出去
            find /var/cache/yum/ -name '*rpm' |xargs cp -t /usr/local/src/
    
        1.解压(一定要装完c的环境后再进行解压,否则会少东西)
            [root@db_rpm ~]# tar xf  nginx-1.16.0.tar.gz

        mkdir /app
        2.生成
            [root@db_rpm nginx-1.16.0]# ./configure --prefix=/app/nginx-1.16.0        # --prefix选择要安装的路径
            # echo $? 可以看运行成功失败

        3.编译(把c语言代码编译成linux可以识别的编码)
            [root@db_rpm nginx-1.16.0]# make
            # echo $? 可以看运行成功失败
        4.安装
            [root@db_rpm nginx-1.16.0]# make install
            # echo $? 可以看运行成功失败
            # 在/app/nginx-1.16.0/下  conf配置文件,html站点目录,logs日志,sbin命令          
        

        5.启动nginx(/app/nginx-1.16.0下会生成很多文件,都是缓存,可以清理)
        [root@db_rpm nginx-1.16.0]# /app/nginx-1.16.0/sbin/nginx
              
        6.关闭防火墙
        [root@db_rpm nginx-1.16.0]# systemctl stop firewalld
        
        7.打开浏览器,访问:http://10.0.0.60/

 

fpm工具打rpm包进yum仓库

优点: 安装路径和源码安装一致,企业统一管理

fpm工具安装:(打包需要工具,可以把源码安装的包通过fpm打包成rpm包)    
        
        wget http://download.driverzeng.com/fpm-1.3.3.x86_64.tar.gz
        
        yum -y install ruby rubygems ruby-devel    # 安装fpm依赖

        解压:[root@db_rpm ~]# tar xf fpm-1.3.3.x86_64.tar.gz
        
        # 换gem源 删掉国外源,换成国内源(不换源也可以,速度慢些)
        gem sources --add https://mirrors.huaweicloud.com/repository/rubygems/ --remove https://rubygems.org/
        
        # 安装fpm的包
        [root@db_rpm ~]# gem install *.gem
        
        # 打包命令(会有黄字, 不影响)
        fpm -s dir -t rpm -n nginx -v 1.16.0 -d 'pcre-devel,openssl-devel' -f /app/nginx-1.16.0
        # -s dir指定打包目录    -t rpm指定是rpm包    -n 指定包名  -v 指定版本   -d 指定依赖包  -f 指定要打包的目录
        
        nginx-1.16.0-1.x86_64.rpm    
        # 打包出的文件   nginx-版本-发布次数-架构

通过fpm打包做镜像

        cp nginx-1.16.0-1.x86_64.rpm /usr/local/src/
        进入/usr/local/src/中,把所有文件打tar包
        cd /usr/local/src/
        tar zcf nginx.tar.gz ./*

        # 拷贝到仓库机器目录下
        cd /data/zls/yum_repo/nginx
        # 解压
        tar xf nginx.tar.gz
        # 把该路径变为yum仓库
        createrepo /data/zls/yum_repo/nginx/

        # 访问机操作
        cd /etc/yum.repos.d/
        # 编辑
        vim nginx-zls.repo
        [app-nginx]
        name='xxx'
        baseurl=http://10.0.0.200/nginx/
        enable=1
        gpgcheck=0

        # 参看yum是否生效
        yum repolist
        # 查看是否安装nginx
        rpm -qa|grep nginx
        >> nginx-1.16.0-1.el7.ngx.x86_64
        # 卸载
        rpm -e nginx-1.16.0-1.el7.ngx.x86_64 
        # 安装
        yum install -y nginx
        # 查看是否在/app目录下(conf文件也在路径下)
        ll /app

 

ubuntu软件管理

Debian 软件包通常为预编译的二进制格式的扩展名“.deb”,类似 rpm 文件,因此安装快速,无需编译
软件。包文件包括特定功能或软件所必需的文件、元数据和指令
  dpkg:package manager for Debian,类似于rpm, dpkg是基于Debian的系统的包管理器。可
以安装,删除和构建软件包,但无法自动下载和安装软件包或其依赖项
  apt:Advanced Packaging Tool,功能强大的软件管理工具,甚至可升级整个Ubuntu的系统,基
于客户/服务器架构(c/s)

rhel 系列与 debian系列包管理对比

dpkg 包管理器

dpkg [<option> ...] <command>
#常用选项 -i|--install package.deb #安装包 --unpack package.deb #解包 -r|--remove packageName #删除包,不建议,不自动卸载依赖于它的包 -P|--purge packageName #删除包(包括配置文件) -V|--verify packageName #检查包是否安装 --get-selections pattern #根据正则筛选包,并打出列表 --set-selections #从标准输入里读出要选择的软件。 --clear-selections #取消选中所有不必要的软件包。 --update-avail packageFile #替换现有可安装的软件包信息。 --merge-avail packageFile #把文件中的信息合并到系统中。 --clear-avail #清除现有的软件包信息。 --forget-old-unavail #忘却已被卸载的不可安装的软件包。 -s|--status packageName #显示指定软件包的详细状态,类似于 rpm -qi -p|--print-avail packageName #显示当前机器上所有可安装的包 -L|--listfiles packageName #列出属于指定软件包的文件,类似于 rpm -ql -l|--list [pattern] #列出当前己安装的包,类似于rpm -qa -S|--search pattern #根据文件查询是来自于哪个包,类似于 rpm - qf -C|--audit [pattern] #检查是否有软件包残损 --yet-to-unpack #列出标记为待解压的软件包 --predep-package #列出待解压的预依赖 --compare-vesions v1 - b #比较版本号 --force-help #显示本强制选项的帮助信息 -Dh|--debug=help #显示有关出错调试的帮助信息 --info packageFile #列出包相关信息 -c packageFile #列出包内文件,类似于 rpm -qpl
#查询包是否安装
root@ubuntu22:~# dpkg -V vim
root@ubuntu22:~# echo $?
0
root@ubuntu22:~# dpkg -V nginx
dpkg: package 'nginx' is not installed
root@ubuntu22:~# echo $?
1
dpkg 的软件安装分为解包和配置两部份

#安装
root@ubuntu22:~# dpkg -i /cdrom/pool/restricted/f/firmware-sof/firmware-sofsigned_2.0-1ubuntu2_all.deb
Selecting previously unselected package firmware-sof-signed.
(Reading database ... 108476 files and directories currently installed.)
Preparing to unpack .../firmware-sof-signed_2.0-1ubuntu2_all.deb ...
Unpacking firmware-sof-signed (2.0-1ubuntu2) ...
Setting up firmware-sof-signed (2.0-1ubuntu2) ...

#查询
root@ubuntu22:~# dpkg -l firmware-sof-signed
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name               Version     Architecture Description
+++-===================-============-============-
=================================
ii firmware-sof-signed 2.0-1ubuntu2 all         Intel SOF firmware - signed

#卸载
root@ubuntu22:~# dpkg -r firmware-sof-signed
(Reading database ... 108702 files and directories currently installed.)
Removing firmware-sof-signed (2.0-1ubuntu2) ...
#根据条件列出己安装的包
root@ubuntu22:~# dpkg --get-selections v*
vim install
vim-common install

#显示所有可安装的包
root@ubuntu22:~# dpkg -p

#显示指定包
root@ubuntu22:~# dpkg -p mawk

#显示己安装的列表
mage@ubuntu22:~$ dpkg -l

#通配符
mage@ubuntu22:~$ dpkg -l "vi*"


#具体包名
mage@ubuntu22:~$ dpkg -l vim
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                 Version             Architecture   Description
+++-======================-===================-==============-
=================================
ii  vim                   2:8.2.3995-1ubuntu2 amd64           Vi IMproved - 
enhanced vi editor

该列表从左到右共七列
#Desired 期望状态
u Unknown #没有安装过
i Install #请求安装
r Remove   #请求卸载
p Purge   #请求卸载并清理
h Hold     #保持
 
#Status 当前状态
n Not #软件没有安装
i Inst #安装完成并完成配置
c Conf-files #己卸载,但还有保留配置文件
u Unpacked #己解压缩,但没有配置
f halF-conf #配置时出错
h Half-inst #安装时出错
w trig-aWait #触发器等待
t Trig-pend #触发器是未决状态

#Err 错误状态
 #正常情况下为空
h #被锁定,有其它包对此依赖,无法升级
r Reinst-required,   #被损坏,需要重装才能正常使用
x #被损坏且被锁定
#Name 包名
#Version 版本
#Architecture 平台架构
#Description 包的描述信息

#前三列常见组合
ii #安装成功
pn #安装后卸载
un #没有安装过
iu #安装了但是没有配置
rc #己卸载,但还有配置文件
#查询文件来自于哪个包
root@ubuntu22:~# dpkg -S "/etc/ssh/ssh_config" 
openssh-client: /etc/ssh/ssh_config

 

apt 命令用法

apt [options] command
  
#options       
-h|--help     #显示帮助
-v|--version #显示版本
-y|--yes #自动回答yes
-q|--quiet #安静模式
     
#command
list       #根据名称列出软件包
search     #搜索软件包描述
show|info       #显示软件包细节
install   #安装软件包
remove     #移除软件包
autoremove #卸载所有自动安装且不再使用的软件包(如果依赖刚好其他包也使用,还是会删除,有风险)
update     #更新可用软件包列表,只更新索引文件,不具体更新软
件
upgrade   #通过 安装/升级 软件来更新系统
full-upgrade #通过 卸载/安装/升级 来更新系统
edit-sources #编辑软件源信息文件

#列出所有包
root@ubuntu22:~# apt list
#列出所有己安装的包
root@ubuntu22:~# apt list --installed
#列出所有可升级的包
root@ubuntu22:~# apt list --upgradeable

#指定包名或通配符
root@ubuntu22:~# apt list redis*

root@ubuntu22:~# apt list --installed redis*
Listing... Done


#搜索
#在包名和描述信息中搜索
root@ubuntu22:~# apt search nginx
#使用正则匹配搜索条件
root@ubuntu22:~# apt search "^ngin*"
#仅在包名中搜索
root@ubuntu22:~# apt search --names-only nginx


#安装
root@ubuntu22:~# apt install nginx

#同时安装多个包
root@ubuntu22:~# apt install nginx redis -y
#安装指定版本的包,默认安装最新版
root@ubuntu22:~# apt install nginx=1.14.0-0ubuntu1 
#安装nginx 包,如果己存在,则不升级
root@ubuntu22:~# apt install nginx --no-upgrade   
#只升级不安装
root@ubuntu22:~# apt install nginx --only-upgrade


#卸载
仅卸载nginx包
root@ubuntu22:~# apt remove -y nginx
#卸载所有依赖包
root@ubuntu22:~# apt autoremove nginx

yum install abc abc 在安装完成之后不会自动启动

apt install ab abc在安装完成之后会自动启动

#如果apt很长时间不用了,在操作前,先 apt update 下构建新缓存,把源同步下,否则有缓存,不是最新的

 

apt换源

/etc/apt/sources.list.d/

#把 http://cn.archive.ubuntu.com/ubuntu/ 替换成 https://mirrors.aliyun.com/ubuntu/ 即可
#这里可以参考阿里云,也可以自己手动换
root@ubuntu22:~# vim /etc/apt/sources.list
#命令行输入(其他的可能不一样,也都换下)
:%s/cn.archive.ubuntu.com/mirrors.aliyun.com/g

#更新源
apt-get update
这样,apt的源就成功地更改为了新的源。请注意,在进行任何更改之前,最好备份原有的源文件,以防万一。
/etc/apt/sources.list.d/
配置文件格式说明
deb URL section1 section2

#字段说明
deb #固定开头,表示是二进制包的仓库,如果deb-src开头,表示是源码库
URL #库所在的地址,可以是网络地址,也可以是本地镜像地址
section1 #Ubuntu版本的代号,可用 lsb_release -sc 命令查看,也可以用 cat 
/etc/os-release
section2 #软件分类,main完全自由软件 restricted不完全自由的软件,universe社区支持
的软件,multiverse非自由软件

section1 #主仓
section1-backports #后备仓,该仓中的软件当前版本不一定支持
section1-security #修复仓,主要用来打补丁,有重大漏洞,需要在当前版本中修复
时,会放此仓
section1-updates #非安全性更新仓,不影响系统安全的小版本迭代放此仓
section1-proposed #预更新仓,可理解为新版软件的测试放在此仓,测试一段时间后
会移动到 updates仓或security仓,非专业人士勿用

在ubuntu库中,有两个重要目录,分别是dists和 pool dists (就像yum中的repodata元数据和rpm包)

目录中存放的是该源仓库中的元数据,包括软件包的名称,适用的架构平台,版本号,依赖关系等

pool 目录中存放的是具体包文件

 

snap 工具

Snap 包是 Ubuntu 16.04 LTS 发布时引入的新应用格式包。目前已流行在 Ubuntu 且在其他如Debian、Arch Linux、Fedora、Kaili Linux、openSUSE、Red Hat 
等 Linux 发行版上通过 snapd 来安装使用 snap 应用。 当你在安装完 snap 后,你会发现在在根目录下会出现如
/dev/loop0 的挂载点,这些挂载点正是 snap 软件包的目录。Snap 使用了 squashFS 文件系统,
一种开源的压缩,只读文件系统,基于 GPL 协议发行。一旦 snap 被安装后,其就有一个只读的文件系统和一个可写入的区域。应用自身的执行文件、库、依赖包都被放在这个只读目录,
意味着该目录不能被随意篡改和写入。 默认 Snap 应用格式包,专为物联网设备、嵌入式平台设计的迷你 Ubuntu。it用不到,但会多出现几个loop的挂载点

 

posted @ 2023-04-18 18:28  战斗小人  阅读(182)  评论(0编辑  收藏  举报