devops-works / binenv Goto Github PK
View Code? Open in Web Editor NEWOne binary to rule them all. Manage all those pesky binaries (kubectl, helm, terraform, ...) easily.
License: MIT License
One binary to rule them all. Manage all those pesky binaries (kubectl, helm, terraform, ...) easily.
License: MIT License
We should be able to mask some versions.
If a distribution changes it's naming scheme, we might want to have 2 distributions defined with the proper templates.
In this case we want to add filters to those distributions so they just handle the proper versions.
For instance, we could suggest to install ketal using kubectl krew install get-all
(recommended by the author).
Add support for statically specified versions
binenv install taskctl 1.4.2
2021-05-01T10:04:00+02:00 ERR unable to install "taskctl" (1.4.2) error="unable to download binary at https://github.com/taskctl/taskctl/releases/download/v1.4.2/taskctl_1.4.2_linux_amd64.tar.gz: 404 Not Found"
Correct URL is https://github.com/taskctl/taskctl/releases/download/1.4.2/taskctl_1.4.2_linux_amd64.tar.gz
... download/v1.4.2... vs. ... download/1.4.2 ..
When no binaries matches, we should print a warning.
We probably should no create a shim is not versions are present
Trying to follow the README to install binenv on Linux I get this error:
./binenv update --cache
Error: unknown flag: --cache
Removing the cache flag seems to work though.
Thanks!
Hi,
i continue to add tools which are used in various projects in our organization. i have a few issues again =)
020-11-29T09:56:56Z WRN ignoring invalid version for "packer" error="Malformed version: nightly"
Hello! Thanks for binenv.
How install app to /usr/local/bin?
Hi,
due to some problems i followed your steps again in a vagrant box and after downloading and chmoding the binary i got that error request:
vagrant@debian10:~$ ./binenv update updating distributions 76% |..... | (57/75, 4 it/s) [16s:5s]2020-11-23T15:21:15Z ERR unable to fetch versions for "stern" error="github rate limit is close: remaining 4 of 60; please retry after 2020-11-23 16:20:59 +0000 UTC"
it looks like i get an error with the distributions. i am not sure, why this happens. i have not much requests to github atm.
could it be that fetching your LATEST binenv creates some problem? should you at least use a binenv from a release where all the distributions are verified? or is it another problem?
Hi,
Currently aws-iam-authenticator isn't available via binenv. It would be really nice if it could be added. https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html
Thanks
Many people will use this for generating environments or docker containers (as do i), fetching a github token for that would be out of the question.
would it be possible to fetch distributions.yml from some branch or tag? like
binenv update --raw --project devops-works/binenv --branch develop
would fetch https://raw.githubusercontent.com/devops-works/binenv/develop/distributions/distributions.yaml and use that.
because updating single applications is normally not a problem and installing them. but updating all the distributions file will always run into a ratelimit. or the tool tries alternatively adhere to the ratelimits...
Hello! Thanks for binenv
Can add https://github.com/mazen160/tfquery to binenv?
Installation
mazin@hackbox$> git clone https://github.com/mazen160/tfquery.git
mazin@hackbox$> cd tfquery
mazin@hackbox$> python3 setup.py install
or
mazin@hackbox$> pip install git+https://github.com/mazen160/tfquery
Windows support is quite some work (.exe everywhere, no real symlinks, no executable replacing, different compression format for many distributions...) for a non-existent user base.
We are not willing to spend time for this platform. If anyone is willing to do it; please go ahead.
Otherwise, we'll remove windows-related stuff (.exe templating, windows speficics in distributions.yaml, cross-compilation) early 2021.
binenv update
updating distributions 40% |██████████████████████████████████████████████████████████████████ | (30/75, 3 it/s) [10s:14s]2020-11-23T09:13:44+02:00 WRN ignoring invalid version for "packer" error="Malformed version: nightly"
updating distributions 74% |██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | (56/75, 3 it/s) [18s:6s]2020-11-23T09:13:52+02:00 ERR unable to fetch versions for "onefetch" error="github rate limit is close: remaining 4 of 60; please retry after 2020-11-23 10:13:34 +0200 EET"
run again
binenv update
2020-11-23T09:15:02+02:00 ERR unable to fetch versions for "naabu-win" error="github rate limit is close: remaining 3 of 60; please retry after 2020-11-23 10:13:34 +0200 EET"
OS: Mac (Catalina)
Version binenv: v0.8.2
Hi, i have a couple of suggestions of binaries i use in several projects:
i am not sure if you can do this stuff too, but perhaps they will do releases one day:
and another idea, did you think about installing other package managers? like
the second and third blocks are just suggestions. i am glad either way, i will DEFINITELY use your tool. Thanks for this!
Hi,
it's me again :)
i asked the arkade project (which concentrates on kubernetes binaries) if they coulde change their deployment:
alexellis/arkade#298
and they mentioned that they and others have a similar (usual) naming process. Now my question is, is adding arkade easy and if yes, is there already a binary managed with binenv in distributions.yaml which has the same publication strategy as arkade? if not, how hard would it be to write a strategy for that?
This would allow fetching distributions.yaml
from the develop branch
After installing docker-compose, I can't run it even though accessing the binary directly works fine.
$ binenv install docker-compose
2020-12-03T13:51:28+01:00 WRN version for "docker-compose" not specified; using "1.27.4"
fetching docker-compose version 1.27.4 100% |███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| (12/12 MB, 5.462 MB/s)
2020-12-03T13:51:31+01:00 INF "docker-compose" (1.27.4) installed
$ docker-compose up
[56249] Cannot open self /home/rick/.binenv/docker-compose or archive /home/rick/.binenv/docker-compose.pkg
This would allow to search if a binary is available in binenv without having to use versions
and then search through the output to find it.
go get vitess.io/vitess/go/cmd/vtctlclient
Please add https://github.com/ogham/dog Command-line DNS client
May be add convenience flags:
-i
(--install
) flag in update
command; this would install the latest distribution version after the update is performed-u
(--update
) flag in install
command; this would update the distribution list before installing the version( latest of specified one)We could do things like binenv install terraform -u
instead of binenv update terraform && binenv install terraform
.
This could be nice, but could also make the tool a bit confusing just to save some keystrokes.
The installation of naabu fails in the latest version 2.0.3:
binenv install naabu 2021-04-27T06:44:38Z WRN version for "naabu" not specified; using "2.0.3" 2021-04-27T06:44:38Z ERR unable to install "naabu" (2.0.3) error="unable to download binary at https://github.com/projectdiscovery/naabu/releases/download/v2.0.3/naabu_2.0.3_linux_amd64.tar.gz: 404 Not Found"
Reason: Project switched the filename deliminator from underscore to dash
Normally I would just fix it and open a PR but this only affects the latest version so changing it would break all older versions.
Any ideas of how to fix it?
binenv install binenv
=> install latest version
Installing binenv should be simplified to single command.
We can implement it as installer bash script.
wget -O - http://website.com/my-script.sh | bash
or other, as described here: https://serverfault.com/a/890417/638586
Simpler installation is very important for user adoption.
Add option to upgrade all installed binaries
Workaround :
for d in $(binenv versions -f | grep -v ^# | cut -d'=' -f1); do binenv install $d; done
We should check the rate limit and queries left and stay below threshold.
Hello,
i start after a while stumbling often enough with sudo and tools i installed with binenv. Can you add a documentation which best practice you would recommend, so tools are usable with sudo? because otherweise minikube for example is not really usable
Add support for single-gzipped binaries
Hi,
I find myself on an M1 Mac and would love a native binary for the M1 chip.
Thanks!
$ cat .binenv.lock
#helm: default
helm=3.4.2
#helmfile: default
helmfile=0.135.0
#kubectl: default
kubectl=1.19.3
#sops: default
sops=3.6.1
$ binenv -v install -l
2021-04-01T13:50:48+02:00 DBG will use "helm" (3.4.2) to satisfy constraint "helm=3.4.2"
2021-04-01T13:50:48+02:00 DBG will use "helmfile" (0.135.0) to satisfy constraint "helmfile=0.135.0"
2021-04-01T13:50:48+02:00 WRN no available versions found for "kubectl". Please run "binenv update kubectl".
2021-04-01T13:50:48+02:00 DBG will use "sops" (3.6.1) to satisfy constraint "sops=3.6.1"
$ binenv install kubectl
2021-04-01T13:49:18+02:00 WRN version for "kubectl" not specified; using "1.20.4"
2021-04-01T13:49:18+02:00 WRN version "1.20.4" already installed for "kubectl"
To avoid having users being rate limited by accident, we might change the default behavior to use remote cache and have an explicit --nocache
flag to fetch release list for every distributions.
$ echo "vault<1.5.0" > .binenv.lock
$ vault version
2020-08-29T12:28:03+02:00 FTL binenv: unable to find proper version for vault (unable to satisfy constraint "<1.5.0" for "vault". Try 'binenv install vault 1.5.0'.)
Finish mappers implementation.
Hello! Thanks for binenv.
Please add install pulumi by binenv.
some distributions might have different archive format depending on architecture (e.g. https://github.com/sharkdp/fd/releases)
it would be great to be able to handle this.
currently cache.json
is in ~/.config/binenv/
, it might be better to move it in ~/.cache/binenv/
Implement OS/architecture exclusions
We really need that --debug flag
bienv does not currently work in sudo situations. For instance:
sudo termshark -i eth0
fails, as weel as
sudo $(which termshark)
One way to make it work would be to completely dereference the binary, e.g.
sudo ~/.binenv/binaries/termshark/2.2.0 -i eth0
A new expand
command would allow retrieving the proper path for commands:
sudo $(binenv expand termshark) -i eth0
(unless we find a better solution)
When in a directory with a .binenv.lock
, binenv install
should install required versions.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.