当前位置: 首页 > news >正文

【linux】基础开发工具(1)

linux中安装软件

码源安装

开发者会把具体的项目的码源传到linux社区中或者github上,我们可以直接下载源代码,然后编译,最后手动解决软件的依赖问题,软件就可以使用了。

示例:

svn checkout https://svn.example.com/project/trunk

完整流程:

# 1. 下载源码(通常为 .tar.gz、.tar.xz、.zip 或 Git 仓库)
wget https://example.com/package-1.0.tar.gz# 2. 解压
tar -xzvf package-1.0.tar.gz
cd package-1.0# 3. 检查依赖并配置(生成 Makefile)
./configure          # 默认安装到 /usr/local/
./configure --prefix=/opt/mypackage  # 指定安装路径# 4. 编译(将源代码转为二进制)
make# 5. 安装(复制文件到系统目录)
sudo make install# 6. (可选)卸载
sudo make uninstall   # 如果 Makefile 支持

 RPM 软件包安装

RPM(RPM Package Manager,原名 Red Hat Package Manager)是 Linux 系统上的一种软件打包格式,文件扩展名为.rpm。我们可以通过rpm包安装软件

示例:

sudo rpm -ivh nginx-1.20.1-1.el7.x86_64.rpm

但是软件要运行光有一个软件是不行的,还需要解决相关的依赖问题 ,要把软件依赖的文件分别安装到需要的目录中,才能正常的运行软件。

包管理器安装

在手机上,安装软件都会有一个软件商店,而在liunx中,包管理器就是这个软件商店,它主要解决三大问题:1.自动化安装和卸载2.解决软件的依赖问题3.版本的控制和更新

主流发行版的包管理器:

  • Debian/Ubuntu:apt (.deb)

  • RHEL/CentOS:yum/dnf (.rpm)

  • Arch Linux:pacman

  • openSUSE:zypper

linux中的软件是由谁提供的呢?

生态是一个操作系统流行的关键,操作系统的好坏是由生态决定的,如果一个系统没有现成的使用方法,什么都需要我们自己动手开发,我们是不会选择使用这样的系统的。在linux社区中,有着许多开发者,他们开发的源码编译成软件会发布到社区中(适应不同机器的版本),我们通过apt(以ubuntu为例)将linux社区中软件安装到我们的linux机器中(适应自己机器的版本)。开源社区中的项目被各个公司使用之后,为了维持基于开源项目开发出的功能的稳定,公司会反哺开源社区,开源是这样一种商业模式。

包管理器安装的流程:

更新软件源

sudo apt update
# 相当于刷新"应用商店"的商品列表
# 会读取 /etc/apt/sources.list 配置

 搜索软件源

apt search nginx
# 支持正则表达式:apt search "^nginx-"

安装软件 

sudo apt install nginx
# 典型输出:
# Reading package lists... Done
# Building dependency tree... Done
# The following additional packages will be installed:
#   libnginx-mod-http-js nginx-common nginx-core
# 自动识别需要安装的12个依赖包

验证安装 

which nginx        # 查看安装位置
nginx -v           # 查看版本
systemctl status nginx  # 检查服务状态

卸载软件 

sudo apt remove nginx    # 保留配置文件
sudo apt purge nginx     # 彻底删除(含配置)
sudo apt autoremove      # 清理无用依赖

实操 

下面我们来实操一下,安装sl:

安装需要root权限,用apt直接安装

xian@hcss-ecs-887f:/$ su 
Password: 
root@hcss-ecs-887f:/# apt install -y sl
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:sl
0 upgraded, 1 newly installed, 0 to remove and 355 not upgraded.
Need to get 12.7 kB of archives.
After this operation, 60.4 kB of additional disk space will be used.
Get:1 https://mirrors.aliyun.com/ubuntu jammy/universe amd64 sl amd64 5.02-1 [12.7 kB]
Fetched 12.7 kB in 0s (48.0 kB/s)
Selecting previously unselected package sl.
(Reading database ... 83585 files and directories currently installed.)
Preparing to unpack .../archives/sl_5.02-1_amd64.deb ...
Unpacking sl (5.02-1) ...
Setting up sl (5.02-1) ...
Processing triggers for man-db (2.10.2-1) ...
Scanning processes...                                                                                                                                                                                                                                                                               
Scanning linux images...                                                                                                                                                                                                                                                                            Running kernel seems to be up-to-date.No services need to be restarted.No containers need to be restarted.No user sessions are running outdated binaries.No VM guests are running outdated hypervisor (qemu) binaries on this host.

运行结果:

删除:

root@hcss-ecs-887f:/# apt remove -y sl
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:sl
0 upgraded, 0 newly installed, 1 to remove and 355 not upgraded.
After this operation, 60.4 kB disk space will be freed.
(Reading database ... 83607 files and directories currently installed.)
Removing sl (5.02-1) ...
Processing triggers for man-db (2.10.2-1) ...
root@hcss-ecs-887f:/# 

下载软件的本质

无论是哪种下载方式都是先将软件从社区,网络中下载到自己的机器,然后再安装。本质上就是一个拷贝的过程,把网络中的软件拷贝到系统的某个目录中(普通用户权限不够,要root权限),不同的目录中装的内容也是不一样的,一个软件运行需要可执行程序,需要对应的库,同时在运行的过程中会产生临时文件和日志信息,这些信息都需要相应的目录下的文件来储存。

 下载安装需要root权限,但是需要把r和w权限开放出来,供others使用。因为下载的东西要所有用户都能使用。

镜像

下载任何一个东西都是需要下载链接的,linux系统中会内置软件源,下载时预置的软件源会告诉包管理器(apt)下载地址。软件源就储存在这个目录当中。

xian@hcss-ecs-887f:/$ cat /etc/apt/sources.list
cat /etc/apt/sources.list.d/*.list  # 第三方源
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse# deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiversedeb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable
deb [arch=amd64] http://nginx.org/packages/ubuntu jammy nginx
xian@hcss-ecs-887f:/$ 

我们可以看到,软件源并不是ubuntu社区,而是一个阿里云的镜像。这是为什么呢?Linux的服务器是在境外的,而大陆是无法访问的(有限制)。为了不同地区都能高效地使用linux会建立很多镜像站,当官网出问题时,用户也能正常地下载,且比访问官网更加快速(离得近)。 

自己内置的软件源也是储存在一个文件中的,不同的系统不同。ubuntu中储存在  /etc/apt/sources.list。

 cat /etc/apt/sources.list

更改软件源

软件源是储存在文件中的,更改软件源也就很简单了,把新的路径粘贴到文件中就可以了。

但是为了防止更改的过程中出问题,我们先将之前的软件源复制一下。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

然后直接用nano或者vim更改文件保存就好。

http://www.dtcms.com/a/263614.html

相关文章:

  • Flink Savepoints 总结
  • js代码09
  • Spring Boot WebSocket方案终极指南:Netty与官方Starter对比与实践
  • MFC的List Control自适应主界面大小
  • Android Gradle 插件和 Android Studio 兼容性
  • Windows下配置Docker+WSL集成开发环境
  • 【C#】如果有一个数值如 168.0000100,如何去除末尾的无效零,只显示有效的小数位数,让DeepSeek给我们解答
  • 飞算JavaAI—AI编程助手 | 编程领域的‘高科技指南针’,精准导航开发!
  • 小米YU7使用UWB技术,厘米级定位精准迎宾,安全防破解无感控车
  • CentOS系统新手指导手册
  • 微信小程序实现table表格
  • 【锂电池剩余寿命预测】GRU门控循环单元锂电池剩余寿命预测(Pytorch完整源码和数据)
  • 清理 Docker 缓存占用
  • 前端常用构建工具介绍及对比
  • 西交从语义到关系、重塑具身导航策略!RSRNav:基于空间关系推理的图像目标导航
  • android stdio 创建 mediaplayertest
  • SpringBoot+MySQL旅游资源管理系统Java源码
  • Reactor ConnectableFlux支持多订阅者
  • OpenCV CUDA模块设备层-----双曲正切函数tanh()
  • IDEA相关配置记录
  • 基于Python的GIS-RS多源数据处理(TIF/SHP/NC/...)【20250630】
  • 国产化替换中政务行业通用的解决方案是什么?需要注意的事项有哪些?
  • 03认证原理自定义认证添加认证验证码
  • Android阴影效果的艺术与实现:从入门到精通
  • GO 语言学习 之 Map
  • 38.docker启动python解释器,pycharm通过SSH服务直连
  • DBeaver 设置阿里云中央仓库地址的操作步骤
  • AlpineLinux安装docker
  • 我认知的AI宇宙系列第三期
  • 车载Tier1 supplier梳理