2

Specifically I'm trying to find out what pakage I have to install in order to get disown command in docker based on Alpine Linux? Moreover it would be nice if someone could enlight me how in general I should seek for missing commands (and in what package they are) so I don't have to come here with every single command.

2

disown is a bash builtin (job control) just like switch, continue and history. Thus you won't find it in any package list, not just AplineLinux'. I am not sure whether disown is a new feature (thus missing from older releases) or is a optional part. Under Ubuntu bash is v4.3.46 and has it available, though.

For anything else, you'd go to the package contents search.

  • Not really useful. When I type disown in that page I get only linking to disown in context of zsh help/manual (pkgs.alpinelinux.org/…). I found also information (linuxquestions.org/questions/linux-server-73/…) that disown is part of bash. I tried to install bash and zsh, but no luck disown still missing... – abc Oct 11 '16 at 12:18
  • @abc Enzo's answer is correct. There is no standalone disown command, it wouldn't make sense since it acts on the running shell. You get a disown command if you're running ksh, bash or zsh. If disown isn't a supported command in your shell then you're running a different shell. What matters is the shell you're running, not other shells that may be also installed. – Gilles Oct 11 '16 at 23:14
  • @Gilles Yes. It's after edit. Look into modification history to understand my first comment. Anyway I'm accepting it because after edit it solved my problem. I thought disown is a standalone command like for instance cat. – abc Oct 15 '16 at 14:44
0

If you want to use pkgs.alpinelinux.org in a scripted way, you can add html2text in you distribution (for Alpine: apk add html2text) and use this script I've done 10 min ago...:)

#!/bin/sh
file=$1
arch=${2:-x86_64}
branch=${3:-edge}

valid_branch="v3.3 v3.4 v3.5 v3.6 v3.7 v3.8 v3.9 v3.10 edge all"
valid_arch="armv7 s390x ppc64le armhf aarch64 x86 x86_64 all"

usage() {
    echo -e "\nUsage: $0 <pattern> [arch] [branch]\n"
    echo -e "\t<pattern>: Mandatory. Is the file you are searching. Supports wildcards (e.g. wge*) "
    echo -e "\t[arch]: Optional (default:  x86_64). Architecture. Valid values: $valid_arch"
    echo -e "\t[branch]: Optional (default: edge). Alpine releases. Valid values: $valid_branch\n"
    exit 1; 
}

query() {
        curl -s -d"$1" -H "application/x-www-form-urlencoded" -X GET https://pkgs.alpinelinux.org/contents | sed "s/&#x2F;/\//g" | html2text -nobs -ascii | sed /^$/d | sed '1d' | awk /^File/,/*Copy*/ |grep -vE 'Privacy|Policy'
}

if ! [ $file ] ; then usage; fi
echo $valid_arch | grep -qi $arch || ( echo "Invalid arch. Valid values are: $valid_arch"; exit 1 )
echo $valid_branch | grep -qi $branch || ( echo "Invalid branch. Valid values are: $valid_branch"; exit 1 )

if [ $branch == "all" ]; then
    if [ $arch == "all" ]; then
        for b in $valid_branch; do
            query "branch=$b&file=$file"
        done
    else
        for b in $valid_branch; do
            query "branch=$b&file=$file&arch=$arch"
        done
    fi
else
    query "branch=$branch&file=$file&arch=$arch"
fi

Hope it helps.

.: Francesco

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.