草庐IT

Linux 软件管理

背对背依靠 2023-03-28 原文

Linux管理软件的三种方法:

  1. 包管理

  2. 使用仓库管理

  3. 编译安装

软件相关概念:

ABI:

ABI:Application Binary Interface。应用程序的二进制接口。windows和Linux的二进制格式不一样(ABI标准不同)

Windows与Linux不兼容

ELF (Executable and Linkable Format) --- Linux格式
PE (Portable Executable)--- Windows格式

API:

API:Application Programming Interface。应用程序开发接口。(开发者使用第三方的模块直接调用对应API接口)
windows的API和linux的API无法相互运行。

POSIX:

POSIX:Portable Operating System Interface 可移植操作系统接口。是一种接口的标准。(定义库的开发标准)降低了不同平台迁移的标准。

软件运行环境

Linux中的程序大部分都是C语言开发的

C程序实现过程:

C 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接

预处理: 预处理(宏定义、注释、加入include包含的文件等)生成 .i结尾的文本文件。
编译:生成汇编代码(汇编语言贴近机器语言) ,生成 .s结尾的汇编文本文件
汇编:将上面的文本文件转换成二进制(机器指令)文本文件。 .o (object -- 对象文件)结尾的二进制文本文件
链接:把别的一些.o文件链接在一起形成一个统一的文件。

实现这个过程所用到的工具:gcc

范例:gcc的编译过程
#分步骤编译运行
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 直接编译链接成可执行目标文件

静态链接和动态链接:

链接:程序用到的第三方模块库和程序链接在一起。
库:libary --- lib

静态链接: (不常用)

程序文件和第三方库形成一个文件。运行程序的时候需要把库和程序文件都加载到内存中了。

特点:

  1. 需要嵌入程序包
  2. 升级难,需重新编译
  3. 占用较多空间,迁移容易

动态链接:(共享库)

只把依赖加做一个动态链接,生成二进制程序文件的时候这个文件里面只有它自己的程序,没有库相关的程序。

特点:

  1. 如果多个程序使用到同一个库,就只需要加载一次库到内存。
  2. 占用较少空间,升级方便
  3. 程序迁移不方便

库(模块)文件

显示程序调用的库文件: ldd命令

例如: lss /usr/bin/ls
库文件很重要,破坏了库文件相关程序(命令)无法正常运行

库文件破坏修复方法:

  1. 通过救援模式使用光盘启动(光盘会加载要给简化的系统)
  2. 利用光盘中的系统来修复损坏的系统。

管理及查看本机装载的库文件
配置文件:
缓存文件:

软件包和包管理器

源代码直接编译安装很繁琐。为了减少使用开源软件的难度。一些开源公司把程序预先编译完成并且把相关的文件打成一个包,成为一个独立的包文件。
源码编译生成二进制文件+相关的文件(配置文件、文档文档文件等、脚本文件等) = 包文件

软件包:

刚开始只提供.tar.gz的方式打包源码文件。需要用户手动编译,后来debian诞生的时候,一个叫做dpkg的管理工具出现。它可以管理deb后缀的‘包’文件 (pkg -- package)
再后来redhat开发了自己的rpm包管理器。
查看包种有哪些文件的方法:cpio命令

软件包中的文件分类:

  1. 二进制文件
  2. 库文件
  3. 配置文件
  4. 帮助文件
  5. 脚本文件

包的命名:

源代码包:

name-VERSION.tar.gz|bz2|xz
程序名-版本号

rpm包:

name-VERSION-release.arch.rpm
软件名-版本号-打包相关信息-cpu架构

包的分类和拆包

linux种为了更好的选择包,就把大的软件拆开了。--- 避免只想使用一个功能,但是被迫把所有功能都装上了。
比如:httpd这个软件就把他拆成了很多个小包

包的依赖

软件包之间可能存在依赖关系。

程序包管理器:

用来管理包文件的。
将编译好的应用程序进行打包,实现程序的安装、卸载等功能。

常见的包管理器:

redhat: rpm包管理器,管理rpm文件 --- rpm:redhat package manager
debian:dpkg包管理器,管理deb文件

例:查看rpm包中存在那些文件:

#使用rpm2cpio转化为cpio流,然后使用cpio查看:
rpm2cpio file.rpm | cpio -tv

程序包管理器相关软件

程序包管理器相关文件

rpm包:

  1. 包文件:文件列表、元数据、脚本
  2. 数据库:/var/lib/rpm -- 存放已安装的包名、文件列表、依赖关系、安装路径等
    利用这个数据库就可以知道系统已经安装的rpm包和里面包含的文件、属性。
    安装和卸载软件都会首先检查这个数据库。

程序包的来源

1.系统光盘或官网
2.第三方组织
3.软件官方站点
4.自己制作

rpm 包管理器

  • 安装
  • 卸载
  • 查询(用的最多)
  • 升级

安装:rpm {-i|--install} [install-options] PACKAGE

安装的时候要写软件包的路径

命令选项:

-h:显示进度
-v:显示安装过程

安装选项:

--nodeps:忽略依赖关系
--test:测试安装

升级:rpm {-U|--upgrade} [install-options] PACKAGE

选项:

--force: 强制安装

查询:rpm {-q|--query} [select-options] [query-options]

选项:

-a:所有包
-f:查看指定的文件由哪个程序包安装生成
-c:查询程序的配置文件
-l:查看指定的程序包安装后生成的所有文件

例如:
rpm -ql 软件名 --- 查看已经装好的包里面包含的文件分别放在那些目录下。
rpm -qf file --- 查询磁盘上的文件来自于那个包

卸载: rpm {-e|--erase} PACKAGE

注意:当包卸载时,对应的配置文件不会删除, 以FILENAME.rpmsave形式保留
卸载只需要写软件的名称

选项:

--nodeps:强制删除

rpm包的数据库维护

rpm包安装生成的信息都放在:/var/lib/rpm 这个文件中
重建数据库:rpm {--initdb|--rebuilddb}
initdb: 初始化,如果事先不存在数据库,则新建之,否则,不执行任何操作
rebuilddb:重建已安装的包头的数据库索引目录

有关Linux 软件管理的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  3. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  4. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  5. ruby - (Ruby || Python) 窗口管理器 - 2

    我想用这两种语言中的任何一种(最好是ruby​​)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生

  6. ruby-on-rails - 事件管理员和自定义方法 - 2

    这是我在ActiveAdmin中的自定义页面ActiveAdmin.register_page"Settings"doaction_itemdolink_to('Importprojects','settings/importprojects')endcontentdopara"Text"endcontrollerdodefimportprojectssystem"rakedataspider:import_projects_ninja"para"OK"endendend我想做的是,当我单击“导入项目”按钮时,我想在Controller中执行rake任务。但是我无法访问该方法。可能是什

  7. ruby-on-rails - (Ruby,Rails) 基于角色的身份验证和用户管理...? - 2

    我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源

  8. 网站日志分析软件--让网站日志分析工作变得更简单 - 2

    网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.

  9. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  10. Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理 - 2

    文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分

随机推荐