Git Product home page Git Product logo

Comments (17)

volitank avatar volitank commented on August 11, 2024

Very interesting. There may be something we do that is different from apt here. It will probably take me a while to figure this on out. I'll build a VM and see if I can reproduce, and then it's just about hunting down the issue.

from nala.

volitank avatar volitank commented on August 11, 2024
Screenshot 2023-11-15 at 2 10 33 PM

At least on one of my servers that doesn't currently have podman it seems like it's the same to be installed. Will continue trying to reproduce it.

In the meantime which version of nala are you using nala --version. Shouldn't be a huge difference though as I don't believe I've messed with this logic lately.

from nala.

volitank avatar volitank commented on August 11, 2024

Hmm did a fresh bookworm server. Nala installed from the debian repo. Still 37 for both nala and apt

from nala.

volitank avatar volitank commented on August 11, 2024

Seems like I can get a little closer to the packages that are wanting to be installed with sudo nala install podman-docker, namely it wanting to install docker-compose makes me think it's this one. Are you sure you're not inadvertently trying to install podman-docker with Nala and podman with apt?

from nala.

CicadaSeventeen avatar CicadaSeventeen commented on August 11, 2024

On another device on debian bookworm which has installed podman, trying to install podman-docker by nala will try to install 21 packages, but apt tries to install 8 packages.

It seems that I mistaken podman-docker as podman. I need to go back to the other device to read the apt log to make sure.

from nala.

CicadaSeventeen avatar CicadaSeventeen commented on August 11, 2024

On another device on debian bookworm which has installed podman, trying to install podman-docker by nala will try to install 21 packages, but apt tries to install 8 packages.

After using nala to install podman-docker and then immediately sudo nala autoremove, it will autoremove 8 of the 21 packages that have just installed.

packages that nala tries to install:

  cgroupfs-mount                                                       1.4                                                                                                                               6 KB  
  containerd                                                           1.6.20~ds1-1+b1                                                                                                                25.9 MB  
  criu                                                                 3.17.1-2                                                                                                                        665 KB  
  docker-compose                                                       1.29.2-3                                                                                                                        123 KB  
  libintl-perl                                                         1.33-1                                                                                                                          720 KB  
  libintl-xs-perl                                                      1.33-1                                                                                                                           16 KB  
  libmodule-find-perl                                                  0.16-2                                                                                                                           11 KB  
  libmodule-scandeps-perl                                              1.31-2                                                                                                                           42 KB  
  libnet1                                                              1.1.6+dfsg-3.2                                                                                                                   60 KB  
  libsort-naturally-perl                                               1.03-4                                                                                                                           13 KB  
  needrestart                                                          3.6-4                                                                                                                            59 KB  
  podman-docker                                                        4.3.1+ds1-8+b1                                                                                                                   19 KB  
  python3-docker                                                       5.0.3-1                                                                                                                          90 KB  
  python3-dockerpty                                                    0.4.1-4                                                                                                                          11 KB  
  python3-docopt                                                       0.6.2-4.1                                                                                                                        26 KB  
  python3-dotenv                                                       0.21.0-1                                                                                                                         25 KB  
  python3-protobuf                                                     3.21.12-3                                                                                                                       245 KB  
  python3-texttable                                                    1.6.7-1                                                                                                                          12 KB  
  python3-websocket                                                    1.2.3-1                                                                                                                          40 KB  
  runc                                                                 1.1.5+ds1-1+b1                                                                                                                  2.7 MB  
  tini                                                                 0.19.0-1                                                                                                                        255 KB 

packages that apt tries to install

  docker-compose podman-docker python3-docker python3-dockerpty python3-docopt python3-dotenv python3-texttable python3-websocket

packages that nala auto-removed:

  cgroupfs-mount                                                       1.4                                                                                                                              33 KB  
  containerd                                                           1.6.20~ds1-1+b1                                                                                                               100.8 MB  
  libintl-perl                                                         1.33-1                                                                                                                          4.4 MB  
  libintl-xs-perl                                                      1.33-1                                                                                                                           58 KB  
  libmodule-find-perl                                                  0.16-2                                                                                                                           31 KB  
  libmodule-scandeps-perl                                              1.31-2                                                                                                                          106 KB  
  libsort-naturally-perl                                               1.03-4                                                                                                                           42 KB  
  needrestart                                                          3.6-4 

Here both nala and apt try to install docker-compose when installing podman-docker. That is not the difference. I have been very likely to mistaken podman and podman-docker ( but I can confirm it later ).

However, the problem that when installing a package (like podman-docker here) nala and apt do not perform the same is still here. And the related problem that nala somehow installs some packages that itself will later autoremove is still here too.

from nala.

volitank avatar volitank commented on August 11, 2024

Did you try it with apt? I just did this on my system. I can reproduce it trying to remove those packages, but apt does the same. See screen shot

screenshot

Now if we install podman-docker with Nala, both nala and apt will attempt to auto remove these. If we instead install podman-docker with apt, neither will try to auto remove them. So it is a difference in the way Nala and apt are marking packages when installed, but it's not really a bug with dependency resolution or wrongly auto removing packages.

I can try to dig in and see what exactly is going on here, it's a weird issue for sure.

from nala.

volitank avatar volitank commented on August 11, 2024

Before when i looked into this I was doing just podman, which was correct. Reset the VM from scratch just to be sure and sure enough podman-compose causes Nala to install more packages than apt does. Now to figure out why. Reproducing the issue is half the battle.

screenshot

from nala.

volitank avatar volitank commented on August 11, 2024

Just documenting my steps here. I believe the issue to lie in docker-compose, which is a recommend for podman-docker. If we skip installing recommends it selects the right amount of packages. So now to checkout docker-compose.

volitank@hyprland:~$ sudo nala install podman-docker --no-install-recommends --simple
Installing:
  conmon, containernetworking-plugins, crun, dirmngr, gnupg, gnupg-l10n, gnupg-utils, golang-github-containers-common, golang-github-containers-image, gpg, gpg-agent, gpg-wks-client, gpg-wks-server, 
  gpgsm, iptables, libassuan0, libgpgme11, libip6tc2, libksba8, libnetfilter-conntrack3, libnfnetlink0, libnpth0, libsubid4, libyajl2, pinentry-curses, podman, podman-docker
Recommended, Will Not Be Installed:
  netavark, buildah, fuse-overlayfs, slirp4netns, [ catatonit | tini | dumb-init ], uidmap, docker-compose
Suggested, Will Not Be Installed:
  pinentry-gnome3, tor, parcimonie, xloadimage, pinentry-gnome3, scdaemon, firewalld, pinentry-doc, containers-storage, docker-compose
Summary:
  Install 28
  Total download size 26.7 MB, Disk space required 104.5 MB
Do you want to continue? [Y/n] n
Abort.
volitank@hyprland:~$ sudo apt install podman-docker --no-install-recommends
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  conmon containernetworking-plugins crun dirmngr gnupg gnupg-l10n gnupg-utils golang-github-containers-common golang-github-containers-image gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm
  iptables libassuan0 libgpgme11 libip6tc2 libksba8 libnetfilter-conntrack3 libnfnetlink0 libnpth0 libsubid4 libyajl2 pinentry-curses podman
Suggested packages:
  pinentry-gnome3 tor parcimonie xloadimage scdaemon firewalld pinentry-doc containers-storage docker-compose
Recommended packages:
  netavark buildah fuse-overlayfs slirp4netns catatonit | tini | dumb-init uidmap docker-compose
The following NEW packages will be installed:
  conmon containernetworking-plugins crun dirmngr gnupg gnupg-l10n gnupg-utils golang-github-containers-common golang-github-containers-image gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm
  iptables libassuan0 libgpgme11 libip6tc2 libksba8 libnetfilter-conntrack3 libnfnetlink0 libnpth0 libsubid4 libyajl2 pinentry-curses podman podman-docker
0 upgraded, 28 newly installed, 0 to remove and 0 not upgraded.
Need to get 26.7 MB of archives.
After this operation, 104 MB of additional disk space will be used.
Do you want to continue? [Y/n] n
Abort.
volitank@hyprland:~$ nala show podman-docker
Package: podman-docker
Version: 4.3.1+ds1-8+b1
Architecture: amd64
Installed: no
Priority: optional
Essential: no
Section: admin
Source: libpod
Origin: Debian
Maintainer: Debian Go Packaging Team <[email protected]>
Installed-Size: 188 KB
Depends: podman
Recommends: docker-compose
Conflicts: docker.io
Homepage: https://github.com/containers/podman
Download-Size: 19 KB
APT-Sources: http://deb.debian.org/debian/ stable/main amd64 Packages
Description: engine to run OCI-based containers in Pods - wrapper for docker
 Podman is an engine for running OCI-based containers in Pods.
 Podman provides a CLI interface for managing Pods, Containers, and
 Container Images.
 .
 At a high level, the scope of libpod and podman is the following:
  * Support multiple image formats including the OCI and Docker image
    formats.
  * Support for multiple means to download images including trust & image
    verification.
  * Container image management (managing image layers, overlay filesystems,
    etc).
  * Full management of container lifecycle.
  * Support for pods to manage groups of containers together.
  * Resource isolation of containers and pods.
  * Support for a Docker-compatible CLI interface through Podman.
 .
 Podman is a daemon-less alternative to Docker.
 .
 This package installs a wrapper script that acts like the original docker
 implementation

from nala.

volitank avatar volitank commented on August 11, 2024

No bueno. I think it has something to do with how we resolve packages. I'll have to mess with the code. I now believe the issue is the Conflicts: docker-io. If you install docker-compose standalone with nala or apt they give the same packages, and also want to install docker.io, but the podman-docker package conflicts with it so it cannot be installed. To me this is a strange way to package something, but I'll try to figure out where I went wrong.

from nala.

volitank avatar volitank commented on August 11, 2024

This definitely isn't going to be an easy fix, but I figured out why I believe.

┌─[volitank@volidesk]─[~/volian-team/nala]─[main]                                                                                                                                                          
└──╼$ apt-cache rdepends criu
criu
Reverse Depends:
  runc

┌─[volitank@volidesk]─[~/volian-team/nala]─[main]                                                                                                                                                          
└──╼$ apt-cache rdepends runc
runc
Reverse Depends:
  docker.io
  singularity-container
  podman
  buildah
  containerd

┌─[volitank@volidesk]─[~/volian-team/nala]─[main]                                                                                                                                                          
└──╼$ nala show buildah
Package: buildah
Version: 1.32.0+ds1-2
Architecture: amd64
Installed: no
Priority: optional
Essential: no
Section: devel
Source: golang-github-containers-buildah
Origin: Debian
Maintainer: Debian Go Packaging Team <[email protected]>
Installed-Size: 23.6 MB
Depends: 
  uidmap
  golang-github-containers-common (> 0.49.1)
  libc6 (>= 2.34)
  libdevmapper1.02.1 (>= 2:1.02.97)
  libgpgme11 (>= 1.4.1)
  libseccomp2 (>= 2.5.0)
  libsqlite3-0 (>= 3.36.0)
  libsubid4 (>= 1:4.11.1)
Recommends: fuse-overlayfs (>= 0.7.1~), crun | runc

Crun and runc you can do either or for this. We refer to them as or-deps. Either is fine. Right now in Nala the resolver is selecting both of them for install. I'm unsure as to why. Under the hood python-apt should be using the same resolver that apt is using. I wonder if this bug would be present in rust-apt that I've been working on for the rust rewrite of nala.

I think I have this pretty narrowed down, but how to solve this is kind of tricky, since we aren't really dealing with the resolver and it's abstracted through python-apt.

The autoremovable packages is pretty easy to solve, can just loop through what needs to be installed, check if they are auto removable and just don't install them. But there are still a few packages that nala wants to install that apt doesn't. They don't show up as auto removable because runc and crun are both listed in buildah and podman dependencies. So as far as the system is concerned they don't need to go.

This may take me some time, I'd like to solve it as correct as possible so I don't break some other packages. I could probably hack it out real quick but it wouldn't be a good choice imo.

from nala.

volitank avatar volitank commented on August 11, 2024

Had to look pretty deep in apt's code to see how they were handling this. I was able to get it to provide the correct packages this time.

screenshot

The way that I did it isn't exactly correct though. It will probably only work for this package and break others. But I know the path forward now, I think.

It seems that they run through and mark all the packages without marking all of the dependencies and protecting it with the resolver, they then go back through later marking it with the dependencies included.

My head kind of hurts from all this research so quickly. But seems like we may have a path forward.

from nala.

volitank avatar volitank commented on August 11, 2024

Some more proof of work. Here I just copied the edited install.py to the server I set up to test. Did an install without the patch, install with the patch and then apt install to see the differences. I guess this has got it figured out.

screenshot

from nala.

CicadaSeventeen avatar CicadaSeventeen commented on August 11, 2024

Thanks for your work. It seems that you have found out the problem.

from nala.

volitank avatar volitank commented on August 11, 2024

Np. Bugs like this I try to take a bit more seriously. It will still be a couple of weeks before I can finalize the change.

There are some things apt is doing that I need to figure out, as it's probably a future bug if I don't, seems like a resolver edge case.

from nala.

volitank avatar volitank commented on August 11, 2024

Commit 4c3c03f will fix this.

Turns out the additional code I was talking about is for some command line things Nala doesn't support. like choosing individual target releases like apt install nala/sid neofetch/bookworm

from nala.

volitank avatar volitank commented on August 11, 2024

This issue should be resolved with https://gitlab.com/volian/nala/-/releases/v0.15.0

from nala.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.