<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 練習 14:包管理:Debian 包管理工具`aptitude` > 原文:[Exercise 14. Package management: Debian package management utility aptitude](https://archive.fo/NUuCN) > 譯者:[飛龍](https://github.com/wizardforcel) > 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) > 自豪地采用[谷歌翻譯](https://translate.google.cn/) 現在是時候獲得一些神圣的知識,向 Linux 系統添加新程序了。Linux 中的程序稱為軟件包,通常通過稱作包管理器的工具,從網絡倉庫安裝 。 + 軟件包通常是一個壓縮的程序,你可以像這樣安裝軟件包:`aptitude install program...`。為了避免安裝惡意程序,所有軟件包都由其創建者進行數字簽名,這意味著,如果軟件包在創建后修改,包管理器不允許你安裝它。 + 包管理器是一個程序,允許你安裝其他程序。許多程序依賴于其他程序,例如使用對話窗口的程序通常需要一個程序,它知道如何繪制這些窗口。包管理器知道這些依賴關系,當你要求它安裝一個特定的程序時,它會安裝所需的所有程序,你要求的程序需要這些程序來工作。Debian 包管理器稱為`aptitude`。 網絡倉庫是一個包含許多軟件包的站點,可以隨時安裝。 這是程序安裝的典型概述: ``` 你 使用包管理器搜索可用的程序 請求包管理器安裝程序 包管理器 查找安裝當前程序所需的所有程序 在包管理器數據庫中,為安裝標記它們 安裝所有需要的程序,包括你所需的程序 下載所有需要的程序 從這些軟件包提取文件,放到由 FHS 標準定義的,系統上的位置 對于每個程序,運行一個特殊的安裝腳本,允許它執行初始操作: 創建目錄 創建數據庫 生成默認配置文件 ...... 通過將已安裝程序的狀態修改為已安裝,更新系統包的數據庫 你 能夠立即運行你新安裝的程序 ``` 現在是時候了解提取文件的位置。在 Linux 中,所有相同類型的文件都安裝在相同的位置。例如,所有程序的可執行文件都安裝在`/usr/bin`中,程序的文檔在`/usr/share/doc`中,以及其它。這可能聽起來有點凌亂,但它是非常有用的。一個名為 FHS 的標準文件定義了哪些文件在哪里,你可以通過調用`man 7 hier`來查看它 。我將在下面向你顯示“文件系統層次標準”版本 2.2 的縮略版本: + `/` - 這是根目錄。這是整棵樹開始的地方。 + `/bin` - 此目錄包含在單用戶模式下需要的可執行程序,并將其升級或修復。 + `/boot` - 包含用于引導程序的靜態文件。該目錄僅保存引導過程所需的文件。映射安裝程序和配置文件應該放在`/sbin`和`/etc`。 + `/dev` - 特殊或設備文件,指的是物理設備。見`mknod(1)`。 + `/etc` - 包含機器本地的配置文件。 + `/home` - 在具有用戶主目錄的機器上,這些通常位于該目錄下。該目錄的結構取決于本地管理決策。 + `/lib` - 此目錄應該保存共享庫,它們是啟動系統和在根文件系統中運行命令所必需的。 + `/media` - 此目錄包含可移動介質的掛載點,如 CD 和 DVD 磁盤或 USB 記憶棒。 + `/mnt` - 此目錄是臨時裝載的文件系統的掛載點。在某些發行版中,`/mnt`包含子目錄,用作多個臨時文件系統的掛載點。 + `/proc` - 這是`proc`文件系統的掛載點,它提供運行進程和內核的信息。這個偽文件系統在`proc(5)`中有更詳細的描述。 + `/root` - 此目錄通常是`root`用戶的主目錄(可選)。 + `/sbin` - 類似`/bin`,此目錄包含啟動系統所需的命令,但通常不會由普通用戶執行。 + `/srv` - 此目錄包含由該系統提供的,站點特定的數據。 + `/tmp` - 此目錄包含臨時文件,可能會在沒有通知的情況下進行刪除,例如通過普通任務或在系統啟動時刪除。 + `/usr` - 此目錄通常是從單獨的分區掛載的。它應該只保存可共享的只讀數據,以便它可以由運行 Linux 的各種機器來掛載。 + `/usr/bin` - 這是可執行程序的主目錄。普通用戶執行的大多數程序不需要啟動或修復系統,它們不在本地安裝,并且應放在該目錄中。 + `/usr/local` - 這是站點本地的程序的通常位置。 + `/usr/share` - 此目錄包含具有特定應用程序數據的子目錄,可以在同一操作系統的不同架構之間共享。通常可以在這里找到,以前存在于`/usr/doc`或`/usr/ lib`或`/usr/man`中的東西。 + `/usr/share/doc` - 已安裝程序的文檔。 + `/var` - 此目錄包含可能會更改大小的文件,如假脫機和日志文件。 + `/var/log` - 其他日志文件。 + `/var/spool` - 各種程序的假脫機(或排隊)文件。 + `/var/tmp` - 類似`/tmp`,此目錄保存臨時文件,不知道存儲多長時間。 真的很長,但是你不需要記住它,`man hier 7`總是在那里。現在你只需要知道`/usr/bin`,`/usr/share`和`/var/log`。 讓我們再談談軟件包和包管理器。首先讓我們重復一下: + 每個程序都叫做軟件包。 + 包管理器管理所有軟件包,即安裝或卸載它們。 + 為此,包管理器擁有一個已安裝和可用軟件包的數據庫。 此數據庫中的每個包都具有狀態,指示是否安裝了軟件包,軟件包是否可以更新,以及其它。你可以通過鍵入`dpkg -l`打印當前安裝的軟件包。示例輸出如下所示: ``` user1@vm1:~$ dpkg -l | head | less -S Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Description +++-=====================-====================-======================================================== ii acpi 1.5-2 displays information on ACPI devices ii acpi-support-base 0.137-5 scripts for handling base ACPI events such as the power ii acpid 1:2.0.7-1squeeze4 Advanced Configuration and Power Interface event daemon ``` 你可以看到,這些狀態顯示在前三列中。從這個輸出可以看出,所有的包都需要安裝,或者確實已安裝,沒有錯誤,因為第三列是空的。以下是所有可能的包狀態列表。 第一列。預期的操作,我們想要對軟件包做的事情: + `u` = 未知(未知狀態) + `i` = 安裝。選擇該軟件包進行安裝。 + `r` = 選擇該軟件包進行卸載(即我們要刪除所有文件,但配置文件除外)。 + `p` = 清理 選擇軟件包進行清理(即我們要從系統目錄,甚至配置文件中刪除所有東西)。 + `h` = 標記為保留的包,不由`dpkg`處理,除非強制使用選項`-force-hold`。 第二列。軟件包狀態,軟件包目前是什么狀態: + `n` = 未安裝。該軟件包未安裝在你的系統上。 + `c` = 配置文件。系統上只存在該包的配置文件。 + `H` = 半安裝。包的安裝已經啟動,但由于某種原因未完成。 + `U` = 已解壓縮。該軟件包已解壓縮,但未配置。 + `F` = 半配置。軟件包已解壓縮,配置已啟動,但由于某些原因尚未完成。 + `W` = 觸發器等待。軟件包等待另一個包的觸發器處理。 + `t` = 觸發中。軟件包已被觸發。 + `i` = 已安裝.該軟件包已解壓縮并配置好。 第三欄。出錯的東西。 + `R` = 需要恢復。標有“需要恢復”的軟件包已損壞,需要重新安裝。這些包不能被刪除,除非強制使用選項`-force-remove-reinstreq`。 同樣,你不需要記住它,只需記住`info dpkg`命令,它將顯示這些信息。現在不要糾結包狀態,只要記住,`ii`狀態意味著這個包一切正常。 好了,讓我們安裝一個名為`midnight commander`的程序,它是一個文件管理器,它允許你直觀地瀏覽系統上的目錄,并對你的文件執行復制,重命名或刪除操作。 現在,你將了解如何搜索,安裝和刪除軟件包。 ## 這樣做 ``` 1: aptitude search mc | grep -i 'midnight commander' 2: sudo aptitude install mc 3: dpkg -L mc | grep '/usr/bin' 4: aptitude search mc | grep -i 'midnight commander' 5: mc 6: <F10><ENTER> 7: sudo aptitude remove mc ``` ## 你應該看到什么 ``` user1@vm1:~$ aptitude search mc | grep -i 'midnight commander' p mc - Midnight Commander - a powerful file manag p mc-dbg - Midnight Commander - a powerful file manag user1@vm1:/home/user1# sudo aptitude install mc The following NEW packages will be installed: libglib2.0-0{a} libglib2.0-data{a} mc shared-mime-info{a} 0 packages upgraded, 4 newly installed, 0 to remove and 0 not upgraded. Need to get 2,957 kB/5,157 kB of archives. After unpacking 17.0 MB will be used. Do you want to continue? [Y/n/?] y Get:1 http://mirror.yandex.ru/debian/ squeeze/main libglib2.0-0 amd64 2.24.2-1 [1,122 kB] Get:2 http://mirror.yandex.ru/debian/ squeeze/main libglib2.0-data all 2.24.2-1 [994 kB] Get:3 http://mirror.yandex.ru/debian/ squeeze/main shared-mime-info amd64 0.71-4 [841 kB] Fetched 2,957 kB in 0s (4,010 kB/s) Selecting previously deselected package libglib2.0-0. (Reading database ... 24220 files and directories currently installed.) Unpacking libglib2.0-0 (from .../libglib2.0-0_2.24.2-1_amd64.deb) ... Selecting previously deselected package libglib2.0-data. Unpacking libglib2.0-data (from .../libglib2.0-data_2.24.2-1_all.deb) ... Selecting previously deselected package mc. Unpacking mc (from .../mc_3%3a4.7.0.9-1_amd64.deb) ... Selecting previously deselected package shared-mime-info. Unpacking shared-mime-info (from .../shared-mime-info_0.71-4_amd64.deb) ... Processing triggers for man-db ... Setting up libglib2.0-0 (2.24.2-1) ... Setting up libglib2.0-data (2.24.2-1) ... Setting up mc (3:4.7.0.9-1) ... Setting up shared-mime-info (0.71-4) ... user1@vm1:~$ aptitude search mc | grep -i 'midnight commander' i mc - Midnight Commander - a powerful file manag p mc-dbg - Midnight Commander - a powerful file manag user1@vm1:~$ mc Left File Command Options Right |< ~ ---------------------.[^]>||< ~ ---------------------.[^]>| |'n Name | Size |Modify time||'n Name | Size |Modify time| |/.. |P--DIR|un 6 21:49||/.. |P--DIR|un 6 21:49| |/.aptitude | 4096|un 25 18:34||/.aptitude | 4096|un 25 18:34| |/.mc | 4096|un 25 18:41||/.mc | 4096|un 25 18:41| | .bash~story| 10149|un 21 12:01|| .bash~story| 10149|un 21 12:01| | .bash~ogout| 220|un 6 21:48|| .bash~ogout| 220|un 6 21:48| | .bashrc | 3184|un 14 12:24|| .bashrc | 3184|un 14 12:24| | .lesshst | 157|un 25 11:31|| .lesshst | 157|un 25 11:31| |----------------------------------------------------------------| |UP--DIR --UP--DIR | ----------- 6367M/7508M (84%) -------------- 6367M/7508M (84%) -| Hint: The homepage of GNU Midnight Commander: http://www.midnight- user1@vm1:~$ [^] 1Help 2Menu 3View 4Edit 5Copy 6Re~ov 7Mkdir 8De~te 9Pu~Dn user1@vm1:~$ sudo aptitude remove mc The following packages will be REMOVED: libglib2.0-0{u} libglib2.0-data{u} mc shared-mime-info{u} 0 packages upgraded, 0 newly installed, 4 to remove and 0 not upgraded. Need to get 0 B of archives. After unpacking 17.0 MB will be freed. Do you want to continue? [Y/n/?] y (Reading database ... 24637 files and directories currently installed.) Removing shared-mime-info ... Removing mc ... Removing libglib2.0-data ... Removing libglib2.0-0 ... Processing triggers for man-db ... user1@vm1:~$ ``` ## 解釋 1. 搜索包含`mc`的包名稱,并在描述中僅顯示包含`midnight commander`的包。`grep -i`意味著,`grep`應該搜索小寫和大寫字母,如果沒有它,`grep`不會顯示包含`Midnight Commander`的行,因為它們以大寫字母開頭。請注意,`mc`狀態為`p`狀態,這意味著這個包的所需操作是清理,并且由于其他兩個狀態列中沒有任何內容,因此我們可以得出結論,該包未安裝。你的`man`注意到了,最開始你沒有安裝這個包,但這也沒問題,因為沒有安裝的軟件包 默認是清除狀態。 1. 安裝軟件包`mc`。因為這個更改是系統范圍的,所以這個命令需要使用超級用戶,它能夠寫入系統中的所有目錄。還要注意 debian 軟件包管理器`aptitude`如何自動安裝`mc`所需的`libglib2.0-0`,`libglib2.0-data`和`shared-mime-info`軟件包。 1. 顯示你安裝的包的可執行文件。如你所見,他們放在`/usr/bin`中。 1. 調用`mc`。 1. 退出`mc`。 1. 刪除`mc`。請注意,自動安裝的軟件包也會自動刪除。如果在 安裝`mc`之后,你安裝一些需要這些軟件包的東西,`aptitude`將保留它們。 ## 附加題 好吧,東西真多。但這里還有更多: 鍵入`aptiutde search emacs`。弄清楚`v`的意思是什么。 閱讀或瀏覽 Debian 手冊中的[第 2 章 Debian 軟件包管理](http://www.debian.org/doc/manuals/debian-reference/ch02.en.html)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看