偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

帶你初步了解RPM包

系統(tǒng) Linux
也許,F(xiàn)edora 社區(qū)追求其促進(jìn)自由和開源的軟件及內(nèi)容的使命的著名的方式就是開發(fā) Fedora 軟件發(fā)行版了。因此,我們將很大一部分的社區(qū)資源用于此任務(wù)也就不足為奇了。這篇文章總結(jié)了這些軟件是如何“打包”的,以及使之成為可能的基礎(chǔ)工具,如 rpm 之類。

[[281330]]

也許,F(xiàn)edora 社區(qū)追求其促進(jìn)自由和開源的軟件及內(nèi)容的使命的著名的方式就是開發(fā) Fedora 軟件發(fā)行版了。因此,我們將很大一部分的社區(qū)資源用于此任務(wù)也就不足為奇了。這篇文章總結(jié)了這些軟件是如何“打包”的,以及使之成為可能的基礎(chǔ)工具,如 rpm 之類。

RPM:最小的軟件單元

可供用戶選擇的“版本”和“風(fēng)味版”(spins / labs / silverblue)其實(shí)非常相似。它們都是由各種軟件組成的,這些軟件經(jīng)過混合和搭配,可以很好地協(xié)同工作。它們之間的不同之處在于放入其中的具體工具不同。這種選擇取決于它們所針對(duì)的用例。所有這些的“版本”和“風(fēng)味版”基本組成單位都是 RPM 軟件包文件。

RPM 文件是類似于 ZIP 文件或 tarball 的存檔文件。實(shí)際上,它們使用了壓縮來減小存檔文件的大小。但是,除了文件之外,RPM 存檔中還包含有關(guān)軟件包的元數(shù)據(jù)。可以使用 rpm 工具查詢:

  1. $ rpm -q fpaste
  2. fpaste-0.3.9.2-2.fc30.noarch
  3.  
  4. $ rpm -qi fpaste
  5. Name : fpaste
  6. Version : 0.3.9.2
  7. Release : 2.fc30
  8. Architecture: noarch
  9. Install Date: Tue 26 Mar 2019 08:49:10 GMT
  10. Group : Unspecified
  11. Size : 64144
  12. License : GPLv3+
  13. Signature : RSA/SHA256, Thu 07 Feb 2019 15:46:11 GMT, Key ID ef3c111fcfc659b9
  14. Source RPM : fpaste-0.3.9.2-2.fc30.src.rpm
  15. Build Date : Thu 31 Jan 2019 20:06:01 GMT
  16. Build Host : buildhw-07.phx2.fedoraproject.org
  17. Relocations : (not relocatable)
  18. Packager : Fedora Project
  19. Vendor : Fedora Project
  20. URL : https://pagure.io/fpaste
  21. Bug URL : https://bugz.fedoraproject.org/fpaste
  22. Summary : A simple tool for pasting info onto sticky notes instances
  23. Description :
  24. It is often useful to be able to easily paste text to the Fedora
  25. Pastebin at http://paste.fedoraproject.org and this simple script
  26. will do that and return the resulting URL so that people may
  27. examine the output. This can hopefully help folks who are for
  28. some reason stuck without X, working remotely, or any other
  29. reason they may be unable to paste something into the pastebin
  30.  
  31. $ rpm -ql fpaste
  32. /usr/bin/fpaste
  33. /usr/share/doc/fpaste
  34. /usr/share/doc/fpaste/README.rst
  35. /usr/share/doc/fpaste/TODO
  36. /usr/share/licenses/fpaste
  37. /usr/share/licenses/fpaste/COPYING
  38. /usr/share/man/man1/fpaste.1.gz

安裝 RPM 軟件包后,rpm 工具可以知道具體哪些文件被添加到了系統(tǒng)中。因此,刪除該軟件包也會(huì)刪除這些文件,并使系統(tǒng)保持一致狀態(tài)。這就是為什么要盡可能地使用 rpm 安裝軟件,而不是從源代碼安裝軟件的原因。

依賴關(guān)系

如今,完全獨(dú)立的軟件已經(jīng)非常罕見。甚至 fpaste,連這樣一個(gè)簡單的單個(gè)文件的 Python 腳本,都需要安裝 Python 解釋器。因此,如果系統(tǒng)未安裝 Python(幾乎不可能,但有可能),則無法使用 fpaste。用打包者的術(shù)語來說,“Python 是 fpaste運(yùn)行時(shí)依賴項(xiàng)。”

構(gòu)建 RPM 軟件包時(shí)(本文不討論構(gòu)建 RPM 的過程),生成的歸檔文件中包括了所有這些元數(shù)據(jù)。這樣,與 RPM 軟件包歸檔文件交互的工具就知道必須要安裝其它的什么東西,以便 fpaste 可以正常工作:

  1. $ rpm -q --requires fpaste
  2. /usr/bin/python3
  3. python3
  4. rpmlib(CompressedFileNames) <= 3.0.4-1
  5. rpmlib(FileDigests) <= 4.6.0-1
  6. rpmlib(PayloadFilesHavePrefix) <= 4.0-1
  7. rpmlib(PayloadIsXz) <= 5.2-1
  8.  
  9. $ rpm -q --provides fpaste
  10. fpaste = 0.3.9.2-2.fc30
  11.  
  12. $ rpm -qi python3
  13. Name : python3
  14. Version : 3.7.3
  15. Release : 3.fc30
  16. Architecture: x86_64
  17. Install Date: Thu 16 May 2019 18:51:41 BST
  18. Group : Unspecified
  19. Size : 46139
  20. License : Python
  21. Signature : RSA/SHA256, Sat 11 May 2019 17:02:44 BST, Key ID ef3c111fcfc659b9
  22. Source RPM : python3-3.7.3-3.fc30.src.rpm
  23. Build Date : Sat 11 May 2019 01:47:35 BST
  24. Build Host : buildhw-05.phx2.fedoraproject.org
  25. Relocations : (not relocatable)
  26. Packager : Fedora Project
  27. Vendor : Fedora Project
  28. URL : https://www.python.org/
  29. Bug URL : https://bugz.fedoraproject.org/python3
  30. Summary : Interpreter of the Python programming language
  31. Description :
  32. Python is an accessible, high-level, dynamically typed, interpreted programming
  33. language, designed with an emphasis on code readability.
  34. It includes an extensive standard library, and has a vast ecosystem of
  35. third-party libraries.
  36.  
  37. The python3 package provides the "python3" executable: the reference
  38. interpreter for the Python language, version 3.
  39. The majority of its standard library is provided in the python3-libs package,
  40. which should be installed automatically along with python3.
  41. The remaining parts of the Python standard library are broken out into the
  42. python3-tkinter and python3-test packages, which may need to be installed
  43. separately.
  44.  
  45. Documentation for Python is provided in the python3-docs package.
  46.  
  47. Packages containing additional libraries for Python are generally named with
  48. the "python3-" prefix.
  49.  
  50. $ rpm -q --provides python3
  51. python(abi) = 3.7
  52. python3 = 3.7.3-3.fc30
  53. python3(x86-64) = 3.7.3-3.fc30
  54. python3.7 = 3.7.3-3.fc30
  55. python37 = 3.7.3-3.fc30

解決 RPM 依賴關(guān)系

雖然 rpm 知道每個(gè)歸檔文件所需的依賴關(guān)系,但不知道在哪里找到它們。這是設(shè)計(jì)使然:rpm 僅適用于本地文件,必須具體告知它們的位置。因此,如果你嘗試安裝單個(gè) RPM 軟件包,則 rpm 找不到該軟件包的運(yùn)行時(shí)依賴項(xiàng)時(shí)就會(huì)出錯(cuò)。本示例嘗試安裝從 Fedora 軟件包集中下載的軟件包:

  1. $ ls
  2. python3-elephant-0.6.2-3.fc30.noarch.rpm
  3.  
  4. $ rpm -qpi python3-elephant-0.6.2-3.fc30.noarch.rpm
  5. Name : python3-elephant
  6. Version : 0.6.2
  7. Release : 3.fc30
  8. Architecture: noarch
  9. Install Date: (not installed)
  10. Group : Unspecified
  11. Size : 2574456
  12. License : BSD
  13. Signature : (none)
  14. Source RPM : python-elephant-0.6.2-3.fc30.src.rpm
  15. Build Date : Fri 14 Jun 2019 17:23:48 BST
  16. Build Host : buildhw-02.phx2.fedoraproject.org
  17. Relocations : (not relocatable)
  18. Packager : Fedora Project
  19. Vendor : Fedora Project
  20. URL : http://neuralensemble.org/elephant
  21. Bug URL : https://bugz.fedoraproject.org/python-elephant
  22. Summary : Elephant is a package for analysis of electrophysiology data in Python
  23. Description :
  24. Elephant - Electrophysiology Analysis Toolkit Elephant is a package for the
  25. analysis of neurophysiology data, based on Neo.
  26.  
  27. $ rpm -qp --requires python3-elephant-0.6.2-3.fc30.noarch.rpm
  28. python(abi) = 3.7
  29. python3.7dist(neo) >= 0.7.1
  30. python3.7dist(numpy) >= 1.8.2
  31. python3.7dist(quantities) >= 0.10.1
  32. python3.7dist(scipy) >= 0.14.0
  33. python3.7dist(six) >= 1.10.0
  34. rpmlib(CompressedFileNames) <= 3.0.4-1
  35. rpmlib(FileDigests) <= 4.6.0-1
  36. rpmlib(PartialHardlinkSets) <= 4.0.4-1
  37. rpmlib(PayloadFilesHavePrefix) <= 4.0-1
  38. rpmlib(PayloadIsXz) <= 5.2-1
  39.  
  40. $ sudo rpm -i ./python3-elephant-0.6.2-3.fc30.noarch.rpm
  41. error: Failed dependencies:
  42. python3.7dist(neo) >= 0.7.1 is needed by python3-elephant-0.6.2-3.fc30.noarch
  43. python3.7dist(quantities) >= 0.10.1 is needed by python3-elephant-0.6.2-3.fc30.noarch

理論上,你可以下載 python3-elephant 所需的所有軟件包,并告訴 rpm 它們都在哪里,但這并不方便。如果 python3-neopython3-quantities 還有其它的運(yùn)行時(shí)要求怎么辦?很快,這種“依賴鏈”就會(huì)變得相當(dāng)復(fù)雜。

存儲(chǔ)庫

幸運(yùn)的是,有了 dnf 和它的朋友們,可以幫助解決此問題。與 rpm 不同,dnf 能感知到存儲(chǔ)庫。存儲(chǔ)庫是程序包的集合,帶有告訴 dnf 這些存儲(chǔ)庫包含什么內(nèi)容的元數(shù)據(jù)。所有 Fedora 系統(tǒng)都帶有默認(rèn)啟用的默認(rèn) Fedora 存儲(chǔ)庫:

  1. $ sudo dnf repolist
  2. repo id              repo name                             status
  3. fedora               Fedora 30 - x86_64                    56,582
  4. fedora-modular       Fedora Modular 30 - x86_64               135
  5. updates              Fedora 30 - x86_64 - Updates           8,573
  6. updates-modular      Fedora Modular 30 - x86_64 - Updates     138
  7. updates-testing      Fedora 30 - x86_64 - Test Updates      8,458

在 Fedora 快速文檔中有這些存儲(chǔ)庫以及如何管理它們的更多信息。

dnf 可用于查詢存儲(chǔ)庫以獲取有關(guān)它們包含的軟件包信息。它還可以在這些存儲(chǔ)庫中搜索軟件,或從中安裝/卸載/升級(jí)軟件包:

  1. $ sudo dnf search elephant
  2. Last metadata expiration check: 0:05:21 ago on Sun 23 Jun 2019 14:33:38 BST.
  3. ============================================================================== Name & Summary Matched: elephant ==============================================================================
  4. python3-elephant.noarch : Elephant is a package for analysis of electrophysiology data in Python
  5. python3-elephant.noarch : Elephant is a package for analysis of electrophysiology data in Python
  6.  
  7. $ sudo dnf list \*elephant\*
  8. Last metadata expiration check: 0:05:26 ago on Sun 23 Jun 2019 14:33:38 BST.
  9. Available Packages
  10. python3-elephant.noarch 0.6.2-3.fc30 updates-testing
  11. python3-elephant.noarch 0.6.2-3.fc30 updates

安裝依賴項(xiàng)

現(xiàn)在使用 dnf 安裝軟件包時(shí),它將解決所有必需的依賴項(xiàng),然后調(diào)用 rpm 執(zhí)行該事務(wù)操作:

  1. $ sudo dnf install python3-elephant
  2. Last metadata expiration check: 0:06:17 ago on Sun 23 Jun 2019 14:33:38 BST.
  3. Dependencies resolved.
  4. ==============================================================================================================================================================================================
  5. Package Architecture Version Repository Size
  6. ==============================================================================================================================================================================================
  7. Installing:
  8. python3-elephant noarch 0.6.2-3.fc30 updates-testing 456 k
  9. Installing dependencies:
  10. python3-neo noarch 0.8.0-0.1.20190215git49b6041.fc30 fedora 753 k
  11. python3-quantities noarch 0.12.2-4.fc30 fedora 163 k
  12. Installing weak dependencies:
  13. python3-igor noarch 0.3-5.20150408git2c2a79d.fc30 fedora 63 k
  14.  
  15. Transaction Summary
  16. ==============================================================================================================================================================================================
  17. Install 4 Packages
  18.  
  19. Total download size: 1.4 M
  20. Installed size: 7.0 M
  21. Is this ok [y/N]: y
  22. Downloading Packages:
  23. (1/4): python3-igor-0.3-5.20150408git2c2a79d.fc30.noarch.rpm 222 kB/s | 63 kB 00:00
  24. (2/4): python3-elephant-0.6.2-3.fc30.noarch.rpm 681 kB/s | 456 kB 00:00
  25. (3/4): python3-quantities-0.12.2-4.fc30.noarch.rpm 421 kB/s | 163 kB 00:00
  26. (4/4): python3-neo-0.8.0-0.1.20190215git49b6041.fc30.noarch.rpm 840 kB/s | 753 kB 00:00
  27. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  28. Total 884 kB/s | 1.4 MB 00:01
  29. Running transaction check
  30. Transaction check succeeded.
  31. Running transaction test
  32. Transaction test succeeded.
  33. Running transaction
  34. Preparing : 1/1
  35. Installing : python3-quantities-0.12.2-4.fc30.noarch 1/4
  36. Installing : python3-igor-0.3-5.20150408git2c2a79d.fc30.noarch 2/4
  37. Installing : python3-neo-0.8.0-0.1.20190215git49b6041.fc30.noarch 3/4
  38. Installing : python3-elephant-0.6.2-3.fc30.noarch 4/4
  39. Running scriptlet: python3-elephant-0.6.2-3.fc30.noarch 4/4
  40. Verifying : python3-elephant-0.6.2-3.fc30.noarch 1/4
  41. Verifying : python3-igor-0.3-5.20150408git2c2a79d.fc30.noarch 2/4
  42. Verifying : python3-neo-0.8.0-0.1.20190215git49b6041.fc30.noarch 3/4
  43. Verifying : python3-quantities-0.12.2-4.fc30.noarch 4/4
  44.  
  45. Installed:
  46. python3-elephant-0.6.2-3.fc30.noarch python3-igor-0.3-5.20150408git2c2a79d.fc30.noarch python3-neo-0.8.0-0.1.20190215git49b6041.fc30.noarch python3-quantities-0.12.2-4.fc30.noarch
  47.  
  48. Complete!

請(qǐng)注意,dnf 甚至還安裝了python3-igor,而它不是 python3-elephant 的直接依賴項(xiàng)。

DnfDragora:DNF 的一個(gè)圖形界面

盡管技術(shù)用戶可能會(huì)發(fā)現(xiàn) dnf 易于使用,但并非所有人都這樣認(rèn)為。Dnfdragora 通過為 dnf 提供圖形化前端來解決此問題。

 

dnfdragora (version 1.1.1-2 on Fedora 30) listing all the packages installed on a system.

從上面可以看到,dnfdragora 似乎提供了 dnf 的所有主要功能。

Fedora 中還有其他工具也可以管理軟件包,GNOME 的“軟件Software”和“發(fā)現(xiàn)Discover”就是其中兩個(gè)。GNOME “軟件”僅專注于圖形應(yīng)用程序。你無法使用這個(gè)圖形化前端來安裝命令行或終端工具,例如 htopweechat。但是,GNOME “軟件”支持安裝 dnf 所不支持的 Flatpak 和 Snap 應(yīng)用程序。它們是針對(duì)不同目標(biāo)受眾的不同工具,因此提供了不同的功能。

這篇文章僅觸及到了 Fedora 軟件的生命周期的冰山一角。本文介紹了什么是 RPM 軟件包,以及使用 rpmdnf 的主要區(qū)別。

在以后的文章中,我們將詳細(xì)介紹:

  • 創(chuàng)建這些程序包所需的過程
  • 社區(qū)如何測試它們以確保它們正確構(gòu)建
  • 社區(qū)用來將其給到社區(qū)用戶的基礎(chǔ)設(shè)施

 

 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2023-01-06 19:19:16

TensorFlow

2022-12-22 13:18:54

深度學(xué)習(xí)框架

2022-09-26 11:30:40

MQTT協(xié)議客戶端協(xié)議

2019-09-27 09:40:06

ElvishShellLinux

2010-07-05 16:20:32

NetBEUI協(xié)議

2016-08-03 15:32:50

GitLinux開源

2009-11-11 16:34:45

Visual Stud

2009-09-25 14:41:15

Hibernate對(duì)象

2021-05-21 09:01:29

JavaScript 前端函數(shù)閉包

2020-12-31 12:16:49

SAP云計(jì)算SAP產(chǎn)品

2021-02-03 16:22:43

新基建SAP

2021-05-31 14:22:56

物聯(lián)網(wǎng)物聯(lián)網(wǎng)安全

2010-09-02 16:59:35

資源預(yù)留協(xié)議

2021-12-10 10:29:07

在線客服系統(tǒng)

2012-08-30 14:17:42

IBMdw

2010-09-09 16:21:32

TCP IP網(wǎng)絡(luò)協(xié)議

2021-09-02 15:29:42

鴻蒙HarmonyOS應(yīng)用

2018-03-01 16:25:52

Linux內(nèi)核內(nèi)存管理

2023-11-20 08:18:49

Netty服務(wù)器

2019-03-26 10:50:22

Python面向?qū)ο?/a>編程語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)