Move mercurial-server home and repo location - ubuntu-12.10

How to move mercurial-server (hg) home directory from /etc/mercurial-server/ to different location.I would like to store keys and repo in different disk
In Ubuntu 12.10
sudo apt-get install mercurial-server
sudo usermod -d /SOURCE/mercurial-server -m hg
#copied public_key to ~hg/keys/root/username
sudo -u hg /usr/share/mercurial-server/refresh-auth
Home dir moved and updated in /etc/passwd
but refresh-auth still use /etc/mercurial-server

/etc/mercurial-server should never be the home directory of mercurial-server; usually that's /var/lib/mercurial-server but you can move it. /etc/mercurial-server contains some files that affect the behaviour of mercurial-server. You can decide where that's located with ~hg/.mercurial-server.

Related

How to install/start using swtpm on Linux

I am trying to start using TPM on Linux, on my Raspberry Pi to be accurate, and the easiest would be to use swtpm to get used to commands and system, before using a TPM chip. I've tried the way presented on https://github.com/stefanberger/swtpm/wiki#compile-on-ubuntu-2104, but I got the error "Unable to locate libtpms-dev".
Then I looked for a way to install libtpms, and found this one solution. But after getting those both, I still couldn't run this command :
sudo swtpm socket --tpmstate dir=/home/ludovic.peyter/swtpm --tpm2 --server type=tcp,port=2321 --ctrl type=tcp,port=2322 --flags not-need-init,startup-clear
All I get is the following error :
swtpm: SWTPM_NVRAM_Lock_Dir: Could not open lockfile: No such file or directory
and
swtpm: Error: Could not initialize libtpms.
And here am I stuck, finding nothing to help me with this problem, or even an other way to avoid it.
Thanks for reading.
I have a complete solution, built with many different solutions and my own tests.
sudo apt -y install dpkg-dev debhelper libssl-dev libtool net-tools libfuse-dev libglib2.0-dev libgmp-dev expect libtasn1-dev socat python3-twisted gnutls-dev gnutls-bin libjson-glib-dev gawk git python3-setuptools softhsm2 libseccomp-dev automake autoconf libtool gcc build-essential libssl-dev dh-exec pkg-config dh-autoreconf libtool-bin tpm2-tools libtss0 libtss2-dev
Then make a new directory for more comfort, and step into it.
Clone git repository for libtpms :
git clone https://github.com/stefanberger/libtpms.git
Move to the generated libtpms directory and run these commands :
./autogen.sh -–with-openssl
make dist
dpkg-buildpackage -us -uc -j4
Then, as asked at the end of the last running command, run :
libtool --finish /usr/lib/aarch64-linux-gnu/
The directory could be different, so pay attention to the warning at the end of dpkg command.
And to finish the installation of libtpms :
sudo apt install ../libtpms*.deb
Now get back to the previous directory and clone swtpm git repository :
git clone https://github.com/stefanberger/swtpm.git
Now run this command :
dpkg-buildpackage -us -uc -j4
And the command asked by the previous running command :
libtool --finish /usr/lib/aarch64-linux-gnu/swtpm
The directory could be different, so pay attention to the warning at the end of dpkg command.
Now finish the installation with this :
sudo apt install ../swtpm*.deb
Everithing you need is installed. Now you need to modify the file ~/.profile or ~/.bash_profile to add this line :
export TPM2TOOLS_TCTI="swtpm:port=2321"
And now, everytime you need your swtpm, open two terminals, and in one of them run :
swtpm socket --tpmstate dir=<swtpm_path> --tpm2 --server type=tcp,port=2321 --ctrl type=tcp,port=2322 --flags not-need-init,startup-clear
In the other terminal, as long as the above command runs, you can run all your TPM commands.
Have you checked that the tpmstate directory exists? A mkdir /home/ludovic.peyter/swtpm2 could fix it for you.

VS Code: NoPermissions (FileSystemError): Error: EACCES: permission denied

I'm trying to save a file called app.js on a folder called js.
Vs Code pop up this:
Failed to save 'app.js': Unable to write file 'vscode-remote://wsl+ubuntu-18.04/js/app.js'
(NoPermissions (FileSystemError): Error: EACCES: permission denied, mkdir '/js')
I tried:
sudo chown -R user /mnt/c/Users/myUser/Documents/myFolder/proyectFolder
but I still can't save this file.
Try this, fixed it for me
sudo chown -R username path
Example:
sudo chown -R emanuel /home/emanuel/test/
In the SSH terminal:
Recommended :
sudo chmod -R 777 folder_name_where_your_file_exists
or
sudo chmod -R 755 folder_name_where_your_file_exists
this works for me
sudo chown -R $USER:$USER /home/
TLDR;
If you're using a docker container, avoid making files from within the container because the owner and group permissions may cause problems with your editor (in my case VS Code)
I was running docker container for a Django project from Windows Terminal and using VS Code to edit my code.
It is a Linux file (since everything in Linux is a file) permission problem that arises because the files don't have proper user and/or group permissions. So VS Code tries to tell us that.
The problem I found only happened when I created files from within my docker container.
I would run docker exec ... bash
make new files using touch /path/to/file from the container bash
then try to edit those files on VS Code (say urls.py) only to get the scary permissions error preventing the file from saving.
I suspect that making files from within the container embellishes those files with different owner and group settings than your system would default to if you just ran the commands locally (not in the container).
Changing the file permissions with chown -hR and chgrp -hR would do the trick but to avoid the error altogether I stopped making files from within the container.
Try activating polling:
This worked for me during I tried using wsl.
The below is for individual file:
sudo chown yourUserNAme filename
For an entire directory it will be (when you write ls to terminal, you should see your directory to execute this command):
sudo chown yourUserNAme dirName
For recursive (i.e files and folders inside a folder):
sudo chown -R yourUserNAme dirName
Note: yourUserNAme is, if you do pwd under any Documents, you will see the path: /home/jhon/Documents. Here user is jhon.
Run VS Code as administrator and it will fix the problem.
https://answers.microsoft.com/en-us/windows/forum/all/error-in-vs-code-destination-directory-and-says/e70dc626-6b12-4791-a960-8b704e57098d
Install the extension Save as Root in Remote SSH in VS code.
While saving press Ctrl + Shift + P.
This open the command palette.
Search Save as Root
It is a Linux user permissions problem.
you should use the command:
sudo chown -R $USER:$USER.

How to install Robomongo from tar.gz file as a program in Ubuntu 15.10

Nowadays robomongo developers releasing the new versions of robomongo as tar.gz not in .deb packages that was easy for double click installations. But that option is no longer available. So how to install it as a program in Ubuntu. I have tried extracting the package and install but failed.
admin#admin-lenovo:~$ cd Downloads/
admin#admin-lenovo:~/Downloads$ tar -xzf robomongo-0.9.0-rc4-linux-x86_64-8c830b6.tar.gz
admin#admin-lenovo:~/Downloads$ cd robomongo-0.9.0-rc4-linux-x86_64-8c830b6/
admin#admin-lenovo:~/Downloads/robomongo-0.9.0-rc4-linux-x86_64-8c830b6$ ./configure
bash: ./configure: No such file or directory
Also .make and ./install failed as no files found. How to install it as a program?
Robomongo is now Robo 3T. Following are the updated steps:
Download the tar file from robomongo site. The current file is robo3t-1.1.1-linux-x86_64-c93c6b0.tar.gz, but yours could be different.
Open up the terminal, switch to download directory and run the following commands:
$ tar -xvzf robo3t-1.1.1-linux-x86_64-c93c6b0.tar.gz
$ sudo mkdir /usr/local/bin/robomongo
$ sudo mv robo3t-1.1.1-linux-x86_64-c93c6b0/* /usr/local/bin/robomongo
$ cd /usr/local/bin/robomongo/bin
$ sudo chmod +x robo3t
$ sudo gedit ~/.bashrc
Add the following line to the end of .bashrc file:
alias robomongo='/usr/local/bin/robomongo/bin/robo3t'
Save and close the file. Now reload it using the following command:
$ source ~/.bashrc
Then you can run robomongo from your terminal and it will work:
$ robomongo
You can also put the robomongo into /usr/bin like I do:
tar xf robomongo-0.9.0-rc8-linux-x86_64-c113244.tar.gz
sudo mv robomongo-0.9.0-rc8-linux-x86_64-c113244/ /usr/bin/robomongo
export PATH=/usr/bin/robomongo/bin:$PATH
If you are using fish shell, you need to change the last line to:
set PATH $PATH /usr/bin/robomongo/bin
Now you can start it with command:
robomongo
Pulled this from my dotfiles. It's ugly but it works... and it's a bit more verbose so it should be understandable to most:
# Pull down and install Robomongo by copying files
cd /tmp
wget https://download.robomongo.org/0.9.0/linux/robomongo-0.9.0-linux-x86_64-0786489.tar.gz
tar xf robomongo-0.9.0-linux-x86_64-0786489.tar.gz
sudo mv ./robomongo-0.9.0-linux-x86_64-0786489 /opt/robomongo
cd /usr/sbin
sudo ln -s /opt/robomongo/bin/robomongo
# Grab image to use for icon
cd /opt/robomongo
wget http://mongodb-tools.com/img/robomongo.png
# Create desktop entry
touch /tmp/robomongo.txt
echo "[Desktop Entry]" >> /tmp/robomongo.txt
echo "Encoding=UTF-8" >> /tmp/robomongo.txt
echo "Name=Robomongo" >> /tmp/robomongo.txt
echo "Comment=Launch Robomongo" >> /tmp/robomongo.txt
echo "Icon=/opt/robomongo/robomongo.png" >> /tmp/robomongo.txt
echo "Exec=/usr/sbin/robomono" >> /tmp/robomongo.txt
echo "Terminal=false" >> /tmp/robomongo.txt
echo "Type=Application" >> /tmp/robomongo.txt
echo "Categories=Developer;" >> /tmp/robomongo.txt
echo "StartupNotify=true" >> /tmp/robomongo.txt
mv /tmp/robomongo.txt ~/.local/share/applications/robomongo.desktop
1. First Download the version from the official Robomongo website bellow:
Download Robomongo From Official website using this link
2.Then extract the downloaded tar.gz file in your downloads folder.
3. Copy and paste the extracted folder into your opt folder
/opt
NB: If you don't have permission to paste in this folder use the bellow command in terminal to access the folder.
$ sudo chmod -R 777 /opt
4. Open the opt/robomongo/bin folder and launch Robomongo by clicking the executable icon.
opt/robomongo/bin
5. Simply Create a database and right click on the Robomongo icon and select the lock to launcher option. This will create a shortcut t launch the Robomongo application at any time you need.
You can first extract the package:
cd ~/Downloads
tar -xzf robo3t-x.x.x-linux-x86_64-xxxxxxx.tar.gz
You can rename the folder to something simpler
mv robo3t-x.x.x-linux-x86_64-xxxxxxx robo3t
Dowload any images with format .png [click here][1]
(For whatever reason, the Robo3T package itself does not contain any png file for the icon)
Save the image like robo3t.png and move this image to folder robo3t and then, instead of dumping the whole thing in /usr you can transfer this directory to /opt directory and symlink the binary file to /usr/bin or /usr/local/bin. This makes for a better way of organising your applications, and keeping such add-on packages is what /opt is for.
So first move the directory
sudo mv robo3t /opt
and then symlink it like so
sudo ln -s /opt/robo3t/bin/robo3t /usr/bin/robo3t
then you can create an Unity desktop file for your launcher
nano ~/.local/share/applications/robo3t.desktop
and finally; paste the next code in the file newly created
[Desktop Entry]
Encoding=UTF-8
Name=Robo 3T
Exec=robo3t
Icon=/opt/robo3t/robo3t.png
Terminal=false
Type=Application
Categories=Development;
And Happy coding!
Currently there is no installer for robomongo-0.9.0-rc4. you can create a desktop shortcut to robomongo-0.9.0-rc4-linux-x86_64-8c830b6/bin/robomongo file and use it just like any other Ubuntu app. Take a look at this tutorial https://askubuntu.com/a/142197/71544
Wathc this Video
How to install robomongo on ubuntu 16.4
OR
Follow Below Steps
Open Terminal and run the below command
wget https://download.robomongo.org/0.9.0/linux/robomongo-0.9.0-linux-x86_64-0786489.tar.gz
Extract the tar.gz file to enter below command
tar -xvzf robomongo-0.9.0-linux-x86_64-0786489.tar.gz
create a dir /usr/local/bin dir name directory name robomongo and move it to extract file into robomongo directory
sudo mkdir /usr/local/bin/robomongo
sudo mv robomongo-0.9.0-linux-x86_64-0786489/* /usr/local/bin/robomongo
run command only if robomongo isn't executable file
cd /usr/local/bin/robomongo/bin
sudo chmod +x robomongo
./robomongo
Don't worry about how to install Robo-3T on your Linux machine, follow these simple steps:
Download script from Robo3T-Installation-With-Desktop Entry
Open terminal in directory where above file is downloaded and run below command
sudo chmod +x ./Robo3T-Installation-Menu.sh
Then type below command and hit enter
./Robo3T-Installation-Menu.sh
Just wait to complete it, once completed enjoy RoboMongo. Search in menu with name "Robo 3T".
Well, I do not know if it might still help, but one efficient way to install Robomongo from tar.gz file is the following:
Go to https://robomongo.org/download to grab the tar.gz file,
After download,
cd Downloads/*
and then type in the terminal:
$ sudo tar xzf robo3t-1.3.1-linux-x86_64-7419c406.tar.gz -C /opt/
Make sure your file has been unzipped in the /opt directory by checking:
$ ls -lh /opt/
Next, install it by doing:
$ sudo /opt/robo3t-1.3.1-linux-x86_64-7419c406/bin/robo3t
The installation wizard pops up and accept the terms and continue installation. Then Enjoy
NB: You will not see the robot3t icon in the start menu. So to start robot3t, always
/opt/robo3t-1.3.1-linux-x86_64-7419c406/bin/robo3t to launch robo3T.
Hope it helps ;)

Not able to clone private repo using dockerfile

I am new to docker, so was trying all basic stuff.
I have used following dockerfile to generate my working docker images
FROM ubuntu:14.04
MAINTAINER Alok Agarwal "alok.alok.com"
RUN apt-get update
#Install git
RUN apt-get install -y git
RUN mkdir -p /root/.ssh/
ADD id_rsa /root/.ssh/id_rsa
RUN touch /root/.ssh/known_hosts
RUN chmod 700 /root/.ssh/id_rsa
RUN git clone git#github.com:user/user.git
EXPOSE 80
I am able to clone my repo in my local system using ssh but when doing from docker its giving
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
I have put my id_rsa file same place where my dockerfile reside but still doesnt know why it is continuously failing.
Am I missing any basic step.
Advance Thanks for your time
Look at my example, I have a private ssh key in the directory where I dockerize app(ssh_keys/id_rsa), and public key I have already upload to the private repo:
FROM ubuntu:14.04
MAINTAINER Alok Agarwal "alok.alok.com"
RUN apt-get update
#Install git
RUN apt-get install -y git
RUN /bin/bash -l -c "mkdir /root/.ssh"
ADD ssh_keys/id_rsa /root/.ssh/id_rsa
RUN chmod 700 /root/.ssh/id_rsa
RUN echo "Host github.com\n\tStrictHostKeyChecking no\n" >> /root/.ssh/config
RUN mkdir -p /www/app
RUN git clone git#github.com:my_private_repo/repo.git /www/app

Install ack-grep on CentOS

I went through fair amount of google search to install ack-grep on CentOS but I didn't find anything help. I also looked for the source codes but couldn't find it neither. Does anyone know how to install it on the OS?
Thanks a lot.
Could be essentially the same as https://stackoverflow.com/a/23155007/35946 but on CentOS 6.7 the answer is:
# yum install epel-release
# yum install ack
if you don't have the root permission, you can do as follows:
$ curl https://beyondgrep.com/ack-2.22-single-file > ~/bin/ack && chmod 0755 !#:3
or you can change to root user:
$ sudo su
# curl https://beyondgrep.com/ack-2.22-single-file > /bin/ack && chmod 0755 !#:3
You can get it from the EPEL software repository.
From the EPEL FAQ:
For EL5:
su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm'
...
su -c 'yum install ack'
For EL6:
su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm'
...
su -c 'yum install ack'
Go to Beyond Grep and look at the section titled
Install The ack executeable
curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 !#:3
And replace ack.2.14 with the current version of ack.
You may need to create the directory mkdir ~/bin/ first. You may
also need to modify ~/.bashrc to include this new path E.G.:
PATH=$PATH:$HOME/bin
Then reload ~/.bashrc
source ~/.bashrc
Test the installation by running ack:
rpm -qa | ack s
This should display any installed packages containing the letter s. (some linux distributions may use ack-grep as the command.
How did you try installing it? Are you using yum? The package is probably not called "ack-grep", but just "ack".
The name "ack-grep" is a Debian-specific thing because there was already a package called "ack", so they called it "ack-grep" instead. That was years ago and now they're dropping the original "ack" package and renaming "ack-grep" to "ack".
For RedHat Enterprise just do sudo yum install ack