LIUNX中程式包管理

来源:https://www.cnblogs.com/fengciaimei/archive/2020/04/13/12688973.html
-Advertisement-
Play Games

LIUNX中程式包管理 此內容僅為筆記,這一兩天給會重新整理補充上操作示例。 一、基礎 1、程式描述: 第一種描述: 程式+數據 第二種描述: 演算法+數據結構 2、程式的組成部分: ​ 1、二進位程式 ​ 2、配置文件,可以被查看其內容的文件 ​ 3、庫文件,庫文件不能獨立執行,只能被調用執行 ​ ...


LIUNX中程式包管理

此內容僅為筆記,這一兩天給會重新整理補充上操作示例。

 

一、基礎

1、程式描述:

    第一種描述: 程式+數據

    第二種描述: 演算法+數據結構

 

2、程式的組成部分:

​     1、二進位程式

​     2、配置文件,可以被查看其內容的文件

​     3、庫文件,庫文件不能獨立執行,只能被調用執行

​     4、幫助文件,可以被查看其內容的文件。

 

  解壓rpm軟體包

    rpm2cpio 包文件 | cpio -id

 

3、程式包管理器描述:

  最早的包管理器應用於Debian上,dpkg為第一個包管理工具。

​   程式的組成文件打包 成一個或者有限幾個文件

​       安裝

​       卸載

​       查詢

       升級

       校驗

 

    1> 包組成(每個包都有)

      包內的文件

      元數據,如:包的名稱 版本 依賴性 描述等

      可能會有包安裝或卸載時運行的腳本

 

    2> 資料庫(公共) /var/lib/rpm  自動更新

      程式包名稱及版本

      依賴關係

      功能說明

      包安裝後生成的各文件路徑及校驗碼信息

 

 

4、各個發行版本的程式包管理器和前端管理工具

    發行版     包管理器   包前端管理工具

​     Debian:   deb     apt-get/apt

​     ubuntu:      deb     apt-get/apt

 

​     RedHat:    rpm     yum/dnf

​     centos:    rpm      yum/dnf

 

 

5、程式編譯方式:

​   動態編譯:編譯時不會把庫文件編譯進程式,編譯好的程式不能獨立運行,需要調運庫文件,體積小。

​   靜態編譯:編譯時會把需要用到的庫文件都編譯進程式,編譯後程式沒有庫也可以獨立運行,體積大。

 

6、命令存放路徑:

    普通命令:/bin     /usr/bin   /usr/local/bin

    管理命令:/sbin      /usr/sbin      /usr/local/sbin

    庫文件:   /lib       /lib64      /usr/lib   /usr/lib64   /usr/local/lib   /usr/local/lib64

 

7、命令行展開

    命令行展開優先順序

    1、把命令行分成單個命令詞

    2、展開別名

    3、展開大括弧的聲明{}

    4、展開波浪線聲明~

    5、命令替換$()或··

    6、再次把命令行分成命令詞

    7、展開文件通配符

    8、準備I/O重定向

    9、運行命令

 

8、ABI 二進位編程介面

    windows:   PE

    LINUX:   ELF

 

    虛擬化技術

      LINUX:    WINE

      windows:      Cygwin

 

 

9、LINUX中源文件生成執行文件的過程

    預處理:gcc -E hello.c -o hello.i 對hello.c文件進行預處理,生成hello.i文件

    編譯:gcc -S hello.i  -o hello.s 對預處理文件hello.i進行編譯,生成彙編文件hello.s

    彙編:gcc -C hello.s -o hello.o 對彙編文件hello.s進行編譯,生成目標文件hello.o

    鏈接:hello.o -o hello 對目標文件hello.o文件進行鏈接,生成可執行文件

      gcc hello.c -o hello2 一步到位,直接生成執行文件

        選項:

          -c 源文件 把源文件編譯成目標文件

          -o 新名稱 目標文件1  目標文件2 把多個目標文件鏈接成可執行文件,並以新名稱命名

          -O 此選項主要用於優化編譯

          -l 庫文件名 指定編譯時需要的庫文件,此庫文件名不用寫開頭字母lib和結尾字母so

          -L 庫文件路徑 路徑為目錄,指定庫文件在什麼位置搜索。省略的話預設在/lib  /lib64 /usr/lib /usrlib64等位置搜索

          -I 頭文件 指定編譯時需要用到的頭文件

 

10、軟體包名

    軟體名-軟體版本號-編譯版本號-適用平臺-尾碼

          適用平臺

            noarch 無論任何機型都行

            i386 只要是x86平臺的架構都支持

            i686 32位平臺

            x86_64 64位平臺

 

    示例: 查看目錄內各個平臺架構的數量

      ls *.rpm | rev | cut -d . -f2 |rev | sort | uniq -c

練習題:在出現進度條出現的時候按esc鍵,進入光碟,然後進入救援模式 進行恢復 被刪除的基礎庫文件/lib64/libc.so.6

 

11、雜項

ldconfig命令

  此命令會更具/etc/ldconfig配置文件中記載目錄中的庫文件載入入緩存中,以提高調用程式的執行速度

  -p 顯示已經載入到記憶體中的庫文件

 

autofs工具可以自動掛在/misc/cd目錄下

    yum -y install autofs

    systemctl enable --now autofs

 

 

 

二、軟體包和包管理器

rpm命

  此命令主要是通過資料庫記錄的方式來管理軟體的安裝、卸載、升級、查詢、校驗等等。

  rpm軟體的數據包保存在/var/lib/rpm目錄中,如果此目錄中的數據損壞可以通過rpm --rebuilddb重建資料庫

   

  選項:

    -i --install 安裝

    -v 顯示詳細進度

    -h 顯示百分比,一個#表示2%

    -q 查詢

-qa 列出所有已安裝的包的,依賴於/var/lib/rpm內的資料庫

rpm -qa "*http*" 最好加上雙引號,怕出問題。可以直接模糊搜索

 

-qi 查詢某個已安裝過的安裝包的信息

-qpi 查詢指定未安裝的安裝包的信息

 

-ql 查詢指定已安裝的安裝包的安裝文件列表

-qpl 查詢指定未安裝的安裝包的要安裝文件列表

 

-qf 查詢某個命令或文件來自於哪個安裝包。很有用

-q --whatprovides /PATH/TO/COMMAND 查詢某個命令由哪個安裝包所提供

-q --whatrequires 查詢指定的安裝包被哪個包所依賴

 

-qc 查詢指定安裝包的配置文件

-qd 查詢指定安裝包的幫助文檔

-q --changelog 查詢指定安裝包的變更歷史

-q --scripts 查詢指定安裝包的腳本

-q --provides 查詢指定安裝包的提供了哪些依賴性

安裝腳本分為:

安裝前 preinstall

安裝後 postinstall

卸載前 preuninstalll

卸載後 postuninstalll

 

-U 或 --Update 升級或安裝軟體包

-F 或 --Freshen 只升級,如果沒有不安裝

 

-e --erase 卸載,如果卸載的時候別的包,依賴於要下載的包,就卸載不了

 

--root= 指定根目錄

--nodeps 忽略依賴性,強行安裝卸載

--force 強制安裝

--replacepkgs 重裝 和 force差不多,多用於重新安裝老版本軟體

 

 

包校驗

--import 導入密鑰

-K  或 --checksig 檢查簽名

 

-V 查詢文件是否有修改

-Va 檢查所有安裝包,看看哪些包被修改過

S file size differs 文件大小是否被改變

M modediffers 文件的類型或文件屬性是否被改變

5 MD5

D device major/minor number設備的主次代碼號是否被修改

L readlink path 軟連接指向路徑是否被修改

U user ownership 屬主是否被修改

G group ownership 屬組是否被修改

T mtime differ 文件的mtime是否被修改

P

 

c 配置文件  config file

d 文件   documentation

g 鬼文件,通常時該文件不被某個軟體所包含,較少發生  ghost file

l 授權文件  license file

r 自述文件  read me

 

 

 

yum命令

同一臺電腦上,只能運行一個yum。yum的日誌文件是/var/log/yum.log   centos8:/var/log/dnf.log

命令的選項優先順序高於配置文件

-y 不詢問,自動安裝

-q 或--quiet 靜默安裝

 

install 安裝

reinsatll 重新安裝

remove 卸載

update 升級

history 安裝歷史

history info # 具體查看安裝的幾個文件

history undo # 卸載指定第幾次操作

history redo # 重新安裝指定的第幾次操作

list 列表

repolist 倉庫列表

search 搜索

deplist 查詢依賴關係

info 查看軟體信息

repolist [all] 顯示yum源列表

 

--enablerepo=* 臨時啟用指定某個源

--disablerepo=* 臨時禁用指定某個源

 

--showduplicates 顯示重覆的源

--noplugins 禁用所有插件

clean all 清理緩存

provides /PATH/TO/COMMAND 查詢某個命令是由哪個安裝包提供

 

 

--nogpgcheck 禁止檢查gpgcheck,即使配置文件中指定了需要檢查,命令行的優先順序高於配置文件

 

包組

安裝卸載包組在引用包組名的時候需要加上引號

groupinstall 安裝包組

groupupdate 包組升級

grouplist 查詢包組列表

groupremove 包組卸載

groupinfo 查詢包組的信息

 

 

yum的repo配置文件中的變數

    $releasever 當前OS的發行版的主版本號  如 6 7 8

    $arch 平臺 如:i386  x86_64

    $basearch 基礎平臺 如:1386 ppc arm

 

 

 

createrepo命令

    createrepo [options] <directory>

        --basedir path 用戶一定輸出repodata的位置。常用於指向軟體包的父目錄

 

dpkg包管理器

-i 安裝

dpkg -i package.deb

-r 不完全卸載

dpkg -r  package.deb

-l 已安裝包的列表

dpkg -l

-L PACKAGE 列出軟體包所包含的文件,相當於rpm -ql

-S FILE 查詢某個文件屬於哪個包,相當於rpm -qf

-a 配置所偶沒有配置的軟體包

-c

 apt命令

  包前端管理工具,類似yum命令。debian系統的軟體包前端管理工具。之前的叫apt-get

apt install

apt remove

apt purge

apt update

apt upgrade

apt search

apt show

三、倉庫

 

倉庫一般由包文件、包文件元數據組成。客戶端會先下載元數據下載到本地緩存中。

然後校驗元數據,看看元數據是否下載有無問題。

根據元數據內信息再到倉庫中下載對應的各種包文件和依賴包文件。

最後安裝。

 

企業中可以單獨新建一個軟體倉庫伺服器。通過網路服務(http https ftp)共用給區域網內電腦遠程安裝。

 

本地電腦需要配置倉庫客戶端

centos 8中由兩個軟體倉庫 Base倉庫和AppStream倉庫

 

repodata 元數據存放目錄

Packages 軟體包存放目錄

 

關於倉庫路徑就是repodata所在的父目錄的絕對路徑就是倉庫路徑

倉庫配置文件必須放在yum.repo.d目錄下。尾碼必須是.repo

 

  倉庫元數據存放路徑/var/cache/yum

 

yum.conf(centos7)配置文件{

cachedir=/var/cache/yum/$basearch/$releasever

keepcache=0

debuglevel=2

logfile=/var/log/yum.log

exactarch=1

obsoletes=1

gpgcheck=1

plugins=1

installonly_limit=5

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum

distroverpkg=centos-release

    }

 

dnf.conf(centso8)配置文件{

gpgcheck=1 是否安裝前檢測簽名

installonly_limit=3 併發安裝

clean_requirements_on_remove=True 安裝後清空軟體

best=True 如果多個倉庫中某個軟體由多個版本,預設指定安裝最新版本

     }

 

 

repo配置倉庫{}

[] 中括弧內的是倉庫ID,必須項

name=Base 倉庫名

mirrorlist= 倉庫路徑,

baseurl= 倉庫路徑,建議使用國內

 

gpgcheck=1 校驗包簽名

enabled=1 是否啟用倉庫,如果不寫,預設是啟用的

gpgkey= 簽名保存路徑

 

 

 

 

創建私有倉庫

yum -y install httpd

systemctl enable --now httpd

mkdir /var/www/html/centos/8

mount /dev/sr0 /var/www/html/centos/8

 

用於同步倉庫中的軟體和元數據

  dnf reposync --repoid=REPOID --download-metadata -p /path centos8

  reposync --repoid=REPOID --download-metadata -p /path centos7

 

  creatrepo /var/www/heml/epel/ 手工創建元數據

    --basedir 指定repodata存放位置

 

 

 

四、源碼編譯安裝

./configure 最終目的是生成Makefile文件

  1、通過選型傳遞參數,指定安裝路徑、啟用特性等,執行時會參考用戶的指定的選項以及模板文件Makefile.in 生成Makefile

  2、檢查依賴到的外部環境,如依賴的軟體包

選項:

  --prefix=PATH/TO/SOMEDIR 指定總安裝目錄

  --sysconfdir=DIR 指定配置文件安裝目錄

 

備註:

  autoconf命令,用來生成configure腳本。部分軟體沒有configure腳本,需要事先自己手工生成,然後再去執行./configure等後續編譯安裝步驟,也可能已經實現提供號了Makefile文件

  automake命令,用於生成Makfiel.in模板文件

 make

根據上一步生成的Makefile文件,檢測依賴環境,進行構建應用程式

執行make命令之前一定要進入到解壓目錄,只有在解壓目錄才能執行成功make

make命令

選項:

-j # 如果軟體較大,可以指定多個CPU同時工作

備註:

make命令這一步也會檢查環境依賴配置,一般情況下是很順利,如果這一步檢測依賴環境報錯,

可能說明上一步configure配置處的Makefile文件有問題,需要刪掉整個文件夾,重新來。要不會出現莫名其妙的問題。

 

make install

複製文件到相應路徑

make install 命令會自動創建目錄。不用手工創建

 

可以通過README  INSTALL文件獲取安裝幫助

 

開法工具:make gcc

開發環境:開發庫(gblic:標準庫) 頭文件

 

系統通過修改/etc/man_db.conf文件指定新軟體幫助文件的路徑。以後就能直接使用man幫助了

 

 

五、備註

生產環境一般是最小安裝,推薦安裝軟體明細。

gcc

make

gcc-c++

glibc  glibc-devel

pcre pcre-devel 與正則表達式相關的包

openssl openssl-devel 與openssl加密相關的包

systemd-devel

zlib-devel 與壓縮相關的包

vim

lrzsz 傳輸文件工具,xshell給主機傳送文件需要依賴此包,它提供了rz命令

tree

tmux screen 視窗工具。在斷開鏈接後不會終止

lsof

tcpdump 抓包工具

wget 下載工具

net-tools 網路工具

iotop io的檢測工具

bc bzip2 zip unzip

nfs-utils

man-pages

 

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 清華大學鏡像地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json操作步驟:進入jenkins系統管理進入插件管理點擊高級,修改升級站點的地址為清華大學鏡像地址二、更換源配置1. 關閉對 update-ce... ...
  • 本文接上篇文章 C#獲取設備(Audio和Video)名稱 簡單整理,對第四種方式使用整理. EnumDevice.dll是網上下載的,也下載了對應的源代碼, 對應dll:https://download.csdn.net/download/QQ81867376/12322158 該dll的源碼: ... ...
  • 直接上測試代碼和運行結果 static void Main(string[] args) { #region 測試代碼 List dataList; dataList = DirectXHelper.GetAudioDevicesList(); OutPutInfo("DirectX獲... ...
  • 一、引言 日常生活中,很多的APP都有延遲隊列的影子。比如在手機淘寶上,經常遇到APP派發的限時消費紅包,一般有幾個小時或24小時不等。假如在紅包倒計時的過程中,沒有消費掉紅包的話,紅包會自動失效。假如上述行為使用RabbitMQ延時隊列來理解的話,就是在你收到限時消費紅包的時候,手機淘寶會自動發一 ...
  • 最近在做微信公眾號項目,配置過程中發現,如果公眾號已設置了自定義菜單,如用戶點擊菜單後自動回覆文字、圖片、語音、視頻和圖文消息等。但如果該公眾號第三方開髮網站也需要用到自動回覆功能,則需要啟用:開發>>基本配置>>伺服器配置。啟用時會提示:開啟後,用戶發送的消息將自動轉發到該配置地址,並且在網站中設 ...
  • 知道為什麼要用內插字元串,只有踩過坑的人才能明白,如果你曾今使用string.format超5個以上占位符,那其中的痛苦我想你肯定是能夠共鳴的。 一:痛苦經歷 先上一段曾今寫過的一段代碼,大家來體會一下: 這裡擁有多達8個占位符,當年寫這個的時候,會有三個痛點。 1. 占位符不能寫錯了 比如這裡的 ...
  • .net core 集成 sentry 進行異常報警 Intro Sentry 是一個實時事件日誌記錄和彙集的平臺。其專註於錯誤監控以及提取一切事後處理所需信息而不依賴於麻煩的用戶反饋。它分為客戶端和服務端,客戶端(目前客戶端有 C , Python, PHP, JavaScript, Ruby等多 ...
  • 一、引言 在具體業務中可能會遇到一些要提前處理的消息,比如普通客戶的消息按先進先出的順序處理,Vip客戶的消息要提前處理。在RabbitMQ中,消息優先順序的實現方式是:在聲明queue時設置隊列的x-max-priority屬性,然後在publish消息時,設置消息的優先順序即可。 RabbitMQ優 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...