• 0 Posts
  • 981 Comments
Joined 2 years ago
cake
Cake day: June 12th, 2023

help-circle
  • atzanteol@sh.itjust.workstoLinux@lemmy.mlUse arguments in shell script with apt
    link
    fedilink
    English
    arrow-up
    6
    arrow-down
    1
    ·
    edit-2
    1 day ago

    For apt to install a local file I think you need either a fully qualified path or to use “./” at the start for a relative path.

    So “./$1/opensnitch_${1}_amd64.deb”

    apt install 1.6.5/opensnitch_1.6.5_amd64.deb 1.6.5/python3-opensnitch-ui_1.6.5_all.deb

    Edit: Here’s a better example of what I think you would want:

    #!/bin/bash
    # Often good to assign a numbered parameter to a variable
    VER="${1}"
    apt install "./${VER}/opensnitch_${VER}_amd64.deb" "./${VER}/python3-opensnitch-ui_${VER}_all.deb"
    

    Also - when debugging bash scripts it’s often helpful to just put “echo” before the line you’re questioning to see what exactly is being run. e.g.:

    #!/bin/bash
    VER="${1}"
    echo apt install "./${VER}/opensnitch_${VER}_amd64.deb" "./${VER}/python3-opensnitch-ui_${VER}_all.deb"
    

    That will show the the command that would have run rather than running it, then you can inspect it for errors and even copy/paste it to run it by hand.




  • I used to do this frequently “back in the day”…

    dd will create a complete bit-for-bit copy of the drive and put its contents into a file. All the way down to the boot sector, partitions, etc. Filesystem doesn’t even matter a little.

    I used to do something like “dd /dev/sda bs=1M | nc remote.server 1234” and then on the remote server “nc -l 1234 -p > file.img </dev/null”. I was swapping back and forth between Linux and Windows on a work laptop that I was using for non-work related things on the weekend, at conferences, etc.

    Wasn’t perhaps my most intelligent moment, but it worked!



  • It requires a near obsessive understanding of the architecture being emulated, but generally the process is “relatively straightforward” (though not necessarily “easy”). A CPU is a relatively simple device compared to the software built on it. Your basic steps are:

    1. Read an instruction
    2. Perform the instruction
    3. Jump to the next instruction

    Throw that in a loop and voilà! You have an emulator. Granted I’ve handwaved over a lot of complexity (I don’t mean to trivialize the effort)…

    To translate a binary is very different. Compilers optimize output to behave in a specific way for the target CPU that simply may not work on the new CPU. What do you do, for example, if the code was compiled for a platform that had 12 registers but the new one only has 6? You’d need to re-write the logic to work with fewer registers. That’s difficult to do in a way that is generic for any program. An emulator can just present the program with the 12 registers it expects (emulated in memory at the expense of performance).




  • I have an alias set up and SDKs enabled. The experience is indistinguishable from a regular install.

    That’s not indistinguishable - that’s you working around the problem of running flatpak run some.domain.IForget(which - BONUS is case sensitive which is awesome) to run neovim.

    Snaps install a binary you can run. Flatpaks make you remember the 3 part domain to run things. So you setup aliases after installing things to run them, and if you uninstall them you need to remove your aliases. It’s a complete own-goal by the flatpak developers that this mess exists and is completely unnecessary. Simply providing an option to create and manage a script in .local/bin or something would be all it takes to make flatpaks usable from the CLI in a way that isn’t obnoxious.