包命名
源代码打包文件命名
name-version.tar.gz|bz2|xz
如:nginx-1.24.0.tar.gz
rpm包命名方式
name-version-release.arch.rpm
常见的arch:
- x86:i386、i586、i686
- x86_64:x64、x86_64、amd64
- 跨平台:noarch
如:NetworkManager-1.32.0-0.1.el8.x86_64.rpm
包内容
- 二进制文件
- 库文件
- 配置文件
- 帮助文件
包分类
Application-VERSION-ARCH.rpm:主包
Application-devel-VERSION-ARCH.rpm:开发子包
Application-utils-VERSION-ARHC.rpm:其它子包
Application-libs-VERSION-ARHC.rpm:其它子包
解决包依赖工具
- yum:rpm包管理器的前端工具
- dnf:Fedora 18+ rpm包管理器前端管理工具,CentOS 8 版代替 yum
- apt:deb包管理器前端工具
- zypper:suse上的rpm前端管理工具
常见程序包管理器
- dpkg
- rpm
RPM
全称 RedHat Package Manager ,红帽软件包管理器。是一种预先编译并打包成为rpm格式再加以安装的方式;rpm安装会产生记录在 /varlib/rpm 中的数据库。yum底层是调用rpm去安装软件的。
安装
命令:rpm -ivh 软件包1.rpm 软件包2.rpm …
-i:install 安装的意思
-v:查看安装信息
-h:显示安装进度
--nodeps:忽略依赖关系
升级
命令:rpm -[U|F]vh [安装选项] 软件包.rpm
-Uvh:若安装有旧版程序包,则"升级",如果不存在旧版程序包,则"安装"
-Fvh:若安装有旧版程序包,则"升级", 如果不存在旧版程序包,则不执行升级操作
安装选项:
--oldpackage:降级
--force:强制安装
注意:
- 不要对内核做升级操作;Linux支持多内核共存,有需要直接安装新版内核
- 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件不会直接覆盖老版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew)后保留
查询
查询是否安装过 logrotate 软件
列出 logrotate 提供的所有目录与文件
列出 logrotate 相关信息
找出 logrotate 的配置文件
误删了某个文件,查询删除的文件属于哪个软件(因为rpm有记录在 /var/lib/rpm 当中的数据库)
rpm -qf 文件名
验证
验证(verify)原理:使用 /var/lib/rpm 下的数据库内容对比当前系统环境下的所有软件文件
/etc/crontab 文件前有个 T ,释义如下
当一个配置文件所有的信息都被改过,则显示 SM5DLUGTP c 文件名;其中 c 代表文件类型。
c:配置文件 config file
d:文件数据文件 documenttation
g:通常为该文件不被某个软件所包含,较少发生 ghost file
l:许可证文件 license file
r:自述文件 read me
卸载
rpm -e 软件名
由于RPM文件常常会安装/移除/升级等,某些动作或许可能会导致RPM数据库/var/lib/rpm/ 内的文件破损。果真如此的话,可以使用–rebuilddb 这个选项来重建数据库喔
rpm –rebuilddb
SPRM
提供源码、configure和makefile,可自行修改配置参数。文件名:xxx.src.rpm
安装流程
- 以rpm方式编译,此时srpm文件被编译为rpm文件
- 安装rpm文件
对比
安装SRPM
使用源码默认配置时
两个选项
--rebuild | 将srpm进行 编译 与 打包 |
--recomplie | 将srpm进行 编译 、打包、安装 |
相关目录
/root/rpmbuild/SPECS | 该软件的配置文件 |
/root/rpmbuild/SOURCES | 该软件的原始文件,xxx.tar.gz的文件及config这个配置文件 |
/root/rpmbuild/BUILD | 编译过程中,暂存数据的目录 |
/root/rpmbuild/RPMS | 编译成功后,打包后的文件放置于此 |
/root/rpmbuild/SRPMS | 用户自行编译SRPM软件包后生成的目录 |
YUM
yum/dnf 工作原理
yum/dnf是基于C/S模式
- yum服务器存放rpm包和相关包的元数据库
- yum客户端访问yum服务器进行安装或查询
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装包时,会自动下载repodata中的元数据,查询元数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装
yum客户端配置
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repo.d/*.repo:为每个仓库提供配置文件
[base]:代表软件库的名字,中括号一定要存在,里面名称可随意,但是不能存在相同的软件库名称。
name:说明此软件库意义
mirrorlist:列出软件源可用的镜像站,可以注释此行不用
baseurl=:最重要的部分,后面接软件源的实际地址,baseurl是指定一个软件源的网址
enable=1:指这个软件源被启用,不启用enable=0
gpgcheck=1这是需要查看RPM文件内的数字签名,不需要gpgchenk=0
gpgkey=:就是数字签名的公钥文件所在地,使用默认值
命令格式
yum 选项 参数 软件名
选项:
-y:当需要用户输入时,自动输入yes响应
-q:静默模式
--nogpgcheck:禁止gpg check
--enablerepo=仓库名:临时启用此处指定的repo,支持通配符
--disablerepo=仓库名:临时启用此处指定的repo,若和--enablerepo同时用,处于后面的生效
–installroot=完整路径:将软件安装在 完整路径 ,而不使用默认路径
显示仓库列表:yum repolist
[root@wenzi ~]#yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
repo id repo name status
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 518
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 5,527
repolist: 16,117
[root@wenzi ~]#yum --disablerepo=extra* repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* updates: mirrors.aliyun.com
repo id repo name status
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 5,527
仓库缓存
清除仓库缓存
缓存位于 /var/cache/yum/xxx
[root@wenzi ~]#yum clean all
生成仓库缓存
[root@wenzi ~]#yum makecache
显示yum管理的所有软件:yum list
[root@centos8 ~]#yum list | head
Last metadata expiration check: 1:11:32 ago on Wed 20 Dec 2023 12:48:07 AM CST.
Installed Packages
GConf2.x86_64 3.2.6-22.el8 @AppStream
ModemManager.x86_64 1.10.8-2.el8 @anaconda
ModemManager-glib.x86_64 1.10.8-2.el8 @anaconda
NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-adsl.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-bluetooth.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-config-server.noarch 1:1.22.8-4.el8 @anaconda
NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda
只查看已安装的包
[root@centos8 ~]#yum list installed | tail -n 10
xz-libs.x86_64 5.2.4-3.el8 @anaconda
yajl.x86_64 2.1.0-10.el8 @AppStream
yelp.x86_64 2:3.28.1-3.el8 @AppStream
yelp-libs.x86_64 2:3.28.1-3.el8 @AppStream
yelp-tools.noarch 3.28.0-3.el8 @AppStream
yelp-xsl.noarch 3.28.0-2.el8 @AppStream
yum.noarch 4.2.17-6.el8 @anaconda
zenity.x86_64 3.28.1-1.el8 @AppStream
zip.x86_64 3.0-23.el8 @anaconda
zlib.x86_64 1.2.11-13.el8 @anaconda
查看可安装的包
[root@centos8 ~]#yum list available | head
Last metadata expiration check: 1:14:51 ago on Wed 20 Dec 2023 12:48:07 AM CST.
Available Packages
3proxy.x86_64 0.8.13-1.el8 epel
6tunnel.x86_64 0.13-1.el8 epel
AMF-devel.noarch 1.4.30-1.el8 epel
AMF-samples.noarch 1.4.30-1.el8 epel
Agda.x86_64 2.5.3-14.el8 epel
AusweisApp2.x86_64 1.22.3-1.el8 epel
AusweisApp2-data.noarch 1.22.3-1.el8 epel
AusweisApp2-doc.noarch 1.22.3-1.el8 epel
显示某个软件包可安装的所有版本
[root@wenzi ~]$yum list httpd --showduplicates
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Packages
httpd.x86_64 2.4.6-95.el7.centos base
httpd.x86_64 2.4.6-97.el7.centos updates
httpd.x86_64 2.4.6-97.el7.centos.1 updates
httpd.x86_64 2.4.6-97.el7.centos.2 updates
httpd.x86_64 2.4.6-97.el7.centos.4 updates
httpd.x86_64 2.4.6-97.el7.centos.5 updates
httpd.x86_64 2.4.6-98.el7.centos.6 updates
httpd.x86_64 2.4.6-98.el7.centos.7 updates
httpd.x86_64 2.4.6-99.el7.centos.1 updates
查看可升级的包
[root@centos8 ~]#yum list updates | head
Last metadata expiration check: 1:15:26 ago on Wed 20 Dec 2023 12:48:07 AM CST.
Available Upgrades
ModemManager.x86_64 1.10.8-4.el8 base
ModemManager-glib.x86_64 1.10.8-4.el8 base
NetworkManager.x86_64 1:1.32.10-4.el8 base
NetworkManager-adsl.x86_64 1:1.32.10-4.el8 base
NetworkManager-bluetooth.x86_64 1:1.32.10-4.el8 base
NetworkManager-config-server.noarch 1:1.32.10-4.el8 base
NetworkManager-libnm.x86_64 1:1.32.10-4.el8 base
NetworkManager-team.x86_64 1:1.32.10-4.el8 base
查看指定的包
[root@centos8 ~]#yum list nginx*
Last metadata expiration check: 1:16:02 ago on Wed 20 Dec 2023 12:48:07 AM CST.
Available Packages
nginx.x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream
nginx-all-modules.noarch 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream
nginx-filesystem.noarch 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream
nginx-mod-http-image-filter.x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream
nginx-mod-http-perl.x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream
nginx-mod-http-xslt-filter.x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream
nginx-mod-mail.x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream
nginx-mod-stream.x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream
安装软件:yum install 包名
[root@centos8 ~]#yum -y install nginx.x86_64
Last metadata expiration check: 1:19:21 ago on Wed 20 Dec 2023 12:48:07 AM CST.
Dependencies resolved.
=============================================================================================================================================================================================
Package Architecture Version Repository Size
=============================================================================================================================================================================================
Installing:
nginx x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream 570 k
Installing dependencies:
nginx-all-modules noarch 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream 23 k
nginx-filesystem noarch 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream 24 k
......
Complete!
重新安装包
[root@centos8 ~]#yum -y reinstall nginx
卸载软件:yum remove
[root@centos8 ~]#yum -y remove nginx
升级/降级
检查可用升级
[root@wenzi ~]#yum check-update
Loaded plugins: fastestmirror
Determining fastest mirrors
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
updates/7/x86_64/primary_db | 24 MB 00:00:24
NetworkManager.x86_64 1:1.18.8-2.el7_9 updates
NetworkManager-libnm.x86_64 1:1.18.8-2.el7_9 updates
NetworkManager-team.x86_64 1:1.18.8-2.el7_9 updates
NetworkManager-tui.x86_64 1:1.18.8-2.el7_9 updates
...
升级
yum upgrade|update 包名1 包名2
yum upgrade-minimal 最小化升级
降级
yum downgrade 包名1 包名2
查询
查看软件包信息
[root@wenzi ~]#yum info openssh-server
Installed Packages
Name : openssh-server
Arch : x86_64
Version : 7.4p1
Release : 21.el7
Size : 970 k
Repo : installed
From repo : anaconda
Summary : An open source SSH server daemon
URL : http://www.openssh.com/portable.html
License : BSD
Description : OpenSSH is a free version of SSH (Secure SHell), a program for logging
: into and executing commands on a remote machine. This package contains
: the secure shell daemon (sshd). The sshd daemon allows SSH clients to
: securely connect to your SSH server.
查看某文件是来自哪个软件包
[root@wenzi ~]#yum provides /etc/ssh/sshd_config
openssh-server-7.4p1-21.el7.x86_64 : An open source SSH server daemon
Repo : base
Matched from:
Filename : /etc/ssh/sshd_config
以关键字搜索软件包
[root@wenzi ~]#yum search httpd
httpd.x86_64 : Apache HTTP Server
httpd-devel.x86_64 : Development interfaces for the Apache HTTP server
httpd-manual.noarch : Documentation for the Apache HTTP server
...
查看软件包的依赖包
[root@wenzi ~]#yum deplist httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
package: httpd.x86_64 2.4.6-99.el7.centos.1
dependency: /bin/sh
provider: bash.x86_64 4.2.46-35.el7_9
dependency: /etc/mime.types
provider: mailcap.noarch 2.1.41-2.el7
dependency: /usr/sbin/groupadd
provider: shadow-utils.x86_64 2:4.6-5.el7
...
查看yum事务历史
yum 执行安装卸载命令会记录到相关日志中
- CentOS7:/var/log/yum.log
- CentOS8:/var/log/dnf.rpm.log /var/log/dnf.log
[root@wenzi ~]#yum -y install httpd > /dev/null
[root@wenzi ~]#yum history
Loaded plugins: fastestmirror
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
5 | root <root> | 2023-12-22 17:27 | Install | 5
4 | root <root> | 2023-12-22 17:02 | Erase | 1
3 | root <root> | 2023-12-22 17:02 | Install | 19
2 | System <unset> | 2023-10-27 07:39 | Install | 1
1 | System <unset> | 2023-10-27 07:35 | Install | 337
history list
查看第五个操作相关信息
[root@wenzi ~]#yum history info 5
Transaction ID : 5
Begin time : Fri Dec 22 17:27:14 2023
Begin rpmdb : 356:f520c5f69b5d3c84d32c8eb318d93fbef8e5683a
End time : 17:27:15 2023 (1 seconds)
End rpmdb : 361:9ed70742b0ae77a10989afaf91ae18d2027b6cf4
User : root <root>
Return-Code : Success
Command Line : -y install httpd
Transaction performed with:
Installed rpm-4.11.3-45.el7.x86_64 @anaconda
Installed yum-3.4.3-168.el7.centos.noarch @anaconda
Installed yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch @anaconda
Packages Altered:
Dep-Install apr-1.4.8-7.el7.x86_64 @base
Dep-Install apr-util-1.5.2-6.el7_9.1.x86_64 @updates
Install httpd-2.4.6-99.el7.centos.1.x86_64 @updates
Dep-Install httpd-tools-2.4.6-99.el7.centos.1.x86_64 @updates
Dep-Install mailcap-2.1.41-2.el7.noarch @base
history info
撤销第五个的操作
[root@wenzi ~]#yum history undo 5 -y
Undoing transaction 5, from Fri Dec 22 17:27:14 2023
Dep-Install apr-1.4.8-7.el7.x86_64 @base
Dep-Install apr-util-1.5.2-6.el7_9.1.x86_64 @updates
Install httpd-2.4.6-99.el7.centos.1.x86_64 @updates
Dep-Install httpd-tools-2.4.6-99.el7.centos.1.x86_64 @updates
Dep-Install mailcap-2.1.41-2.el7.noarch @base
...
Removed:
apr.x86_64 0:1.4.8-7.el7 apr-util.x86_64 0:1.5.2-6.el7_9.1 httpd.x86_64 0:2.4.6-99.el7.centos.1 httpd-tools.x86_64 0:2.4.6-99.el7.centos.1 mailcap.noarch 0:2.1.41-2.el7
Complete!
重新执行第五个操作
[root@wenzi ~]#yum history redo 5 -y
Repeating transaction 5, from Fri Dec 22 17:27:14 2023
Dep-Install apr-1.4.8-7.el7.x86_64 @base
Dep-Install apr-util-1.5.2-6.el7_9.1.x86_64 @updates
Install httpd-2.4.6-99.el7.centos.1.x86_64 @updates
Dep-Install httpd-tools-2.4.6-99.el7.centos.1.x86_64 @updates
Dep-Install mailcap-2.1.41-2.el7.noarch @base
....
Installed:
httpd.x86_64 0:2.4.6-99.el7.centos.1
Dependency Installed:
apr.x86_64 0:1.4.8-7.el7 apr-util.x86_64 0:1.5.2-6.el7_9.1 httpd-tools.x86_64 0:2.4.6-99.el7.centos.1 mailcap.noarch 0:2.1.41-2.el7
Complete!
实现私有yum仓库
下载所有yum仓库的相关包和meta数据
- CentOS8:dnf reposync --repoid=repoid --download-metadata -p /path
- CentOS7:reposync --repoid=repoid --download-metadata -p /path
- CentOS7及以前版本需要安装yum-utils工具
生成私有yum仓库的元数据并创建repodata目录:
createrepo 本地软件仓库存储目录
实验
以192.168.28.10为局域网yum仓库服务器,将本地光盘的BaseOS、AppSteam及阿里云的Extras、Epel制作成私有仓库。
192.168.28.10自身使用的是Aliyun源
----------服务器端----------
安装httpd,关键目录 /var/www/html
[root@centos8 ~]#yum -y install httpd
[root@centos8 ~]#systemctl enable --now httpd
将光盘/dev/sr0挂载至/data
[root@centos8 ~]#mount /dev/sr0 /data/
将本地光盘内BaseOS和AppStream复制到web服务器
[root@centos8 ~]#cp -a /data/{BaseOS,AppStream} /var/www/html/centos/8/
将aliyun的extras epel下载到局域网web服务器
[root@centos8 ~]#dnf reposync --repoid=extras --download-metadata -p /var/www/html/centos/8;dnf reposync --repoid=epel --download-metadata -p /var/www/html/centos/8
重启httpd
[root@centos8 ~]#systemctl restart httpd
----------客户端----------
先屏蔽自身的yum仓库。再加入私有yum仓库
[root@centos8 ~]#vim /etc/yum.repos.d/cs.repo
[BaseOS]
name=wenzi BaseOS
baseurl=http://192.168.28.10:/centos/8/BaseOS
gpgcheck=0
[AppStream]
name=wenzi AppStream
baseurl=http://192.168.28.10:/centos/8/AppStream
gpgcheck=0
[Extras]
name=wenzi Extras
baseurl=http://192.168.28.10:/centos/8/extras
gpgcheck=0
[epel]
name=wenzi epel
baseurl=http://192.168.28.10:/centos/8/epel
gpgcheck=0
[root@centos8 yum.repos.d]#dnf clean all;dnf makecache
验证
[root@centos8 ~]#dnf -y install htop
Last metadata expiration check: 0:02:18 ago on Sat 23 Dec 2023 12:32:13 AM CST.
Dependencies resolved.
=============================================================================================================================================================================================
Package Architecture Version Repository Size
...
Installed:
htop-3.2.1-1.el8.x86_64
Complete!
更改yum源
以阿里源为例
1、备份原文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、下载阿里源到 /etc/yum.repo.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
3、清理yum缓存
yum clean all
4、生成新缓存
yum makecache
5、检查
yum list
使用本机原版光盘
当没有网络时,可以使用本机光盘作为主要的软件来源
yum软件群组
命令:yum [群组功能] [软件群组]
选项参数:
grouplist:列出所有可用的软件群组
groupinfo:后接群组名,可以知道该群组内含的所有软件名
groupinstall:安装整个群组软件
groupupdate:升级某个软件群组
groupremove:移除某个软件群组
EPEL
EPEL 的全称叫 Extra Packages for Enterprise Linux。EPEL 是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上了 EPEL 之后,就相当于添加了一个第三方源。
安装epel
yum -y install epel-release
dpkg
类似rpm,不能自动解决依赖
列出当前已安装的软件包
dpkg -l 类似rpm -qa
列出某个软件包的详细信息
dpkd -s 包名 类型rpm -qi
列出某个软件包内的文件
dpkg -L 包名 类似rpm -ql
列出某个文件来自哪个软件包
dpkg -S 包名 类似rpm -qf
[root@wenzi ~]#dpkg -S /bin/ls
coreutils: /bin/ls
apt
apt包索引配置文件
- /etc/apt/sources.list
- /etc/apt/sources.list.d
ubuntu常用安装包
apt purge ufw lxd lxd-client lxcfs liblxc-common
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
安装软件包
安装软件指定版本需要 apt install nginx=1.17.10-0ubuntu1
显示软件可安装的版本
[root@wenzi ~]#apt-cache madison tree
tree | 2.0.2-1 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy/universe amd64 Packages
tree | 2.0.2-1 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy/universe Sources
[root@wenzi ~]#apt -y install tree=2.0.2-1
移除软件包
[root@wenzi ~]#apt remove tree
移除软件包及配置文件
[root@wenzi ~]#apt purge tree
刷新存储库索引
类似 yum clean all;yum makecache
[root@wenzi ~]#apt update
升级所有可升级的软件包
[root@wenzi ~]#apt upgrade
自动删除无用包并解决依赖关系(常用)
[root@wenzi ~]#apt autoremove tree
在升级软件包时自动处理依赖关系
[root@wenzi ~]#apt full-upgrade
显示软件列表
[root@wenzi ~]#apt list tree
Listing... Done
tree/jammy 2.0.2-1 amd64
搜索软件
[root@wenzi ~]#apt search tree
Sorting... Done
Full Text Search... Done
altree-examples/jammy 1.3.2-1build2 all
example files for ALTree
查看某个安装包的详细信息
[root@wenzi ~]#apt show tree
Package: tree
Version: 2.0.2-1
Priority: optional
Section: universe/utils
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Florian Ernst <florian@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 116 kB
Depends: libc6 (>= 2.34)
Homepage: http://mama.indstate.edu/users/ice/tree/
Task: xubuntu-desktop, lubuntu-desktop, ubuntu-mate-core, ubuntu-mate-desktop, ubuntu-budgie-desktop, ubuntu-budgie-desktop-raspi
Download-Size: 47.9 kB
APT-Sources: https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy/universe amd64 Packages
Description: displays an indented directory tree, in color
Tree is a recursive directory listing command that produces a depth indented
listing of files, which is colorized ala dircolors if the LS_COLORS environment
variable is set and output is to tty.
更换yum源
修改 /etc/apt/sources.list 配置文件,使用清华大学的软件仓库
[root@wenzi ~]#vim /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
更新仓库缓存
[root@wenzi ~]#apt update
源码编译安装
安装最小化安装常用开发工具、开发环境、软件依赖包
yum -y 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
./configure:检测环境并指定软件安装目录,生成Makefile文件。此阶段提示缺包,缺什么装什么。
make:编译生成可执行的二进制文件。当执行make时,make会在当前目录搜寻 makefile 文件,makefile 里记录了原始码和如何编译的详细信息。此阶段提示缺包,需要重新解压缩源码包,重新./configure,再make。
make install:真正的安装
流程: 安装依赖软件包/工具 >> 下载源码包 >> 解压 >> ./configure --prefix=xxx >> make >> make install
建议:
1、将源码包解压至 /usr/local/src 中。
2、安装时最好安装在 /usr/local/程序名 默认目录下。
3、./configure --help 可查看--prefix等类似参数
安装后配置:
1、二进制程序目录导入PATH环境变量 或 使用ln -s xxx /usr/local/bin/ 建立二进制程序的软链接
2、相关用户及文件。一些开源软件编译完成后需要手动创建相关用户及文件
3、导入帮助手册。vim /etc/man.config 或 man_db.conf,添加一个MANPATH
案例:编译安装 tengine 。
准备编译环境和编译器
yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
下载 tengine 源码包
解压缩源码包至 /usr/local/src 目录下
进入解压缩后的源码包内 /usr/local/src/tengine-2.3.2 ,配置自定义项,可指定属主和属组与安装目录,此例新建 www 用户用于web服务。
编译
安装
验证
卸载
将安装目录 /usr/local/tengine 删除即可。
案例:编译安装nginx
准备环境
[root@centos8 data]#yum -y 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
下载源码包并解压源码包至/usr/local/src/
[root@centos8 data]#wget http://nginx.org/download/nginx-1.24.0.tar.gz -P /usr/local/src/
[root@centos8 data]#tar -zx -f nginx-1.24.0.tar.gz -C /usr/local/src/
[root@centos8 data]#ls /usr/local/src/
nginx-1.24.0 nginx-1.24.0.tar.gz
生成Makefile文件。/apps/nginx 无需预先创建,会自动生成
[root@centos8 nginx-1.24.0]#./configure --prefix=/apps/nginx --with-http_ssl_module
多线程编译。通用方法:grep -c processor /proc/cpuinfo
[root@centos8 nginx-1.24.0]#make -j `grep -c processor /proc/cpuinfo`
安装
[root@centos8 nginx-1.24.0]#make install
[root@centos8 nginx-1.24.0]#tree /apps/ -d
/apps/
└── nginx
├── conf
├── html
├── logs
└── sbin
为二进制程序建立软连接
[root@centos8 ~]#ln -s /apps/nginx/sbin/nginx /usr/local/bin/
[root@centos8 ~]#nginx -version
nginx version: nginx/1.24.0
或修改PATH变量
[root@centos8 ~]#echo 'PATH=/apps/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
[root@centos8 ~]#. /etc/profile.d/nginx.sh
[root@centos8 ~]#nginx -version
nginx version: nginx/1.24.0
二进制安装
已经编译好的执行程序文件,解压后即可使用
流程:下载二进制包 >> 解压