On Fri, Nov 12, 2021 at 08:19:15AM -0500, Gene Heskett wrote: > On Friday 12 November 2021 07:36:01 Eduardo M KALINOWSKI wrote: > > > On 12/11/2021 09:30, Stephen P. Molnar wrote: > > > This is the immediate problem that I need to fix: > > > > > > comp@AbNormal:~$ sudo apt upgrade > > > Reading package lists... Done > > > Building dependency tree > > > Reading state information... Done > > > E: The package brscan4 needs to be reinstalled, but I can't find an > > > archive for it. > > > > > > sudo apt update ran without any problems. > > > > Try downloading it again (since it's not part of the archives, it must > > be downloaded manually) and running 'apt install ./brscan4-......deb' > > (substituting the actual file name, naturally). The './' is necessary > > to tell apt it's a file name. > > No, to be precise, it tells the file system its a file in the currently > cd'd to directory. Which may not be in the env's $PATH.
It's both, Gene. To the file system (kernel), ./foo is a relative pathname that's 100% equivalent to foo. There's no difference at all. However, to apt-get or apt, ./foo and foo are very different arguments. The former is a relative path to a file, and the latter is a package name. This has nothing to do with $PATH, because we're not talking about running a program from the current directory. We're talking about apt-get and apt specifically. You're thinking of the conventional use of "./configure" and so on to run a program in the current directory. This is necessary because PATH should never contain "." (or the empty string) as one of its components. That would allow the execution of *anything* at all in the current directory (the way MS-DOS works). This is a huge security problem on a multi-user system, where someone could leave a script in /tmp hoping for you to run it accidentally. It *works* because the shell bypasses the PATH search if the command that you give it contains a slash character. ./configure means "run the program named configure in the current directory, and don't search anywhere else".