Linux中國

我們如何得知安裝的包來自哪個倉庫?

有時候你可能想知道安裝的軟體包來自於哪個倉庫。這將幫助你在遇到包衝突問題時進行故障排除。因為第三方倉庫擁有最新版本的軟體包,所以有時候當你試圖安裝一些包的時候會出現兼容性的問題。在 Linux 上一切都是可能的,因為你可以安裝一個即使在你的發行版系統上不能使用的包。你也可以安裝一個最新版本的包,即使你的發行版系統倉庫還沒有這個版本,怎麼做到的呢?這就是為什麼出現了第三方倉庫。它們允許用戶從庫中安裝所有可用的包。

幾乎所有的發行版系統都允許第三方軟體庫。一些發行版還會官方推薦一些不會取代基礎倉庫的第三方倉庫,例如 CentOS 官方推薦安裝 EPEL 庫

下面是常用的倉庫列表和它們的詳細信息。

  • CentOS: EPELELRepo 等是 Centos 社區認證倉庫
  • Fedora: RPMfusion 倉庫 是經常被很多 Fedora 用戶使用的倉庫。
  • ArchLinux: ArchLinux 社區倉庫包含了來自於 Arch 用戶倉庫的可信用戶審核通過的軟體包。
  • openSUSE: Packman 倉庫 為 openSUSE 提供了各種附加的軟體包,特別是但不限於那些在 openSUSE Build Service 應用黑名單上的與多媒體相關的應用和庫。它是 openSUSE 軟體包的最大外部軟體庫。
  • Ubuntu:個人軟體包歸檔(PPA)是一種軟體倉庫。開發者們可以創建這種倉庫來分發他們的軟體。你可以在 PPA 導航頁面找到相關信息。同時,你也可以啟用 Cananical 合作夥伴軟體倉庫。

倉庫是什麼?

軟體倉庫是存儲特定的應用程序的軟體包的集中場所。

所有的 Linux 發行版都在維護他們自己的倉庫,並允許用戶在他們的機器上獲取和安裝包。

每個廠商都提供了各自的包管理工具來管理它們的倉庫,例如搜索、安裝、更新、升級、刪除等等。

除了 RHEL 和 SUSE 以外大部分 Linux 發行版都是自由軟體。要訪問付費的倉庫,你需要購買其訂閱服務。

為什麼我們需要啟用第三方倉庫?

在 Linux 里,並不建議從源代碼安裝包,因為這樣做可能會在升級軟體和系統的時候產生很多問題,這也是為什麼我們建議從庫中安裝包而不是從源代碼安裝。

在 RHEL/CentOS 系統上我們如何得知安裝的軟體包來自哪個倉庫?

這可以通過很多方法實現。我們會給你所有可能的選擇,你可以選擇一個對你來說最合適的。

方法-1:使用 yum 命令

RHEL 和 CentOS 系統使用 RPM 包,因此我們能夠使用 Yum 包管理器 來獲得信息。

YUM 即 「Yellodog Updater, Modified」 是適用於基於 RPM 的系統例如 RHEL 和 CentOS 的一個開源命令行前端包管理工具。

yum 是從發行版倉庫和其他第三方庫中獲取、安裝、刪除、查詢和管理 RPM 包的一個主要工具。

# yum info apachetop
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * epel: epel.mirror.constant.com
Installed Packages
Name        : apachetop
Arch        : x86_64
Version     : 0.15.6
Release     : 1.el7
Size        : 65 k
Repo        : installed
From repo   : epel
Summary     : A top-like display of Apache logs
URL         : https://github.com/tessus/apachetop
License     : BSD
Description : ApacheTop watches a logfile generated by Apache (in standard common or
            : combined logformat, although it doesn't (yet) make use of any of the extra
            : fields in combined) and generates human-parsable output in realtime.

apachetop 包來自 EPEL 倉庫。

方法-2:使用 yumdb 命令

yumdb info 提供了類似於 yum info 的信息但是它又提供了包校驗和數據、類型、用戶信息(誰安裝的軟體包)。從 yum 3.2.26 開始,yum 已經開始在 rpmdatabase 之外存儲額外的信息(user 表示軟體是用戶安裝的,dep 表示它是作為依賴項引入的)。

# yumdb info lighttpd
Loaded plugins: fastestmirror
lighttpd-1.4.50-1.el7.x86_64
     checksum_data = a24d18102ed40148cfcc965310a516050ed437d728eeeefb23709486783a4d37
     checksum_type = sha256
     command_line = --enablerepo=epel install lighttpd apachetop aria2 atop axel
     from_repo = epel
     from_repo_revision = 1540756729
     from_repo_timestamp = 1540757483
     installed_by = 0
     origin_url = https://epel.mirror.constant.com/7/x86_64/Packages/l/lighttpd-1.4.50-1.el7.x86_64.rpm
     reason = user
     releasever = 7
     var_contentdir = centos
     var_infra = stock
     var_uuid = ce328b07-9c0a-4765-b2ad-59d96a257dc8

lighttpd 包來自 EPEL 倉庫。

方法-3:使用 rpm 命令

RPM 命令 即 「Red Hat Package Manager」 是一個適用於基於 Red Hat 的系統(例如 RHEL、CentOS、Fedora、openSUSE & Mageia)的強大的命令行包管理工具。

這個工具允許你在你的 Linux 系統/伺服器上安裝、更新、移除、查詢和驗證軟體。RPM 文件具有 .rpm 後綴名。RPM 包是用必需的庫和依賴關係構建的,不會與系統上安裝的其他包衝突。

# rpm -qi apachetop
Name        : apachetop
Version     : 0.15.6
Release     : 1.el7
Architecture: x86_64
Install Date: Mon 29 Oct 2018 06:47:49 AM EDT
Group       : Applications/Internet
Size        : 67020
License     : BSD
Signature   : RSA/SHA256, Mon 22 Jun 2015 09:30:26 AM EDT, Key ID 6a2faea2352c64e5
Source RPM  : apachetop-0.15.6-1.el7.src.rpm
Build Date  : Sat 20 Jun 2015 09:02:37 PM EDT
Build Host  : buildvm-22.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : https://github.com/tessus/apachetop
Summary     : A top-like display of Apache logs
Description :
ApacheTop watches a logfile generated by Apache (in standard common or
combined logformat, although it doesn't (yet) make use of any of the extra
fields in combined) and generates human-parsable output in realtime.

apachetop 包來自 EPEL 倉庫。

方法-4:使用 repoquery 命令

repoquery 是一個從 YUM 庫查詢信息的程序,類似於 rpm 查詢。

# repoquery -i httpd

Name        : httpd
Version     : 2.4.6
Release     : 80.el7.centos.1
Architecture: x86_64
Size        : 9817285
Packager    : CentOS BuildSystem 
Group       : System Environment/Daemons
URL         : http://httpd.apache.org/
Repository  : updates
Summary     : Apache HTTP Server
Source      : httpd-2.4.6-80.el7.centos.1.src.rpm
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.

httpd 包來自 CentOS updates 倉庫。

在 Fedora 系統上我們如何得知安裝的包來自哪個倉庫?

DNF 是 「Dandified yum」 的縮寫。DNF 是使用 hawkey/libsolv 庫作為後端的下一代 yum 包管理器(yum 的分支)。從 Fedora 18 開始 Aleš Kozumplík 開始開發 DNF,並最終在 Fedora 22 上得以應用/啟用。

dnf 命令 用於在 Fedora 22 以及之後的系統上安裝、更新、搜索和刪除包。它會自動解決依賴並使安裝包的過程變得順暢,不會出現任何問題。

$ dnf info tilix
Last metadata expiration check: 27 days, 10:00:23 ago on Wed 04 Oct 2017 06:43:27 AM IST.
Installed Packages
Name         : tilix
Version      : 1.6.4
Release      : 1.fc26
Arch         : x86_64
Size         : 3.6 M
Source       : tilix-1.6.4-1.fc26.src.rpm
Repo         : @System
From repo    : updates
Summary      : Tiling terminal emulator
URL          : https://github.com/gnunn1/tilix
License      : MPLv2.0 and GPLv3+ and CC-BY-SA
Description  : Tilix is a tiling terminal emulator with the following features:
             : 
             :  - Layout terminals in any fashion by splitting them horizontally or vertically
             :  - Terminals can be re-arranged using drag and drop both within and between
             :    windows
             :  - Terminals can be detached into a new window via drag and drop
             :  - Input can be synchronized between terminals so commands typed in one
             :    terminal are replicated to the others
             :  - The grouping of terminals can be saved and loaded from disk
             :  - Terminals support custom titles
             :  - Color schemes are stored in files and custom color schemes can be created by
             :    simply creating a new file
             :  - Transparent background
             :  - Supports notifications when processes are completed out of view
             : 
             : The application was written using GTK 3 and an effort was made to conform to
             : GNOME Human Interface Guidelines (HIG).

tilix 包來自 Fedora updates 倉庫。

在 openSUSE 系統上我們如何得知安裝的包來自哪個倉庫?

Zypper 是一個使用 libzypp 的命令行包管理器。Zypper 命令 提供了存儲庫訪問、依賴處理、包安裝等功能。

$ zypper info nano

Loading repository data...
Reading installed packages...

Information for package nano:
--------------------------Repository     : Main Repository (OSS)             
Name           : nano                               
Version        : 2.4.2-5.3                          
Arch           : x86_64                             
Vendor         : openSUSE                           
Installed Size : 1017.8 KiB                         
Installed      : No                                 
Status         : not installed                      
Source package : nano-2.4.2-5.3.src                 
Summary        : Pico editor clone with enhancements
Description    :                                    
    GNU nano is a small and friendly text editor. It aims to emulate
    the Pico text editor while also offering a few enhancements.

nano 包來自於 openSUSE Main 倉庫(OSS)。

在 ArchLinux 系統上我們如何得知安裝的包來自哪個倉庫?

Pacman 命令 即包管理器工具(package manager utility ),是一個簡單的用來安裝、構建、刪除和管理 Arch Linux 軟體包的命令行工具。Pacman 使用 libalpm 作為後端來執行所有的操作。

# pacman -Ss chromium
extra/chromium 48.0.2564.116-1
    The open-source project behind Google Chrome, an attempt at creating a safer, faster, and more stable browser
extra/qt5-webengine 5.5.1-9 (qt qt5)
    Provides support for web applications using the Chromium browser project
community/chromium-bsu 0.9.15.1-2
    A fast paced top scrolling shooter
community/chromium-chromevox latest-1
    Causes the Chromium web browser to automatically install and update the ChromeVox screen reader extention. Note: This
    package does not contain the extension code.
community/fcitx-mozc 2.17.2313.102-1
    Fcitx Module of A Japanese Input Method for Chromium OS, Windows, Mac and Linux (the Open Source Edition of Google Japanese
    Input)

chromium 包來自 ArchLinux extra 倉庫。

或者,我們可以使用以下選項獲得關於包的詳細信息。

# pacman -Si chromium
Repository      : extra
Name            : chromium
Version         : 48.0.2564.116-1
Description     : The open-source project behind Google Chrome, an attempt at creating a safer, faster, and more stable browser
Architecture    : x86_64
URL             : http://www.chromium.org/
Licenses        : BSD
Groups          : None
Provides        : None
Depends On      : gtk2  nss  alsa-lib  xdg-utils  bzip2  libevent  libxss  icu  libexif  libgcrypt  ttf-font  systemd  dbus
                  flac  snappy  speech-dispatcher  pciutils  libpulse  harfbuzz  libsecret  libvpx  perl  perl-file-basedir
                  desktop-file-utils  hicolor-icon-theme
Optional Deps   : kdebase-kdialog: needed for file dialogs in KDE
                  gnome-keyring: for storing passwords in GNOME keyring
                  kwallet: for storing passwords in KWallet
Conflicts With  : None
Replaces        : None
Download Size   : 44.42 MiB
Installed Size  : 172.44 MiB
Packager        : Evangelos Foutras 
Build Date      : Fri 19 Feb 2016 04:17:12 AM IST
Validated By    : MD5 Sum  SHA-256 Sum  Signature

chromium 包來自 ArchLinux extra 倉庫。

在基於 Debian 的系統上我們如何得知安裝的包來自哪個倉庫?

在基於 Debian 的系統例如 Ubuntu、LinuxMint 上可以使用兩種方法實現。

方法-1:使用 apt-cache 命令

apt-cache 命令 可以顯示存儲在 APT 內部資料庫的很多信息。這些信息是一種緩存,因為它們是從列在 source.list 文件里的不同的源中獲得的。這個過程發生在 apt 更新操作期間。

$ apt-cache policy python3
python3:
  Installed: 3.6.3-0ubuntu2
  Candidate: 3.6.3-0ubuntu3
  Version table:
     3.6.3-0ubuntu3 500
        500 http://in.archive.ubuntu.com/ubuntu artful-updates/main amd64 Packages
 *** 3.6.3-0ubuntu2 500
        500 http://in.archive.ubuntu.com/ubuntu artful/main amd64 Packages
        100 /var/lib/dpkg/status

python3 包來自 Ubuntu updates 倉庫。

方法-2:使用 apt 命令

APT 命令 即 「Advanced Packaging Tool」,是 apt-get 命令的替代品,就像 DNF 是如何取代 YUM 一樣。它是具有豐富功能的命令行工具並將所有的功能例如 apt-cacheapt-searchdpkgapt-cdromapt-configapt-ket 等包含在一個命令(APT)中,並且還有幾個獨特的功能。例如我們可以通過 APT 輕鬆安裝 .dpkg 包,但我們不能使用 apt-get 命令安裝,更多類似的功能都被包含進了 APT 命令。apt-get 因缺失了很多未被解決的特性而被 apt 取代。

$ apt -a show notepadqq
Package: notepadqq
Version: 1.3.2-1~artful1
Priority: optional
Section: editors
Maintainer: Daniele Di Sarli 
Installed-Size: 1,352 kB
Depends: notepadqq-common (= 1.3.2-1~artful1), coreutils (>= 8.20), libqt5svg5 (>= 5.2.1), libc6 (>= 2.14), libgcc1 (>= 1:3.0), libqt5core5a (>= 5.9.0~beta), libqt5gui5 (>= 5.7.0), libqt5network5 (>= 5.2.1), libqt5printsupport5 (>= 5.2.1), libqt5webkit5 (>= 5.6.0~rc), libqt5widgets5 (>= 5.2.1), libstdc++6 (>= 5.2)
Download-Size: 356 kB
APT-Sources: http://ppa.launchpad.net/notepadqq-team/notepadqq/ubuntu artful/main amd64 Packages
Description: Notepad++-like editor for Linux
 Text editor with support for multiple programming
 languages, multiple encodings and plugin support.

Package: notepadqq
Version: 1.2.0-1~artful1
Status: install ok installed
Priority: optional
Section: editors
Maintainer: Daniele Di Sarli 
Installed-Size: 1,352 kB
Depends: notepadqq-common (= 1.2.0-1~artful1), coreutils (>= 8.20), libqt5svg5 (>= 5.2.1), libc6 (>= 2.14), libgcc1 (>= 1:3.0), libqt5core5a (>= 5.9.0~beta), libqt5gui5 (>= 5.7.0), libqt5network5 (>= 5.2.1), libqt5printsupport5 (>= 5.2.1), libqt5webkit5 (>= 5.6.0~rc), libqt5widgets5 (>= 5.2.1), libstdc++6 (>= 5.2)
Homepage: http://notepadqq.altervista.org
Download-Size: unknown
APT-Manual-Installed: yes
APT-Sources: /var/lib/dpkg/status
Description: Notepad++-like editor for Linux
 Text editor with support for multiple programming
 languages, multiple encodings and plugin support.

notepadqq 包來自 Launchpad PPA。

via: https://www.2daygeek.com/how-do-we-find-out-the-installed-packages-came-from-which-repository/

作者:Prakash Subramanian 選題:lujun9972 譯者:zianglei 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國