PapirusDevelopmentTeam / papirus-icon-theme

Pixel perfect icon theme for Linux
https://git.io/papirus-icon-theme
GNU General Public License v3.0
6.46k stars 409 forks source link

Papirus icon theme uses to many inodes in filesystem. #3563

Open darkshram opened 9 months ago

darkshram commented 9 months ago

Papirus Icon theme has grown with over +100k files. This means, it will use over 100k inodes in any filesystem. Systems with relatively small partitions will not be able to install papirus icon theme because of this even if there is plenty space available. Example: a 30 GB partition for / on any Linux distribution, with a lot of applications installed or other large icon themes, will have issues to install (system-wide) Papirus or will exhaust (o near exhaust) the inodes capacity of the filesystem in some scenarios and inadvertently DoS the filesystem just by installing papirus icon theme.

Strongly suggest to adopt a similar scheme as done for Numix: They have a core theme and a complementary applications-only theme. Or to split icons for proprietary applications into a separate git repository. Or at least to warn users in the README.md file about the big number of installed files and potential inode capacity exhaustion in some filesystems.

SmartFinn commented 9 months ago

It doesn't look like a real problem. I have installed my system on 20G ext4 filesystem and never got the issue. Yeah, the icon theme is huge, but how splitting the theme to a few packages make it smaller? The only rational thing that I can do, it's move ePapirus and ePapirus-Dark to another package.

Here is how much Inodes requires Papirus icon theme for installation on small partitions (ext4 defaults):

Filesystem      Inodes  IUsed   IFree IUse%
/dev/nbd0p1     655360 118066  537294   19% # 10GB
/dev/nbd0p1    1310720 118066 1192654   10% # 20GB
/dev/nbd0p1    1966080 118066 1848014    7% # 30GB
/dev/nbd0p1    2621440 118066 2503374    5% # 40GB
darkshram commented 9 months ago

Some scenarios probably will not do as well. It depends on the usage of the filesystem and whatever is installed/stored there. After several years of usage, final users will have installed or stored a lot of things.

Example (the incident originating this issue): A few hours ago, a user of my Linux distribution contacted me because he could not install papirus (see attached image). He had a lot of files and applications for different reasons in a 30GB partition (/). Made him uninstall as much unused packages as possible with rpmorphan. After system cleaning, he finally was able to install the RPM package for papirus. But just a few minutes later, contacted me again, now because he could not install back some software he needed, now because papirus exhausted the inodes capacity of his 30 GB partition for /. Obviously, having papirus installed system-wide for him (in this particular scenario) was not a good idea, and had to made him switch to another (not as pretty) icon theme with less files (Tela icon theme also has three regular, dark and light variants, but has only +42k files) and advised him to regularly check with df -i.

photo_2023-10-02_20-23-57

A cleaver warning about the number of files installed by Papirus icon theme would be a good idea. Installing packages with over +100k files are not exactly a common thing to do (unless you install complete TexLive).

As a workaround for my Linux distribution, most likely we will have to split Papirus-Dark and Papirus-Light from papirus-icon-theme package into their own RPM packages to avoid similar issues in the future.

meybonomme commented 9 months ago

The only rational thing that I can do, it's move ePapirus and ePapirus-Dark to another package.

That's a very good idea, because only Pantheon desktop needs these icons.

johnlepikhin commented 8 months ago

Systems like Nix or Guix stores multiple snapshots of the packages, which have grouped into generations of profiles (sort of OS snapshots). Each generation organized via symlinks to single files. Thus, after installing Papyrus icons set and making some OS snapshots, I've got 30M inodes on my disk and 100% of inodes usage.

So, in some cases it is actually the problem.

SmartFinn commented 8 months ago

@johnlepikhin seems you have chosen the wrong filesystem for your system. I recommend you to use filesystem with dynamic inodes allocations, like Btrfs, ZFS, and XFS.

Also, 30000000 / 118066 = 254 snapshots, something wrong with your use case.

johnlepikhin commented 8 months ago

@SmartFinn I use what I use for other important reasons.

Yes, I had plenty "snapshots" of this package, by design. OS reference counter and lazy GC for unused items (i.e. installed packages versions, built profiles). GC is triggered when there is low free space measured bytes, but not in inodes. Sure, it has to be implemented in distro core utils too. Anyway, I ran into the problem after I added Papyrus icon theme to my profile. After removing icons pack:

$ find -L ~/.guix-home/profile/|wc -l 190085

That is, I need 190k inodes to get full-featured desktop/IDE/etc. with 200+ packages installed. I believe such inodes usage is common for most of the users. Icons pack that requires as half as the rest of desktop installation doesn't look well-organized, especially since that there are a lot of ways to split the pack effectively. For Guix, probably I will patch a manifest to generate a separated set of packages, but the problem will remain.

SmartFinn commented 8 months ago

It seems to me, I have to remove the whole Papirus icon theme to make you happy :smiling_face_with_tear:

Btw, icon-theme-papirus snap package uses only 1 inode. Just saying.