软件管理

概念

ABI

Application Binary Interface

Windows与Linux不兼容

API

API即Application Programming Interface,API可以在各种不同的操作系统上实现给应用程序提供完全 相同的接口,而它们本身在这些系统上的实现却可能迥异,主流的操作系统有两种,一种是Windows系 统,另一种是Linux系统。由于操作系统的不同,API又分为Windows API和Linux API。在Windows平 台开发出来的软件在Linux上无法运行,在Linux上开发的软件在Windows上又无法运行,这就导致了软 件移植困难,POSIX 标准的出现就是为了解决这个问题

POSIX

Portable Operating System Interface 可移植操作系统接口,定义了操作系统应该为应用程序 提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称。Linux 和windows都要实现基本的posix标准,程序就在源代码级别可移植了

查看库文件

查看二进制程序所依赖的库文件
    ldd /bin/tree

管理及查看本机装载的库文件
    #加载配置文件中指定的库文件
    ldconfig

#显示本机已经缓存的所有可用库文件名及文件路径映射关系
/sbin/ldconfig –p 

配置文件
/etc/ld.so.conf
/etc/ld.so.conf.d/*.conf

缓存文件
/etc/ld.so.cache

RPM

安装
rpm -ivh  PACKAGE_FILE

升级
rpm -Uvh PACKAGE_FILE     upgrade:安装有旧版程序包,则"升级",如果不存在旧版程序包,则"安装"
rpm -Fvh PACKAGE_FILE     freshen:安装有旧版程序包,则"升级", 如果不存在旧版程序包,则不执行升级操作
    注意项:
    不要对内核做升级操作;Linux支持多内核版本并存,因此直接安装新版本内核
    如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件不会直接覆盖老版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew)后保留

查询
rpm -qa  #查所有包(已安装的)
rpm -qa 包名或者命令名字 
rpm -qi  包名/命令名  #查包信息   yum info 
rpm -qf 文件名  #查属于那个包
rpm -ql  包名或者命令名   #查包内文件内容
rpm -qc 包名或者命令名  #之查看配置文件

yum

yum客户端配置文件
    /etc/yum.conf #为所有仓库提供公共配置
    /etc/yum.repos.d/*.repo: #为每个仓库的提供配置文件

repo仓库配置文件指向的定义:
    [repositoryID]  #要求唯一,不要重复
    name=Some name for this repository  #只是这个仓库的名字,没有特别要求
    baseurl=url://path/to/repository/
    enabled={1|0}
    gpgcheck={1|0}
    gpgkey=URL
    enablegroups={1|0}
    failovermethod={roundrobin|priority}
    roundrobin:意为随机挑选,默认值
    priority:按顺序访问 #优先级,数字越小,优先级越高,多个仓库存在相同的包情况下,优先从高优先级下载
    cost= 默认为1000

gpgkey 本机
/etc/pki/rpm-gpg/RPM-GPG-KEY

yum服务器的baseurl形式:
    file:// 本地路径
    http://
    https://
    ftp://

注意: yum仓库指向的路径一定必须是repodata目录所在目录

相关变量(可以在repo 文件中使用的变量)
    $releasever: 当前OS的发行版的主版本号,如:8,7,6
    $arch: CPU架构,如:aarch64, i586, i686,x86_64等
    $basearch:系统基础平台;i386, x86_64
    $contentdir:表示目录,比如:centos-8,centos-7
    $YUM0-$YUM9:自定义变量

yum repolist #查看仓库列表
        [all|enabled|disabled|-v]

yum-config-manager --add-repo URL或file 
#禁用仓库
yum-config-manager --disable "仓库名"
#启用仓库
yum-config-manager --enable  "仓库名"


yum 命令
    yum [options] [command] [package ...]
    -y #自动回答为"yes"
    -q #静默模式
    --nogpgcheck #禁止进行gpg check
    --enablerepo=repoidglob    #临时启用此处指定的repo,支持通配符,如:"*"
    --disablerepo=repoidglob #临时禁用此处指定的repo,和上面语句同时使用,放在后面的生效


显示程序包

    yum list
    yum list [all | glob_exp1] [glob_exp2] [...]
    yum list {available|installed|updates} [glob_exp1] [...]

常用命令 
    yum insatll 
    yum remove
    yum clean all
    yum list vim 
    yum list vim*  #可以使用通配符
    yum info vim #查看远程包信息
    yum search  包名关键字
    yum provides /dir/文件名  #通过文件名从仓库中找对应的包,知道文件路径
    yum provides */文件名       #不知道文件路径


安装程序包
    yum install package1 [package2] [...]
    yum reinstall package1 [package2] [...]  #重新安装

--downloadonly  #只下载相关包默认至/var/cache/yum/x86_64/7/目录下,而不执行install/upgrade/erase
--downloaddir=<path>, --destdir=<path>  #--downloaddir选项来指定下载的目录,如果不存在自动创建
yum install nginx  --downloadonly --downloaddir=./test/  #把nginx及其相关依赖包下载到test目录里面而不安装

Rocky Linux 常用的repo

BaseOs  AppStream  extras PowerTools

yun 私服

1. 启用http 服务,以httpd为例
yum install -y httpd
在/var/www/html 建立仓库目录 例如/var/www/html/rockylinux/8

把每个仓库的两个部分拷贝过来 
    packages
    repodata

 1.可以通过光盘拷贝
 2.可以配置好yum远程yum源之后,用yum命令考,例如
    yum reposync --repoid=PowerTools  --download-metadata  -p /var/www/html/rockylinux/8

Ubuntu 软件管理

dpkg

dpkg -i  安装
dpkg -l  #列出所有包
dpgk -l tree #tree是否安装上
dpkg -P tree  #删除包tree
dpkg -s tree #rpm -qi
dpkg -L tree #rpm -ql
dpkg -S /bin/tree # rpm -qf

apt

仓库路径
/etc/apt/sources.list

找到镜像源 阿里云 或者 清华镜像源
拷贝覆盖 sources.list 文件即可
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

然后执行 apt update

最新使用安装命令直接使用apt,

apt install
apt remove #移除软件
apt purge  #移除软件和配置文件
apt search 
apt autoremove   #删除之前软件所有安装的软件

apt-cache madison nginx #查看仓库中软件包有哪些版本可以安装

#安装软件包的时候指定安装具体的版本
apt install nginx=1.14.0-0ubuntu1.6 

#显示系统安装包的统计信息,可以统计已经安装包的数量,大小,占用空间等
apt-cache stats


#Ubuntu安装 apt install command-not-found,可以有跟yum provides 一样的功能,默认应该是安装的,在你敲一个未安装的命令时候
#会提示你,这个命令来自那个包,你应该安装的包
apt install command-not-found



建议min安装,安装常用的软件
apt purge ufw lxd lxd-client lxcfs liblxc-common  #24.4没有lxd-client包
apt install iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev gcc openssh-server iotop unzip zip   -y

源码安装

利用编译工具,通常只需要三个大的步骤
./configure

(1) 通过选项传递参数,指定安装路径、启用特性等;执行时会参考用户的指定以及Makefile.in文件生成Makefile
(2) 检查依赖到的外部环境,如依赖的软件包
    make 根据Makefile文件,会检测依赖的环境,进行构建应用程序
    make install 复制文件到相应路径

一般而言, configure 一个参数 --prefix=软件安装位置
编译之后的软件 -V 可以查看编译参数

./configure 执行阶段失败,不需要重新清理

make 编译阶段 失败,需要重新清理
make -j 指定处理核数

make -j $(egrep -c processor /proc/cpuinfo) && make install

最小化安装一般需要安装下面包

yum install gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl 
openssl-devel systemd-devel zlib-devel vim lrzsz tree tmux lsof tcpdump wget 
net-tools iotop bc bzip2 zip unzip nfs-utils man-pages