[Solved] Can't get package signing to work

This forum is for discussion about general software issues.

[Solved] Can't get package signing to work

Postby andoru » Fri Jul 27, 2018 11:23 pm

So I've done a fresh install of Arch ARM on my XU4, and I seem to be stuck at initialising pacman keyring.
I've followed the instructions, but when I run the relevant command, I get this:

$this->bbcode_second_pass_code('', '# pacman-key --init
/usr/bin/pacman-key: line 555: parseopts: command not found
')

Having searched that around, I could not find what package I need, and besides that, trying to install any package gets me this:

$this->bbcode_second_pass_code('', '# pacman -S package
error: failed to initialize alpm library
(database is incorrect version: /var/lib/pacman/)
')

Which probably means I need to update the database, but I'm unable to without initialising the keyring, so I'm stuck in a catch-22.

Besides that, I had some issues with the arch installation not being able to use the terminfo the distro came with, so I couldn't launch either nano or other ncurses-based apps. I had to transfer over the appropriate terminfo from another machine for it to properly work...
Does anyone know what could've went wrong? And more importantly: what to do to fix this?
Thanks in advance.
Last edited by andoru on Sun Aug 12, 2018 3:28 am, edited 1 time in total.
andoru
 
Posts: 20
Joined: Fri Jul 20, 2018 5:18 pm

Re: Can't get package signing to work

Postby TheSaint » Sat Jul 28, 2018 12:12 am

You may use another machine pacman, with a different configuration file. So everything will point to your machine, maybe just verify the pacman.conf and add the full path to your machine.

I don't know if pacman can handle different architecture and different mirrors. In theory it could. At worst just to be sure to use the same architecture and mirrors.
This operation is for emergency to recover the bad condition in your machine. Later you may use the machine's pacman again.
TheSaint
 
Posts: 346
Joined: Mon Jul 23, 2018 7:57 am

Re: Can't get package signing to work

Postby andoru » Sat Jul 28, 2018 1:03 am

The problem is I don't have another machine with Arch installed, all I have is a Debian install on my main PC.
You mean to say that pacman might be misconfigured? What do you mean exactly by "use another machine pacman"?
andoru
 
Posts: 20
Joined: Fri Jul 20, 2018 5:18 pm

Re: Can't get package signing to work

Postby TheSaint » Sat Jul 28, 2018 5:28 am

Another machine is just one from another installation. At the least it could be one which is sure to work.
Do you have problems to install programs ?
Perhaps, you may try to disable the signing and reinstall pacman. By then try to see if the pacman-key will create some problem.
TheSaint
 
Posts: 346
Joined: Mon Jul 23, 2018 7:57 am

Re: Can't get package signing to work

Postby andoru » Sat Jul 28, 2018 5:42 pm

$this->bbcode_second_pass_quote('TheSaint', 'A')nother machine is just one from another installation.


That's the problem, I don't have another installation

$this->bbcode_second_pass_quote('TheSaint', 'A')t the least it could be one which is sure to work.


Okay I'll install Arch in an virtual machine. What should I do then onwards?


$this->bbcode_second_pass_quote('TheSaint', ' ')Do you have problems to install programs ?


I have problems following the guide I linked in the first post on this thread.
And because of that I can't install anything with pacman.

$this->bbcode_second_pass_quote('TheSaint', ' ')Perhaps, you may try to disable the signing and reinstall pacman. By then try to see if the pacman-key will create some problem.


Isn't that kind of unsafe...?
andoru
 
Posts: 20
Joined: Fri Jul 20, 2018 5:18 pm
Top

Re: Can't get package signing to work

Postby TheSaint » Sat Jul 28, 2018 7:42 pm

$this->bbcode_second_pass_quote('andoru', 'O')kay I'll install Arch in an virtual machine

You might boot from the ARCH installation iso or a live CD. In case you prefer a VB image, there could be one readily available ;)
$this->bbcode_second_pass_quote('andoru', 'I')sn't that kind of unsafe...?

It is a minimal risk, as long as you know that mirror is well trusted. Anyway that's one's own decision.
$this->bbcode_second_pass_quote('andoru', 'b')ecause of that I can't install anything with pacman

I see, therefore pacman doesn't install anything because there are unverified packages. So i taught that it needs to reset pacman and pacman-key at the installation level.
One more trial.....I saw that pacman-key is a bash script, which at the line 555 require another script, the parseopt, that it should reside at /usr/share/makepkg/util/parseopts.sh
Herein$this->bbcode_second_pass_code('', '#!/usr/bin/bash
#
# parseopts.sh - getopt_long-like parser
#
# Copyright (c) 2012-2018 Pacman Development Team <pacman-dev@archlinux.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# A getopt_long-like parser which portably supports longopts and
# shortopts with some GNU extensions. It does not allow for options
# with optional arguments. For both short and long opts, options
# requiring an argument should be suffixed with a colon. After the
# first argument containing the short opts, any number of valid long
# opts may be be passed. The end of the options delimiter must then be
# added, followed by the user arguments to the calling program.
#
# Recommended Usage:
# OPT_SHORT='fb:z'
# OPT_LONG=('foo' 'bar:' 'baz')
# if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then
# exit 1
# fi
# set -- "${OPTRET[@]}"
# Returns:
# 0: parse success
# 1: parse failure (error message supplied)
parseopts() {
local opt= optarg= i= shortopts=$1
local -a longopts=() unused_argv=()

shift
while [[ $1 && $1 != '--' ]]; do
longopts+=("$1")
shift
done
shift

longoptmatch() {
local o longmatch=()
for o in "${longopts[@]}"; do
if [[ ${o%:} = "$1" ]]; then
longmatch=("$o")
break
fi
[[ ${o%:} = "$1"* ]] && longmatch+=("$o")
done

case ${#longmatch[*]} in
1)
# success, override with opt and return arg req (0 == none, 1 == required)
opt=${longmatch%:}
if [[ $longmatch = *: ]]; then
return 1
else
return 0
fi ;;
0)
# fail, no match found
return 255 ;;
*)
# fail, ambiguous match
printf "${0##*/}: $(gettext "option '%s' is ambiguous; possibilities:")" "--$1"
printf " '%s'" "${longmatch[@]%:}"
printf '\n'
return 254 ;;
esac >&2
}

while (( $# )); do
case $1 in
--) # explicit end of options
shift
break
;;
-[!-]*) # short option
for (( i = 1; i < ${#1}; i++ )); do
opt=${1:i:1}

# option doesn't exist
if [[ $shortopts != *$opt* ]]; then
printf "${0##*/}: $(gettext "invalid option") -- '%s'\n" "$opt" >&2
OPTRET=(--)
return 1
fi

OPTRET+=("-$opt")
# option requires optarg
if [[ $shortopts = *$opt:* ]]; then
# if we're not at the end of the option chunk, the rest is the optarg
if (( i < ${#1} - 1 )); then
OPTRET+=("${1:i+1}")
break
# if we're at the end, grab the the next positional, if it exists
elif (( i == ${#1} - 1 )) && [[ $2 ]]; then
OPTRET+=("$2")
shift
break
# parse failure
else
printf "${0##*/}: $(gettext "option requires an argument") -- '%s'\n" "$opt" >&2
OPTRET=(--)
return 1
fi
fi
done
;;
--?*=*|--?*) # long option
IFS='=' read -r opt optarg <<< "${1#--}"
longoptmatch "$opt"
case $? in
0)
# parse failure
if [[ $optarg ]]; then
printf "${0##*/}: $(gettext "option '%s' does not allow an argument")\n" "--$opt" >&2
OPTRET=(--)
return 1
# --longopt
else
OPTRET+=("--$opt")
fi
;;
1)
# --longopt=optarg
if [[ $optarg ]]; then
OPTRET+=("--$opt" "$optarg")
# --longopt optarg
elif [[ $2 ]]; then
OPTRET+=("--$opt" "$2" )
shift
# parse failure
else
printf "${0##*/}: $(gettext "option '%s' requires an argument")\n" "--$opt" >&2
OPTRET=(--)
return 1
fi
;;
254)
# ambiguous option -- error was reported for us by longoptmatch()
OPTRET=(--)
return 1
;;
255)
# parse failure
printf "${0##*/}: $(gettext "invalid option") '--%s'\n" "$opt" >&2
OPTRET=(--)
return 1
;;
esac
;;
*) # non-option arg encountered, add it as a parameter
unused_argv+=("$1")
;;
esac
shift
done

# add end-of-opt terminator and any leftover positional parameters
OPTRET+=('--' "${unused_argv[@]}" "$@")
unset longoptmatch

return 0
}
')
Verify if it exists in your system, otherwise you might try to add the above scripts, at the specified path ;) Then you have the chance that the pacman-key will work.
One more chance will be that you download the pacman package for you architecture, unpack it and run that from within its directory. Then you should try to reinstall pacman.
TheSaint
 
Posts: 346
Joined: Mon Jul 23, 2018 7:57 am
Top

Re: Can't get package signing to work

Postby andoru » Sat Jul 28, 2018 9:04 pm

Okay, so after reinstalling ALARM on the uSD card, I managed to make everything work properly. Should've done this in the first place *facepalm*

Thanks for your help TheSaint!
andoru
 
Posts: 20
Joined: Fri Jul 20, 2018 5:18 pm


Return to General

Who is online

Users browsing this forum: No registered users and 5 guests