Pip , npm on offline servers - npm

If you are developing Python web services for local network (servers is totally offline from the web) and the only way to add files to the server is through Flash drivers so using pip for Python packages or npm for node packages is such a headache and gets in a lot of dependencies issues and build issues .. so what is the proper way of dealing with such environment so development and deployment would be easier?

there are 2 approaches which you can take:
download all your dependencies locally and ship them to the remote server. this includes all the pip and npm packages. pay attention to the python\nodejs\operating system versions and architecture.
use docker to create an image, which packs everything. then ship the image to the remote server and finally spin-up a container based on that image.

You can use Pypicache to run your own pip servers and let it to cache your dependencies wherever you have an internet connection (where you are developing the application).
Then you can copy the whole pypicache folder on your flash drive and run the server wherever you want and use the cached packages inside it. the good point is in some environments that you can get a network connection for a limited time, having a pypicache is useful because it can download whatever all of the dependencies that your python applications need, and each instance would download and install the dependencies from the offline pip server by providing a simple switch in the command line. Here is an example:
pip install -i http://localhost:8080/simple somepackage
More Information - pypicache

Related

Install Phalcon on RHEL 7

I'm trying to install Phalcon on my RHEL 7 VM. I downloaded files and folders from GitHub and place them on my VM via WinSCP in /opt/ (using remi repo or git clone from VM is blocked)
When I move into /opt/phalcon/build/ and try to sudo ./install, I got a notice that PHP 5 is no longer supported, currently on my Red Hat, I have PHP 7.3.11 version running (checked using php -v and config page).
I installed things like php-devel or gcc.
I have rh-php73-php installed and running on my VM
Maybe someone can help me, because I have no idea how to fix it.
I have rh-php73-php installed and running on my VM
Sorry, but phalcon extension package doesn't exist for this PHP stack.
Using the full php stack from "remi-php73" repository or php73 SCL from "remi-safe" will give you "php-phalcon4" package with latest version of this extension.
using remi repo or git clone from VM is blocked
Use a proxy, or download packages and install them manually.
Tips: test installation from another computer, connected to internet, to get the full package list. You can even retrieve them later from /var/cache/yum (using keepcache=1 in yum.conf)
For memory, for a proper installation, follow the Wizard instructions

Spring data redis mock

I need to do integration testing for a spring cloud application running with spring data on redis.
Tests work locally with the regular redis server instance and I need to run this on a Jenkins CI server that is controlled by the corporate CI engineering group.
Obviously I can attach to a redo server there so I used an embedded redis server (from here: https://github.com/kstyrc/embedded-redis).
Running tests locally with this redis server works well since there is a test profile to inject the embedded server in place of the production one.
Now the problem is that when we run this in the Jenkins environment this is the error we see.
/tmp/1430170830037-0/redis-server-2.8.19: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /tmp/1430170830037-0/redis-server-2.8.19)
So this version of redis has specific dependency on a specific version of glibc. I tried a couple of other libraries but they all depend on the same underlying version of the embedded redis server.
Is there a spring data mock framework that can be used to get around this sort of issue?
This might come a little late for you, but there is indeed a Spring Data Mock framework that you can use, which let's you mock repositories (regardless of the specific backend solution) without a real database connection.
Here is a link: https://github.com/mmnaseri/spring-data-mock
You don't have a high enough version of libc6, that is causing the error.
From How to fix “/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found”? – Super User:
That means the program was compiled against glibc version 2.14, and it requires that version to run, but your system has an older version installed. You'll need to either recompile the program against the version of glibc that's on your system, or install a newer version of glibc (the "libc6" package in Debian).
So, you just need to upgrade your libc6 package. All versions of Ubuntu have at least version 2.15 because it's a faily important package (reference).
To upgrade it, use these commands in a terminal:
sudo apt-get update
sudo apt-get install libc6
p.s. This is answer from askubuntu.com by minerz029

Why is a yeoman scaffold so slow?

A simple yo webapp with a freshly installed Yeoman 1.4.6 and a freshly installed Node.js 0.12 (I've also tested with 0.10) takes four minutes on my computer! I'm wondering if things are configured as they should. Does npm have to download do all these things every time? What happened since Paul Irish initial demo?
My system is an Ubuntu 14.10, Node.js 0.12 installed using these instructions.
Update: Here's an asciicast from another machine (Ubuntu 14.04, Node.js 0.10, NPM 2.7.1): https://asciinema.org/a/17741
The "module" concept of node.js is around "download on first install and save to cache for future installs". Basically, then you start yo webapp on fresh node.js install, all required node.js modules are download from internet and saved to cache. Second yo webapp command will do much faster (like in demo) since all required modules are already downloaded to your computer.

Creating a Mono binary install package for CentOS 5.2

I'm new to Linux but have to port a asp.net app to Linux platform. (CentOS 5.2)
I downloaded the mono source files and manually build them on my dev box, because there's no aviable Binary package for CentOS 5.2 (almost the same as RedHat), the app works well on the dev box.
The next step is to setup the production server, which has minimal libraries installed.
My question is... how to make the Mono binary files into a install package so I don't need to download and build them in the production server.
(My dev box is the same configuration as the production one)
I have tried to copy all mono related files into the server, but with no luck... May I missed some files or some settings...
You can still get binary RPMS here
EDIT:
Recently, Mono announced support for RHEL/CentOS. You can get packages from them here.

Automate CentOS installation with VMware for testing

Is is possible to automate the installation of an OS using VMware or any other virtualization product?
One of our products consists of a customized version of CentOS that installs the OS and our application on a server. It's much like any CentOS/RHEL installation where you choose a mode that corresponds to different kickstart options, and then you choose your keyboard type. The rest of the installation is automatic.
What I'd like to have is an automated system that will create a new guest VM, boot it with the ISO image of our product, start the installation (including choosing the keyboard), wait for the reboot, and then launch a set of automated tests.
I know that there are plenty of ways to automate the creation of new VM guests from existing templates/images, and I know you can use the VIX API to interact with virtual machines, but the VIX API seems to require that VMware tools is already running (which won't be the case when you're booting from the CentOS install disk).
This answer (Automating VMWare or VirtualPC) indicates that you can script VMware to boot from an ISO that does an unattended installation, but I would really like to test the same process that our customers will be using.
Another option might be to use Xen's fully-virtualized mode and see if scripting it over the serial port will work.
TIA,
Jason
I have a very very similar question, it is on superuser:
https://superuser.com/questions/36047/moving-vmware-os-image-as-primary-os-on-a-system
You can also use VirtualBox instead of VMWare. The VirtualBox SDK allows you to directly control the keyboard, the mouse the serial port and the parallel port of the guest without the virtualbox guest tools installed.
Unfortunately it doesn't offer a text console interface but the serial port can be connected to a local pipe file and that can probably be worked with just as well.
This may not be exactly what you need:
I have done something similar with a Ubuntu-based install. We used preseeding (Debian's form of kickstart), to answer all the questions during the install - providing the preseed file and the installer via tftp.
In addition to the official Ubuntu mirror we added the apt-server with our own packages in the preseed file. We put a .deb version of vmware-tools on the apt-server and added it to the packages to be installed.
The .deb of vmware tools just contained the .tar.gz and a postinstall script that would extract it to /tmp and run the vmware install script (which has a switch to be run unnattended, so it does not ask any questions).
So after the reboot vmware-tools were up and running and we could use vix to script the rest (which was not very reliable).
If you should encounter problems with running vmware-config.pl during boot, you could make a custom package that just extracts the tools and an init script that installs them on first boot, disables itself and reboots.
Maybe you can use this strategy (replacing apt by yum, preseed by kickstart and tftp by a remastered iso). If you really need to test that your users choose a keyboard in the installer (which is not very different from kickstart) this would obviously not work for you..