当前位置: 首页 > 科技观察

如何在Linux上安装-卸载一个文件中列出的软件包?

时间:2023-03-14 22:56:52 科技观察

在某些情况下,您可能希望将软件包列表从一台服务器安装到另一台服务器。比如你在服务器A上安装了15个包,这些包还需要在服务器B、服务器C等上安装,我们可以手动安装这些软件,但是会花费很多时间。您可以手动安装一两台服务器,但想象一下如果您有大约十台服务器。在这种情况下,您无法手动完成工作,那么如何解决问题呢?别担心,我们可以帮助您摆脱这种情况和场景。我们在本文中添加了四种克服困难的方法。我希望这可以帮助您解决问题。我已经在Centos7和Ubuntu18.04上测试了这些命令。我希望这也适用于其他发行版。只需将本文中的包管理器命令替换为该发行版的官方包管理器命令即可。如果您想检查Linux系统上安装的软件包列表,请访问该链接。例如,如果您想在基于RHEL的系统上创建包列表,请使用以下步骤。其他发行版也是如此。#rpm-qa--last|头-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命令安装文件中列出的包?为了实现这个目标,我将使用第一种方法,简单明了。为此,创建一个文件并添加要安装的软件包列表。出于测试目的,我们只会将以下三个包名称添加到文件中。#cat/tmp/pack1.txtapache2mariadb-servernano只需运行apt命令即可在Ubuntu/Debian系统上一次安装所有包。#apt-yinstall$(cat/tmp/pack1.txt)Readingpackagelists...DoneBuildingdependencytreeReadingstateinformation...DoneThefollowingpackageswereautomaticallyinstalledandarelongerrequired:libopts25sntpUse'sudoaptautoremove'删除他们。建议的软件包:apache2-docapache2-suexec-pristine|apache2-suexec-customspell将安装以下新包:apache2mariadb-servernano0已升级,3个新安装,0个要删除,24个未升级。需要获取339kB的存档。此操作后,1,377kB的额外磁盘空间将被使用。Get:1http://in.archive.ubuntu.com/ubuntubionic-updates/mainamd64apache2amd642.4.29-1ubuntu4.6[95.1kB]Get:2http://in.archive.ubuntu.com/ubuntubionic/mainamd64nanoamd642.9.3-2[231kB]Get:3http://in.archive.ubuntu.com/ubuntubionic-updates/universeamd64mariadb-serverall1:10.1。38-0ubuntu0.18.04.1[12.9kB]在19秒内获取339kB(18.0kB/s)先前选择未选择的包apache2。(正在读取数据库...当前安装了290926个文件和目录。)准备解压.../apache2_2.4.29-1ubuntu4.6_amd64.deb...正在解压apache2(2.4.29-1ubuntu4.6)...Selectingpreviouslyunselectedpackagenano.Preparingtounpack.../nano_2.9.3-2_amd64.deb...Unpackingnano(2.9.3-2)...Selectingpreviouslyunselectedpackagemariadb-server.Preparingtounpack.../mariadb-server_1%3a10.1.38-0ubuntu0.18.04.1_all.deb...解包mariadb-server(1:10.1.38-0ubuntu0.18.04.1)...处理ufw(0.36-0ubuntu0.18.04.1)...设置apache2(2.4.29-1ubuntu4.6)...处理ureadahead(0.100.0-20)的触发器...处理安装信息(6.5.0.dfsg.1-2)的触发器)...设置nano(2.9.3-2)...update-alternatives:using/bin/nanotoprovide/usr/bin/editor(editor)inautomodeupdate-alternatives:using/bin/nanotoprovide/usr/bin/pico(pico)inautomodeProcessingtriggersforsystemd(237-3ubuntu10.20)...man-db(2.8.3-2ubuntu0.1)的处理触发器...设置mariadb-server(1:10.1.38-0ubuntu0.18.04.1)...至于删除,需要使用相同的命令格式与适当的选项#apt-yremove$(cat/tmp/pack1.txt)Readingpackagelists...DoneBuildingdependencytreeReadingstateinformation...DoneThefollowingpackageswereautomaticallyinstalledandarenolongerrequired:apache2-binapache2-dataapache2-utils已完成galera-3libaio1libapr1libaprutil1libaprutil1-dbd-sqlite3libaprutil1-ldaplibconfig-inifiles-perllibdbd-mysql-perllibdbi-perllibjemalloc1liblua5.2-0libmysqlclient20libopts25libterm-readkey-perlmariadb-client-10.1mariadb-client-core-10.1mariadb-commonmariadb-server-10.1mariadb-server-core-10.1mysql-commonsntpsocatUse'aptautoremove'删除它们。以下包将被删除:apache2mariadb-servernano0已升级,0新安装,3到删除和24未升级。此操作后,将释放1,377kB磁盘空间。(正在读取数据库...当前安装了291046个文件和目录。)正在删除apache2(2.4.29-1ubuntu4.6)...正在删除mariadb-server(1:10.1.38-0ubuntu0.18.04.1)...删除nano(2.9.3-2)...更新替代方案:使用/usr/bin/vim.tiny在自动模式下提供/usr/bin/editor(编辑器)处理ufw的触发器(0.36-0ubuntu0.18.04.1)...安装信息(6.5.0.dfsg.1-2)的处理触发器...man-db(2.8.3-2ubuntu0.1)的处理触发器...使用yum命令在基于RHEL的系统上安装文件中列出的包,例如Centos、RHEL(Redhat)和OEL(OracleEnterpriseLinux)#yum-yinstall$(cat/tmp/pack1。)和OEL(OracleEnterpriseLinux)卸载文件中列出的软件包。#yum-yremove$(cat/tmp/pack1.txt)使用以下dnf命令在Fedora系统上安装文件中列出的软件包。#dnf-yinstall$(cat/tmp/pack1.txt)在Fedora系统上使用以下命令卸载文件中列出的软件包。#dnf-yremove$(cat/tmp/pack1.txt)使用以下zypper命令在openSUSE系统上安装文件中列出的包。#zypper-yinstall$(cat/tmp/pack1.txt)使用以下命令从openSUSE系统中卸载文件中列出的软件包。#zypper-yremove$(cat/tmp/pack1.txt)使用以下pacman命令在基于ArchLinux的系统(例如Manjaro和Antergos)上安装文件中列出的包。#pacman-S$(cat/tmp/pack1.txt)使用以下命令从基于ArchLinux的系统(如Manjaro和Antergos)中卸载文件中列出的软件包。#pacman-Rs$(cat/tmp/pack1.txt)方法二:如何在Linux中使用cat和xargs命令安装文件中列出的包。甚至,我更喜欢使用这种方法,因为它是一种非常简单明了的方法。使用以下apt命令在基于Debian的系统(例如Debian、Ubuntu和LinuxMint)上安装文件中列出的软件包。#cat/tmp/pack1.txt|xargsapt-yinstall使用以下apt命令从基于Debian的系统(如Debian、Ubuntu和LinuxMint)中卸载文件中列出的软件包。#cat/tmp/pack1.txt|xargsapt-yremove使用以下yum命令在基于RHEL的系统(例如Centos、RHEL(Redhat)和OEL(OracleEnterpriseLinux))上安装文件中列出的软件包。#cat/tmp/pack1.txt|xargsyum-yinstall使用该命令从基于RHEL的系统(如Centos、RHEL(Redhat)和OEL(OracleEnterpriseLinux))卸载文件中列出的软件包。#cat/tmp/pack1.txt|xargsyum-yremove使用以下dnf命令在您的Fedora系统上安装文件中列出的软件包。#cat/tmp/pack1.txt|xargsdnf-yinstall使用以下命令从您的Fedora系统中卸载文件中列出的软件包。#cat/tmp/pack1.txt|xargsdnf-yremove使用以下zypper命令在openSUSE系统上安装文件中列出的软件包。#cat/tmp/pack1.txt|xargszypper-yinstall使用以下命令从您的openSUSE系统卸载文件中列出的软件包。#cat/tmp/pack1.txt|xargszypper-yremove使用以下pacman命令在基于ArchLinux的系统(例如Manjaro和Antergos)上安装文件中列出的软件包。#cat/tmp/pack1.txt|xargspacman-S使用以下命令从基于ArchLinux的系统(例如Manjaro和Antergos)中卸载文件中列出的软件包。#cat/tmp/pack1.txt|xargspacman-Rs方法三:如何使用for循环在Linux上安装文件中列出的包我们也可以使用for循环命令来实现。要安装批处理包,您可以使用以下for循环命令。#在`cat/tmp/pack1.txt`中打包;做apt-yinstall$i;done要使用shell脚本安装批量包,请使用以下for循环。#vi/opt/scripts/bulk-package-install.sh#!/bin/bashforpackin`cat/tmp/pack1.txt`doapt-yremove$packdoneSetbulk-package-install.sh的可执行权限。#chmod+bulk-package-install.sh***运行这个脚本。#shbulk-package-install.sh方法四:如何使用while循环在Linux上安装文件中列出的包我们也可以使用while循环命令来达到目的。要安装批处理包,您可以使用以下while循环命令。#file="/tmp/pack1.txt";同时阅读-rpack;执行apt-y安装$pack;done<"$file"要使用shell脚本安装批量包,请使用以下while循环。#vi/opt/scripts/bulk-package-install.sh#!/bin/bashfile="/tmp/pack1.txt"whileread-rpackdoapt-yremove$packdone<"$file"isbulk-package-install.sh设置可执行权限。#chmod+bulk-package-install.sh***运行这个脚本。#shbulk-package-install.sh