溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在Linux上安裝或卸載一個文件中列出的軟件包

發(fā)布時間:2021-09-01 12:45:10 來源:億速云 閱讀:132 作者:chen 欄目:系統(tǒng)運維

這篇文章主要講解了“如何在Linux上安裝或卸載一個文件中列出的軟件包”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何在Linux上安裝或卸載一個文件中列出的軟件包”吧!

在某些情況下,你可能想要將一個服務(wù)器上的軟件包列表安裝到另一個服務(wù)器上。例如,你已經(jīng)在服務(wù)器 A 上安裝了 15 個軟件包并且這些軟件包也需要被安裝到服務(wù)器 B、服務(wù)器 C 上等等。

我們可以手動去安裝這些軟件但是這將花費大量的時間。你可以手動安裝一倆個服務(wù)器,但是試想如果你有大概十個服務(wù)器呢。在這種情況下你無法手動完成工作,那么怎樣才能解決問題呢?

不要擔(dān)心我們可以幫你擺脫這樣的情況和場景。我們在這篇文章中增加了四種方法來克服困難。

我希望這可以幫你解決問題。我已經(jīng)在 Centos7 和 Ubuntu 18.04 上測試了這些命令。

我也希望這可以在其他發(fā)行版上工作。這僅僅需要使用該發(fā)行版的官方包管理器命令替代本文中的包管理器命令就行了。

如果想要 檢查 Linux 系統(tǒng)上已安裝的軟件包列表,請點擊鏈接。

例如,如果你想要在基于 RHEL 系統(tǒng)上創(chuàng)建軟件包列表請使用以下步驟。其他發(fā)行版也一樣。

# rpm -qa --last | head -15 | awk '{print $1}' > /tmp/pack1.txt # cat /tmp/pack1.txtmariadb-server-5.5.60-1.el7_5.x86_64perl-DBI-1.627-4.el7.x86_64perl-DBD-MySQL-4.023-6.el7.x86_64perl-PlRPC-0.2020-14.el7.noarchperl-Net-Daemon-0.48-5.el7.noarchperl-IO-Compress-2.061-2.el7.noarchperl-Compress-Raw-Zlib-2.061-4.el7.x86_64mariadb-5.5.60-1.el7_5.x86_64perl-Data-Dumper-2.145-3.el7.x86_64perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64httpd-2.4.6-88.el7.centos.x86_64mailcap-2.1.41-2.el7.noarchhttpd-tools-2.4.6-88.el7.centos.x86_64apr-util-1.5.2-6.el7.x86_64apr-1.4.8-3.el7_4.1.x86_64

方法一:如何在 Linux 上使用 cat 命令安裝文件中列出的包?

為實現(xiàn)這個目標(biāo),我將使用簡單明了的***種方法。為此,創(chuàng)建一個文件并添加上你想要安裝的包列表。

出于測試的目的,我們將只添加以下的三個軟件包名到文件中。

# cat /tmp/pack1.txt apache2mariadb-servernano

只要簡單的運行 apt 命令 就能在 Ubuntu/Debian 系統(tǒng)上一次性安裝所有的軟件包。

# apt -y install $(cat /tmp/pack1.txt) Reading package lists... DoneBuilding dependency treeReading state information... DoneThe following packages were automatically installed and are no longer required:  libopts25 sntpUse 'sudo apt autoremove' to remove them.Suggested packages:  apache2-doc apache2-suexec-pristine | apache2-suexec-custom spellThe following NEW packages will be installed:  apache2 mariadb-server nano0 upgraded, 3 newly installed, 0 to remove and 24 not upgraded.Need to get 339 kB of archives.After this operation, 1,377 kB of additional disk space will be used.Get:1 http://in.archive.ubuntu.com/ubuntu bionic-updates/main amd64 apache2 amd64 2.4.29-1ubuntu4.6 [95.1 kB]Get:2 http://in.archive.ubuntu.com/ubuntu bionic/main amd64 nano amd64 2.9.3-2 [231 kB]Get:3 http://in.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 mariadb-server all 1:10.1.38-0ubuntu0.18.04.1 [12.9 kB]Fetched 339 kB in 19s (18.0 kB/s)Selecting previously unselected package apache2.(Reading database ... 290926 files and directories currently installed.)Preparing to unpack .../apache2_2.4.29-1ubuntu4.6_amd64.deb ...Unpacking apache2 (2.4.29-1ubuntu4.6) ...Selecting previously unselected package nano.Preparing to unpack .../nano_2.9.3-2_amd64.deb ...Unpacking nano (2.9.3-2) ...Selecting previously unselected package mariadb-server.Preparing to unpack .../mariadb-server_1%3a10.1.38-0ubuntu0.18.04.1_all.deb ...Unpacking mariadb-server (1:10.1.38-0ubuntu0.18.04.1) ...Processing triggers for ufw (0.36-0ubuntu0.18.04.1) ...Setting up apache2 (2.4.29-1ubuntu4.6) ...Processing triggers for ureadahead (0.100.0-20) ...Processing triggers for install-info (6.5.0.dfsg.1-2) ...Setting up nano (2.9.3-2) ...update-alternatives: using /bin/nano to provide /usr/bin/editor (editor) in auto modeupdate-alternatives: using /bin/nano to provide /usr/bin/pico (pico) in auto modeProcessing triggers for systemd (237-3ubuntu10.20) ...Processing triggers for man-db (2.8.3-2ubuntu0.1) ...Setting up mariadb-server (1:10.1.38-0ubuntu0.18.04.1) ...

至于刪除,需要使用相同的命令格式和適當(dāng)?shù)倪x項。

# apt -y remove $(cat /tmp/pack1.txt)Reading package lists... DoneBuilding dependency treeReading state information... DoneThe following packages were automatically installed and are no longer required:  apache2-bin apache2-data apache2-utils galera-3 libaio1 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libconfig-inifiles-perl libdbd-mysql-perl libdbi-perl libjemalloc1 liblua5.2-0  libmysqlclient20 libopts25 libterm-readkey-perl mariadb-client-10.1 mariadb-client-core-10.1 mariadb-common mariadb-server-10.1 mariadb-server-core-10.1 mysql-common sntp socatUse 'apt autoremove' to remove them.The following packages will be REMOVED:  apache2 mariadb-server nano0 upgraded, 0 newly installed, 3 to remove and 24 not upgraded.After this operation, 1,377 kB disk space will be freed.(Reading database ... 291046 files and directories currently installed.)Removing apache2 (2.4.29-1ubuntu4.6) ...Removing mariadb-server (1:10.1.38-0ubuntu0.18.04.1) ...Removing nano (2.9.3-2) ...update-alternatives: using /usr/bin/vim.tiny to provide /usr/bin/editor (editor) in auto modeProcessing triggers for ufw (0.36-0ubuntu0.18.04.1) ...Processing triggers for install-info (6.5.0.dfsg.1-2) ...Processing triggers for man-db (2.8.3-2ubuntu0.1) ...

使用 yum 命令 在基于 RHEL (如 Centos、RHEL (Redhat) 和 OEL (Oracle Enterprise Linux)) 的系統(tǒng)上安裝文件中列出的軟件包。

# yum -y install $(cat /tmp/pack1.txt)

使用以命令在基于 RHEL (如 Centos、RHEL (Redhat) 和 OEL (Oracle Enterprise Linux)) 的系統(tǒng)上卸載文件中列出的軟件包。

# yum -y remove $(cat /tmp/pack1.txt)

使用以下 dnf 命令 在 Fedora 系統(tǒng)上安裝文件中列出的軟件包。

# dnf -y install $(cat /tmp/pack1.txt)

使用以下命令在 Fedora 系統(tǒng)上卸載文件中列出的軟件包。

# dnf -y remove $(cat /tmp/pack1.txt)

使用以下 zypper 命令 在 openSUSE 系統(tǒng)上安裝文件中列出的軟件包。

# zypper -y install $(cat /tmp/pack1.txt)

使用以下命令從 openSUSE 系統(tǒng)上卸載文件中列出的軟件包。

# zypper -y remove $(cat /tmp/pack1.txt)

使用以下 pacman 命令 在基于 Arch Linux (如 Manjaro 和 Antergos) 的系統(tǒng)上安裝文件中列出的軟件包。

# pacman -S $(cat /tmp/pack1.txt)

使用以下命令從基于 Arch Linux (如 Manjaro 和 Antergos) 的系統(tǒng)中卸載文件中列出的軟件包。

# pacman -Rs $(cat /tmp/pack1.txt)

方法二:如何使用 cat 和 xargs 命令在 Linux 中安裝文件中列出的軟件包。

甚至,我更喜歡使用這種方法,因為這是一種非常簡單直接的方法。

使用以下 apt 命令在基于 Debian 的系統(tǒng) (如 Debian、Ubuntu 和 Linux Mint) 上安裝文件中列出的軟件包。

# cat /tmp/pack1.txt | xargs apt -y install

使用以下 apt 命令 從基于 Debian 的系統(tǒng) (如 Debian、Ubuntu 和 Linux Mint) 上卸載文件中列出的軟件包。

# cat /tmp/pack1.txt | xargs apt -y remove

使用以下 yum 命令在基于 RHEL (如 Centos,RHEL (Redhat) 和 OEL (Oracle Enterprise Linux)) 的系統(tǒng)上安裝文件中列出的軟件包。

# cat /tmp/pack1.txt | xargs yum -y install

使用以命令從基于 RHEL (如 Centos、RHEL (Redhat) 和 OEL (Oracle Enterprise Linux)) 的系統(tǒng)上卸載文件中列出的軟件包。

# cat /tmp/pack1.txt | xargs yum -y remove

使用以下 dnf 命令在 Fedora 系統(tǒng)上安裝文件中列出的軟件包。

# cat /tmp/pack1.txt | xargs dnf -y install

使用以下命令從 Fedora 系統(tǒng)上卸載文件中列出的軟件包。

# cat /tmp/pack1.txt | xargs dnf -y remove

使用以下 zypper 命令在 openSUSE 系統(tǒng)上安裝文件中列出的軟件包。

# cat /tmp/pack1.txt | xargs zypper -y install

使用以下命令從 openSUSE 系統(tǒng)上卸載文件中列出的軟件包。

# cat /tmp/pack1.txt | xargs zypper -y remove

使用以下 pacman 命令在基于 Arch Linux (如 Manjaro 和 Antergos) 的系統(tǒng)上安裝文件中列出的軟件包。

# cat /tmp/pack1.txt | xargs pacman -S

使用下以命令從基于 Arch Linux (如 Manjaro 和 Antergos) 的系統(tǒng)上卸載文件中列出的軟件包。

# cat /tmp/pack1.txt | xargs pacman -Rs

方法三 : 如何使用 For 循環(huán)在 Linux 上安裝文件中列出的軟件包

我們也可以使用 for 循環(huán)命令來實現(xiàn)此目的。

安裝批量包可以使用以下一條 for 循環(huán)的命令。

# for pack in `cat /tmp/pack1.txt` ; do apt -y install $i; done

要使用 shell 腳本安裝批量包,請使用以下 for 循環(huán)。

# vi /opt/scripts/bulk-package-install.sh #!/bin/bashfor pack in `cat /tmp/pack1.txt`do apt -y remove $packdone

bulk-package-install.sh 設(shè)置可執(zhí)行權(quán)限。

# chmod + bulk-package-install.sh

***運行這個腳本。

# sh bulk-package-install.sh

方法四:如何使用 While 循環(huán)在 Linux 上安裝文件中列出的軟件包

我們也可以使用 while 循環(huán)命令來實現(xiàn)目的。

安裝批量包可以使用以下一條 while 循環(huán)的命令。

# file="/tmp/pack1.txt"; while read -r pack; do apt -y install $pack; done < "$file"

要使用 shell 腳本安裝批量包,請使用以下 while 循環(huán)。

# vi /opt/scripts/bulk-package-install.sh #!/bin/bashfile="/tmp/pack1.txt"while read -r packdo apt -y remove $packdone < "$file"

bulk-package-install.sh 設(shè)置可執(zhí)行權(quán)限。

# chmod + bulk-package-install.sh

***運行這個腳本。

# sh bulk-package-install.sh

感謝各位的閱讀,以上就是“如何在Linux上安裝或卸載一個文件中列出的軟件包”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何在Linux上安裝或卸載一個文件中列出的軟件包這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI