如何缩减 Amazon Linux 操作系统以获得更多可用空间?

如何缩减 Amazon Linux 操作系统以获得更多可用空间?

我用EC2在亚马逊网络服务上。 t2.micro实例的操作系统是定制的“亚马逊Linux” 具有 1 GiB RAM 和 1 个 vCPU。当通过他们访问此实例时Cloud9 IDE我发现默认情况下已经占用了 73% 的可用文件空间(/dev/xvda1 上的 7.8G),我只能使用剩余的 2.2G。

我的要求:

  • 我需要执行 Python 脚本并在本地写入输出数据。
  • 我可以不用 GUI,因为我在命令行上工作。

可以安全删除操作系统的哪些组件以释放一些空间?

答案1

1. 删除可有可无的包

Amazon Linux 实例使用 yum 包管理器管理其软件。 yum 包管理器可以安装、删除和更新软件,以及管理每个包的所有依赖项。 –管理 Linux 实例上的软件

我已执行以下命令来生成系统中 20 个最大的包的列表:

rpm -qa --queryformat '%10{size} - %-25{name} \t %{version}\n' | sort -nr | head -n 20

为了删除包含所有依赖项的包,我安装了 yum 插件remove-with-leaves,然后重复删除我认为可有可无的最大包(包括依赖项)(列表见下文):

sudo yum remove package_name --remove-leaves

2.删除过时的内核

  1. 识别当前内核:uname -mrs
  2. 列出所有内核:rpm -q kernel
  3. 手动删除过时的 Linux 内核:sudo yum remove kernel-4.9.76-3.78.amzn1.x86_64

3.删除未使用的包

已识别的包可以在不影响任何其他内容的情况下删除(在 debian 中,这些包称为“孤立包”)并安静地删除。

sudo package-cleanup --quiet --leaves | sudo xargs -l1 yum -y remove 

发现

虽然我只主动使用 Python 3.6.5,但无法删除默认值python(Python 2.7.14)。

许多 Linux 发行版都需要 Python。发行版提供商组合的许多系统实用程序(基于 GUI 的或不基于 GUI 的)都是用 Python 编程的。系统实用程序所使用的 Python 版本我将称为“主”Python。 [...] 由于系统实用程序是用 python 编写的,因此不可能在不破坏系统的情况下删除主 python。 –如何优雅地 yum 删除 Python?

包占用的空间python27总计 115819035 字节 (~116 MB)。

结果

  • 总共回收了约 0.5 GB(磁盘空间的 7% /dev/xvda1)。
  • 删除了 214 个包,总共 633427867 字节:
    java-1.7.0-openjdk emacs-common mysql55-server java-1.7.0-openjdk-devel git 
    mysql55 vim-common perl compat-libicu4 aws-apitools-ec2 emacs v8 ruby20-libs 
    perl-Encode nodejs-devel aws-apitools-elb aws-apitools-as nodejs 
    aws-apitools-mon perl-DBD-SQLite dejavu-sans-fonts subversion subversion-libs 
    subversion-perl python36-devel dejavu-serif-fonts vim-enhanced libtool autoconf 
    perl-DBI rubygem20-rdoc automake libX11-common perl-libs gyp cvs libX11 git-svn 
    alsa-lib gnutls dejavu-sans-mono-fonts perl-Net-SSLeay npm libyaml-devel 
    xorg-x11-fonts-Type1 perl-IO-Compress rsync libxcb libpng perl-Test-Harness 
    rubygems20 perl-Pod-Simple fontconfig aws-amitools-ec2 lcms2 perl-DBD-MySQL55 
    git-cvs xorg-x11-font-utils libXfont perl-podlators perl-IO-Socket-SSL git-p4 
    v8-devel perl-YAML perl-Storable rubygem20-json perl-Git-SVN perl-PathTools 
    nodejs-hawk perl-Pod-Perldoc ruby20-irb perl-File-Temp libuv-devel libserf 
    system-rpm-config autogen-libopts perl-Getopt-Long perl-Compress-Raw-Zlib 
    perl-Filter perl-GSSAPI dejavu-fonts-common libuv perl-Net-Daemon libICE cvsps 
    perl-Socket rubygem20-psych perl-Digest-SHA git-email perl-Authen-SASL ttmkfdir 
    perl-HTTP-Tiny perl-Data-Dumper nodejs-ctype perl-threads emacs-git 
    perl-Time-HiRes perl-IO-Socket-IP libXext giflib rubygem20-bigdecimal libSM 
    nodejs-async perl-threads-shared perl-PlRPC nodejs-hoek node-gyp libXi perl-Git 
    nodejs-request nodejs-fstream perl-Scalar-List-Utils ruby20 nodejs-mime 
    perl-Exporter perl-TermReadKey perl-Compress-Raw-Bzip2 nodejs-tar 
    perl-Digest-MD5 perl-File-Path perl-Error http-parser perl-Net-LibIDN 
    perl-Pod-Usage perl-Time-Local libfontenc libXrender libXau 
    nodejs-npm-registry-client nodejs-minimatch nodejs-boom nodejs-http-signature 
    nodejs-semver libXcomposite nodejs-glob nodejs-nopt perl-Digest perl-Carp 
    libXtst perl-Thread-Queue nodejs-npmconf libffi-devel perl-constant gpm-libs 
    perl-Pod-Escapes nodejs-normalize-package-data nodejs-packaging 
    nodejs-read-package-json nodejs-promzard nodejs-lockfile nodejs-asn1 
    nodejs-ansi perl-Text-ParseWords copy-jdk-configs nodejs-form-data nodejs-sntp 
    nodejs-fstream-npm nodejs-node-uuid nodejs-config-chain perl-Digest-HMAC 
    nodejs-retry nodejs-graceful-fs nodejs-sigmund nodejs-npmlog http-parser-devel 
    nodejs-read-installed nodejs-lru-cache nodejs-init-package-json nodejs-qs 
    nodejs-slide nodejs-combined-stream nodejs-assert-plus nodejs-fstream-ignore 
    nodejs-block-stream perl-parent nodejs-delayed-stream nodejs-ini nodejs-sha 
    nodejs-cmd-shim nodejs-tunnel-agent nodejs-mute-stream nodejs-rimraf 
    nodejs-read nodejs-osenv nodejs-mkdirp perl-macros nodejs-which nodejs-abbrev 
    perl-Net-SMTP-SSL nodejs-archy nodejs-uid-number nodejs-aws-sign 
    nodejs-forever-agent nodejs-opener nodejs-json-stringify-safe nodejs-proto-list 
    nodejs-cryptiles nodejs-editor nodejs-child-process-close 
    nodejs-github-url-from-git nodejs-cookie-jar nodejs-npm-user-validate 
    nodejs-chmodr nodejs-chownr nodejs-once nodejs-inherits nodejs-oauth-sign 
    aws-apitools-common mysql-config vim-filesystem ruby git-all 
    fontpackages-filesystem 
    

资源

  1. 亚马逊 Linux AMI
  2. GAD3R 的回答在centos 7中删除软件包时如何删除所有已安装的依赖包?
  3. 如何在 CentOS Linux 上删除旧的未使用的内核
  4. 杰托斯卡森的回答删除未使用的包
  5. 欧文·弗雷泽·格林的回答如何删除 Fedora 中的孤立包?

相关内容