Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bug#1030312: fai-client: PACKAGES aptitude does not work anymore with fai6.0

6 views
Skip to first unread message

Cornelius Hoffmann

unread,
Feb 2, 2023, 12:30:03 PM2/2/23
to
Package: fai-client
Version: 6.0
Severity: normal
Tags: upstream
X-Debbugs-Cc: hoff...@physik.fu-berlin.de


Hello,
when using `PACKAGES aptitude` with FAI6.0, the operation fails, since
aptitude does not know the option `--allow-change-held-packages` which
was added to the default apt options (`$aptopt`) in
da2a5977b3ff48be0dab8a7499a6cb9e39ce783e which are also used for
aptitude (bin/install_packages#89).


-- System Information:
Debian Release: bookworm/sid
APT prefers testing
APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 6.1.0-2-amd64 (SMP w/2 CPU threads; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_US.UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages fai-client depends on:
ii debconf-utils 1.5.82
ii file 1:5.44-3
ii iproute2 6.1.0-1
ii libfile-lchown-perl 0.02-3+b1
ii libgraph-perl 1:0.9725-1
ii perl 5.36.0-7
ii procps 2:4.0.2-3
ii zstd 1.5.2+dfsg2-3

Versions of packages fai-client recommends:
ii fdisk 2.38.1-4
ii util-linux 2.38.1-4

Versions of packages fai-client suggests:
ii libgraph-perl 1:0.9725-1
pn logtail <none>

-- Configuration Files:
/etc/fai/fai.conf [Errno 13] Permission denied: '/etc/fai/fai.conf'

-- no debconf information

Michael Prokop

unread,
Oct 10, 2023, 5:30:05 AM10/10/23
to
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
0 new messages