Hi! * David Madore [Thu Oct 23, 2008 at 07:11:46PM +0200]:
> It would be nice to have an option --ignore-nonexistent to instruct > apt-get to emit a non-fatal warning if any nonexistent packages are > requested (on install, remove, etc.) rather than terminating with an > error. E.g., "apt-get install --ignore-nonexistent dpkg blurb" would > just turn "Couldn't find package blurb" into a warning rather than an > error. > > The reason this would be useful is that sometimes one wishes to > install huge lists of packages (e.g., copied from another machine's > output of dpkg -l) from which various packages may have been removed. > When installing a list of over 2000 packages from which perhaps 100 > are nonexistent, it is a pain to have to restart 100 times apt-get, > each time removing *one* offending package. > > So a --ignore-nonexistent option would be hugely useful. > > This is, of course, totally unrelated to --ignore-missing. I'd like to refresh this request :) * Eugene V. Lyubimkin [Thu Oct 23, 2008 at 08:24:21PM +0300]: > JFYI: you can use 'aptitude install' as a workaround. Yes, this is what is (somewhat) available with aptitude, though it would be nice, if also apt/apt-get would support this. For example FAI supports an option to use aptitude instead of apt-get by using its "PACKAGES aptitude" syntax (though this is currently broken for aptitude in FAI, see #1030312). Demonstration with Debian/triexi, where the package tgt currently isn't available: | root@bc3b54bda765:~# apt install tgt zsh tgt- | Reading package lists... Done | Building dependency tree... Done | Reading state information... Done | E: Unable to locate package tgt | E: Unable to locate package tgt Also aptitude fails in that situation: | root@bc3b54bda765:~# aptitude install tgt zsh tgt- | Couldn't find any package whose name is "tgt", but there are 8 packages which contain "tgt" in their name: | liblibreofficekitgtk istgt libgnunetgtk3 libgnunetgtk-dev libwebkitgtk-6.0-dev gir1.2-spiceclientgtk-3.0 libwebkitgtk-6.0-4 gir1.2-inftextgtk-0.7 | Unable to apply some actions, aborting | root@bc3b54bda765:~# echo $? | 255 Whereas in Debian/unstable (where package tgt *is* available), aptitude behaves as follows (excluding the tgt package from the list): | root@42073ece6102:~# aptitude install tgt zsh tgt- | Package tgt is not installed, so it will not be removed | Package tgt is not installed, so it will not be removed | The following NEW packages will be installed: | adduser{a} zsh zsh-common{a} | 0 packages upgraded, 3 newly installed, 0 to remove and 20 not upgraded. | Need to get 5196 kB of archives. After unpacking 19.9 MB will be used. | Do you want to continue? [Y/n/?] | [...] While apt behaves as follows: | root@42073ece6102:~# apt install tgt zsh tgt- | Reading package lists... Done | Building dependency tree... Done | Reading state information... Done | Package 'tgt' is not installed, so not removed | The following additional packages will be installed: | adduser ibverbs-providers libaio1 libconfig-general-perl libibverbs1 libnl-3-200 libnl-route-3-200 librdmacm1 libsgutils2-1.46-2 sg3-utils zsh-common | Suggested packages: | cron quota tgt-glusterfs tgt-rbd zsh-doc | The following NEW packages will be installed: | adduser ibverbs-providers libaio1 libconfig-general-perl libibverbs1 libnl-3-200 libnl-route-3-200 librdmacm1 libsgutils2-1.46-2 sg3-utils tgt zsh zsh-common | The following held packages will be changed: | tgt | 0 upgraded, 13 newly installed, 0 to remove and 20 not upgraded. | Need to get 7173 kB of archives. | After this operation, 26.5 MB of additional disk space will be used. | Do you want to continue? [Y/n] | [...] FTR, all command lines above executed with latest apt/aptitude versions: | # aptitude --version | head -1 | aptitude 0.8.13 | # apt-get --version | head -1 | apt 2.7.6 (amd64) It would be nice, if apt and aptitude could both behave similar. Though it would be *great* if one could build command lines like: | # apt install foo bar baz foo- ... to install the "bar baz" packages only, and ignore the foo package. If one is wondering why this might be useful: 1) When building live systems with big(ger) amount of packages, sometimes packages might not be available/installable at all times (esp. true for Debian/testing). Then it's great if one can keep the original package list as-is, but only extend a list of packages that should be ignored. This is kind of available with aptitude and FAI with its class approach, where one can use something like this: | # head /etc/grml/fai/config/package_config/BASE | PACKAGES aptitude | | foo | bar | baz | # cat /etc/grml/fai/config/package_config/IGNORE | | PACKAGES aptitude | foo- Then the package "foo" gets ignored, though the original software selection in the "BASE" file doesn't need to be modified. 2) Trying to install a list of packages on the command line often ends up in bisecting the package that's actually causing the failure (WRT dependencies/conflicts/...), also as mention by David in his original bug report above. If one can use something like: | # apt install foo bar baz [tons_of_packages] foo- | # apt install foo bar baz [tons_of_packages] bar- | ... ... to identify which package is causing the problem, that would be a time-safer. :) Not sure if the current apt behavior/pattern matching would support this, though if a specific option would be introduced to get such a behavior, I'd also be more than happy. :) Thanks for consideration! regards -mika-
signature.asc
Description: PGP signature