13/11/2018

Git: hoe haal ik of zie ik remote branch?

Filed under: — cybrarian @ 1:16 pm

(in de reeks Git…)

Zien
Online (in de web interface) zie ik de branches:

  • master
  • test
  • issue1

Maar lokaal zie ik alleen mijn eigen master (sic!):

git branch -l
* master

Ook na een git fetch blijft dat zo.

Git fetch heeft een standaardgedrag of volgt instellingen, maar je kan meer specifiek git fetch origin doen:

~/Git/TrypoPrj/TrypoPrj> git fetch origin
~/Git/TrypoPrj/TrypoPrj> git branch -l
* master

Bovendien moet je eigenlijk –list gebruiken (-l dient om een reflog aan te maken), en toont git branch –list enkel de lokale branches. Maar

git branch -r

origin/HEAD -> origin/master
origin/feat-01
origin/master
origin/test

toont de remote, of wil je alles:

git branch -a

* master
remotes/origin/HEAD -> origin/master
remotes/origin/feat-01
remotes/origin/master
remotes/origin/test

met extra info als laatste commit message:

git branch -v -a

* master 8ab6216 [ahead 1] remove .directory from tracked files
remotes/origin/HEAD -> origin/master
remotes/origin/feat01 2bbd368 Complete changes.txt with done work
remotes/origin/master de381ad Resolve merge conflict by combine and reorder lines in changes.txt

Afhalen
Als je een branch van remote wil halen kan je die opgeven

git fetch origin branch-naam
Daarna logischerwijze merge in je eigen (bv master) en commit:

git merge origin/branch-naam
git commit ...

Git ingore negeert opgegeven bestand niet

Filed under: — cybrarian @ 10:47 am

(in de reeks Git…)

Hoewel ik .settings heb toegevoegd tot gitignore, blijft het af en toe opduiken als gewijzigd bestand, klaar om mee te committen. Ik begrijp niet of het komt door merge met andere medewerkers die misschien een andere instelling hebben (hoewel ik dacht dat die lokaal was).

Oorzaak is bv dat het bestand oorspronkelijk niet in gitignore zat, en er pas later is aan toegevoeg, toen het al getracked werd. En .gitignore werkt alleen voor “untracked” files (voor nieuwe bestanden dus).

Er is een extraatje nodig (how to make git forget..):

git update-index --assume-unchanged

git update-index --assume-unchanged .settings

Je krijgt geen feedback na dit commando.

28/10/2018

KMail backup: waar zit de mail?

Filed under: — cybrarian @ 4:25 pm

(KMail KDE OpenSUSE 42.3)

Mail als bestanden
De mail is in mijn huidige OpenSUSE Leap 42.3 terug te vinden in de map local-mail, die in de directory staat die is ingesteld in KMail (bv ~/.local/share/).
Daar zie je de mappen die je aangemaakt hebt in je mail programma als directories staan.

Onderverdeling mappen
De sub-mappen in je mail programma vind je niet allemaal terug; enkel de bovenste laag vind je als map met dezelfde naam terug in die directory. Zet de zichtbaarheid van verborgen bestanden aan (alt .) om de verwijzing naar de submappen te vinden.

Backup
Voor de backup gebruik ik RSYNC naar een gemounte harde schijf:
rsync -a ~/.local/share/local-mail/ mountedDisk/local-mail

28/9/2018

Git voorbeeld: SourceForge

Filed under: — cybrarian @ 10:24 am

(Reeks Githandboek (nl)commando’s vbbranch, mergeGitLab vbSourceForge vbgit en gambas)

SourceForge (https://sourceforge.net/) was in de open source en free softwarewereld zowat de eerste, grootste en bekendste website voor het online houden van een open source of free software project. Je kon de broncode gewoon uploaden als .tar.gz bestanden, of het Code Versioning System gebruiken (cvs), naast de vele project-tools voor opvolging van bugs, communicatie enz. (zie 2009)

SourceForge heeft achtergrond in VA Software (denk ook aan VA Linux, Geeknet, enz), ondertussen horen ze bij Slashdot media.
Het traject van de zoektocht naar rendabiliteit en de overnames deed Sourceforge geen goed en zaaide twijfel bij developers.
Heel wat nieuwe projecten gingen naar GitHub, (en meer recent GitLab), die specifiek gericht waren op het ondertussen in de FOSS wereld populaire geworden git-broncodebeheersysteem.

Maar ondertussen biedt SourceForge ook Git aan. Sinds januari 2018 promoten ze het aktief met een importeer-tool om GitHub projecten over te zetten naar SourceForge.
https://sourceforge.net/blog/introducing-the-new-sourceforge/

Wie al op Sourceforge zit kan zijn project beginnen beheren met git: https://sourceforge.net/p/forge/documentation/Git/

Om gemakkelijk te communiceren met de sourceforge repository is het best om een public key/private key communicatie op te zetten. Daarvoor moet je een “key” hebben, die je maakt met ssh-keygen.
Daarna moet je de projectdirectory initialiseren voor gebruik met git. En dan moet je je startcode “uploaden”, in git-terminologie comit-en en push-en.

1. Keys

1.1 keys maken:

De handleiding van sourceforge zegt:

ssh-keygen -t ed25519 -C “gebruikersnaam@shell.sf.net”

De plaats waar je dit doet is eender (bv kan je al in de projectdirectory staan).
De gebruikersnaam is die van je login, niet de weergegeven naam!
Na het commando krijg je de vraag in welk bestand de key bewaard mag worden, je kan het voorstel gewoon bevestigen.
Daarna kan je een wachtwoord ingeven (veiliger), wat je moet heringeven om te bevestigen.
Het eindigt met de plaatsen waar je identificatie en je public key bewaard werden*, en met je fingerprint.
Daaronder komt een beetje “ascii-art” met je randomart image.
* Je kan je instellingen checken in de bestanden:
private key: /home/usernaam/.ssh/id_ed25519 (deze moet je geheim houden!)
public key: /home/usernaam/.ssh/id_ed25519.pub (deze moet je meedelen)

1.2 keys registreren

Log in op SF en ga naar:
https://sourceforge.net/auth/shell_services
Daar plak je de inhoud van je .pub bestand.

2. Projectdirectory

De directory die je wil opnemen in het git beheer moet je initialiseren voor git gebruik.
Ga in de directory staan (cd projectdir), en check git:

git status
Als je … krijgt is er al een git repository van gemaakt!
Als er nog geen git initialisatie gebeurd is op deze directory krijg je een melding als:

fatal: Not a git repository

…(enz)

Tik het initialisatiecommando dat de nodige subdirectories en bestanden maakt:
init git

Initialised empty Git repository in …

Opgelet! Nu zijn er een aantal (onzichtbare) directories/bestanden bijgekomen voor git, gebruik deze projectdirectory niet meer om op een andere manier te kopiëren als project sourcecode, want hij is “vervuild” met git.

3. Stel de bron in

Als de broncode nog niet in de directory staat, kopieer je die ernaartoe. Ze vormen de verzameling van alle onderdelen die je nodig hebt om een programma te kunnen compileren.
Met git status toont git wat het daar ziet.

Je stelt ook de bestanden in die NIET naar de git-server moeten, omdat ze enkel lokaal nut of belang hebben (bv lokale instellingen van de programmeeromgeving), of omdat ze prive-informatie bevatten.
Maak daarvoor een bestand .gitignore in de projectdirectory.

git rm --chached (file) om iets wat er per vergissing toch is terechtgekomen; check met git status.

git commit -am ‘initial commit at version 0.1.5’

Je krijgt de melding dat een ‘standaard’ e-mail adres gebruikt is; je kan het instellen met:

git config --global --edit

pas aan, bewaar (standaard met ESC :w en :q), en daarna fix de identiteit die gebruikt werd met:

git commit --amend --reset-author

Je krijgt dan een tekst te zien (waarin je bv het e-mail adres kan verbeteren, dacht ik, maar dat blijkt achteraf niet met git log**); ook weer ESC :wq om te bewaren en verlaten.

4. Stel de server in

Nu moet je een verbinding instellen met de server, waar de broncode naartoe moet.

git remote add origin ssh://login@git.code.sf.net/p/gitin/code

(met je eigen login natuurlijk; de username).

En dan de eigenlijke “upload”:

git push -u origin master
Er wordt een bevestiging gevraagd van de git.code.sf.net server (met ip)
Die wordt dan toegevoegd aan de “known hosts”.
Daarna moet je je wachtwoord ingeven (dat van de ssh key).

Met wat geluk eindigt alles met:

Branch master set up to track remote branch master from origin.

Nu kan je via de website het resultaat zien onder het tabblad “code”:
https://sourceforge.net/p/projectname/code/

De projectdirectory is volledig te “browsen”!
Onderaan verschijnt de inhoud van het readme.txt bestand.

Zeer handig is de kolom “Commit”, want daar verschijnt de commit message, en je kan daarmee snel zien wat de laatste verandering is in een directory of bestand.


**)
Je moet eerst expliciet de gegevens instellen, bv het e-mail adres wordt afgeleid uit je username en je hostname, dus je krijgt username@host, en dat kan bv de lokale hostname van je pc zijn.

Je moet dan eerst expliciet de username of het e-mail adres instellen:

git config --global user.name "gebruikersnaam"
git config --global user.email "user@domein.abc"


5. Gebruik.

– Code

git commit -am 'initial commit at v.0.1.3'

Nadat van een project de originele code naar de server geladen is, wordt ze zichtbaar in de “code” tab van de Sourceforge website, bv als:

Tree[987456] master/

Op die pagina krijg je ook de commando’s aangeboden die je nodig hebt om ssh/https/RO (read-only) toegang te krijgen.

– Clone

RO is genoeg om het project af te halen:

git clone git://git.code.sf.net/p/projectnaam/code projectnaam-code

Dit maakt een lokale directory projectnaam-code, verwijzend naar de structuur op de server (beetje verschillend van GitLab).

Om ook schrijftoegang te hebben moeten eventueel de rechten aangepast worden door de admin van het project, en moet je één van de voorgestelde read/write commando’s geven.

git branch --list toont: “* master”

fatal: remote error: access denied or repository not exported…

Als je oorspronkelijk enkel read-access hebt gevraagd (bij project clone), kan je nadien de instellingen aanpassen in het .git/config bestand. Volgens de documentatie:

git://PROJECTNAME.git.sourceforge.net/gitroot/PROJECTNAME/REPONAME (read-only)
ssh://USERNAME@PROJECTNAME.git.sourceforge.net/gitroot/PROJECTNAME/REPONAME (read/write)

Bij mij zag het er iets anders uit:

url = git://git.code.sf.net/p/projectnaam/code

url = ssh://USERNAME@git.code.sf.net/p/projectnaam/code

Zoek de regel die begint met git:// en verander hem naar ssh:// waarbij je “USERNAME@” toevoegt (maar dan je echte loginnaam natuurlijk).

9/9/2018

Teamviewer gebruiken

Filed under: — cybrarian @ 11:07 pm

Na installatie van Teamviewer op openSUSE Leap 42.3 komt het programma voor in het Kde menu onder systeem of hulpmiddelen? Nee, onder “Internet”.

Bij het starten geeft het een aantal gegevens die je kan gebruiken om een koppeling te maken met een andere computer.

user id

password

Op de “andere computer” start je ook het programma.

De id invullen, het wachtwoord invullen…

(Eerste keer blijft hij altijd het wachtwoord vragen, alsof het fout is. In beide richtingen trouwens, als ik omgekeerd probeer ook dus. Ik moet afsluiten wegens tijdgebrek en beslis morgen verder te proberen).

Volgende dag lukt het wel: open het programma op beide computers, neem de nummer van de ene mee, alsook het wachtwoord; en je krijgt het scherm te zien.

De verbinding is niet razendsnel; je moet echt wel rekening houden met de vertraging bij bv het typen van een tekst, het verplaatsen vergroten/kleinen van vensters, enz.

Maar het werkt dus wel, je kan op afstand iemand helpen.

Teamviewer installeren

Filed under: — cybrarian @ 10:23 pm

Teamviewer op openSuse Leap 42.3

1. download 32 of 64 bit versie? Suse 64bit. (kies “Save File” (Bewaren) in de browser)
www.teamviewer.com/nl/download/linux/

2. ga naar de download map (klik op download pijl rechtsboven in Firefox, kies “open containing folder”)
Open een terminal (rechtsklik actions, open terminal here) en installeer met de commandolijn:

sudo zypper install teamviewer-suse_13.2.13582.x86_64.rpm

Loading repository data…
Reading installed packages…
Resolving package dependencies…

The following NEW package is going to be installed:
teamviewer-suse

1 new package to install.
Overall download size: 12.2 MiB. Already cached: 0 B. After the operation, additional
59.3 MiB will be used.
Continue? [y/n/…? shows all options] (y):

y

Retrieving package teamviewer-suse-13.2.13582-0.x86_64
(1/1), 12.2 MiB ( 59.3 MiB unpacked)
teamviewer-suse_13.2.13582.x86_64.rpm:
Header V4 RSA/SHA1 Signature, key ID 0c1289c0: NOKEY
V4 RSA/SHA1 Signature, key ID 0c1289c0: NOKEY

teamviewer-suse-13.2.13582-0.x86_64 (Plain RPM files cache): Signature verification failed [4-Signatures public key is not available]
Abort, retry, ignore? [a/r/i] (a):

Er wordt een vraag gesteld over signing; blijkbaar deden ze dat nooit, de packages signen voor Linux, dus ik ignore de waarschuwing met i.

i

Checking for file conflicts: ……………………………………………..[done]
(1/1) Installing: teamviewer-suse-13.2.13582-0.x86_64 ……………………….[done]
Additional rpm output:
warning: /var/cache/zypper/RPMS/teamviewer-suse_13.2.13582.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 0c1289c0: NOKEY
gtk-update-icon-cache: Cache file created successfully.

3. Start de daemon (kan al gestart zijn door de installatie)
Check eerst of hij al loopt, zo ja, geen probleem.

systemctl status teamviewerd

systemctl status teamviewerd
● teamviewerd.service – TeamViewer remote control daemon
Loaded: loaded (/etc/systemd/system/teamviewerd.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2018-09-09 23:22:12 CEST; 3min 9s ago
Process: 5628 ExecStart=/opt/teamviewer/tv_bin/teamviewerd -d (code=exited, status=0/SUCCESS)
Main PID: 5633 (teamviewerd)
Tasks: 16 (limit: 512)
CGroup: /system.slice/teamviewerd.service
└─5633 /opt/teamviewer/tv_bin/teamviewerd -d

Sep 09 23:22:12 TCM-S4VCR72 systemd[1]: Starting TeamViewer remote control daemon…
Sep 09 23:22:12 TCM-S4VCR72 systemd[1]: teamviewerd.service: PID file /var/run/team…ry
Sep 09 23:22:12 TCM-S4VCR72 systemd[1]: Started TeamViewer remote control daemon.
Hint: Some lines were ellipsized, use -l to show in full.

Zo nee, start hem manueel.
sudo systemctl start teamviewerd

4. Voeg toe aan de opstartfase als je dat wil.

sudo systemctl enable teamviewered

Het desktopprogramma is opgenomen in het menu Internet als Teamviewer 13.

Geraadpleegde bron: www.linuxbabe.com

Zie verder: Wacht om te zien of het werkt … Teamviewer gebruiken op Linux

4/9/2018

Git gebruik organiseren: branches, comit, merge

Filed under: — cybrarian @ 8:59 pm

(Reeks Githandboek (nl)commando’s vbbranch, mergeGitLab vbSourceForge vbgit en gambas)
Zie ook artikel over branches in git, (Engelstalig, 2015)

Branch commando’s

git branch = toon branches = git branch --list = toon branches
git branch -v = toon laatste commit messages
git branch Testing = maak nieuwe branch met naam “Testing”
git checkout Testing = overschakelen naar branch
git merge bugfix = merge bugfix in huidige branch (vorige checkout branch, hier dus Testing)
git branch -d bugfix = verwijder branch (gaat niet? checked out?)

Branch, merge
Veelgebruikte struktuur van vertakkingen:

Master branch (-> production server)
Develop branch (-> staging server)

  • Feature branch
  • Hotfix branch
  • Release branch
  • Support branch

Git Branching and merging strategies beschrijft het zo:

Master – Test – Develop

Uit Master wordt initieel test gemaakt, uit test develop, en uit develop de feature branches.

Master - Test - Develop -- Feature-1
                        -- Feature-2

(

De Develop stage krijgt updates uit de feature branch die gewijzigd is;

.. Develop <-- Feature-1
           <-- Feature-2

De feature branches houden zich up to date door de wijzigingen uit de develop regelmatig af te halen (rebase). Hoe beter ze onderling op de hoogte blijven van de ontwikkeling, hoe minder conflicten later.

.. Develop --> Feature-1
           --> Feature-2

En alles van develop gaat uiteindelijk naar boven naar test, dan naar Master.

Vanuit Master wordt een Release 1.0 branch gemaakt.
Later vanuit Master een Release 2.0 branch.

De bugs die ontdekt worden in de Release branches, kunnen gepatcht worden (éérst op eerste versie waar die voorkomt)
bv comit op Release 1 –
van daaruit Merge naar Release 2
van daaruit Merge naar Develop (waarna het met rebase bij de feature branches komt, en waar het klaar zit voor de volgende release naar boven)

Overzicht van bestaande branches:

git branch --list

bugfix
* master
testing

Verschillende commits:

  • Merge
  • Fast-Forward
  • Rebase

Branch namen

Vb van een prefix die onderscheidend werkt:

feat-shortname bv: feat-stocklist
fix-shortname bv: fix-bugitem1234
hot-shortname bv: hot-fixCrashStartWithoutDb
rel-shortname bv: rel-v1-2
try-shortname bv: try-stocklistlocalcache

Branch lokaal-remote

Een lokaal gemaakte branch kan nadien gewoon naar de server gestuurd worden:

git push origin feat-1

Voorbeeld 1 merge (recursive):

master: bestand 1 veranderd; commit
develop: bestand 2 veranderd; commit

git checkout master
git merge testing

Merge made by the ‘recursive’ strategy.
TweedeBestand.txt | 1 +
1 file changed, 1 insertion(+)

Voorbeeld 2 merge (fast-forward):

git checkout master
git checkout -b bugfix

Switched to a new branch ‘bugfix’

Wijzig bestand 2, en …

git commit -a -m "voeg commentaar toe"

[bugfix 02aa0b3] voeg commentaar toe
1 file changed, 1 insertion(+)

git checkout master

Switched to branch ‘master’
Your branch is ahead of ‘origin/master’ by 3 commits.
(use “git push” to publish your local commits)

git merge bugfix

Updating feb4282..02aa0b3
Fast-forward
TweedeBestand.txt | 1 +
1 file changed, 1 insertion(+)


Voorbeeld 3: opkuisen na merge

Daarna mag de tak van de bugfix weg:

git branch -d bugfix

Deleted branch bugfix (was 02aa0b3).

Als hij nog aktief staat krijg je een fout:

error: Cannot delete branch ‘bugfix’ checked out at ‘/home/..

Voorbeeld 4 merge (rebase)

branch master, test, feat-1, feat-2

wijzigingen feat-1, commit
wijzigingen feat-2, commit

git checkout test
git status

git merge feat-1

Updating f276191..804f3c6
Fast-forward
Project/.src/Filename.class | 12 +++++++++++-
… (bestanden en wijzigingen)
12 files changed, 291 insertions(+), 37 deletions(-)
create mode 100644 Project/.src/FGetText.class
create mode 100644 Project/.src/FGetText.form

git merge feat-2

Auto-merging Project/Changes.txt
Auto-merging Project/.src/MForm.module
Auto-merging Project/.src/FMain.class
Merge made by the ‘recursive’ strategy.
Project/.src/FMain.class | 2 +-
Project/.src/MForm.module | 1 +
… (bestanden en wijzigingen)
7 files changed, 646 insertions(+), 1 deletion(-)
create mode 100644 Project/.src/Class/CIntWeek.class
create mode 100644 Project/.src/Forms/FInterim.class

Om in mijn feat-1 alle wijzigingen van test al mee te krijgen:

git checkout feat-1
git rebase test

(alhoewel niet iedereen voorstander is van rebase gebruik, zie ook fetch/merge, pull)

Merge Error 1

Fout op 1 bestand dat lokaal veranderd is, maar enkel een .settings bestand is dat mag overschreven worden:

git reset --hard
Daarna terug de merge.

Merge Error 2

git checkout test
git merge feat-1

Auto-merging Proj/Changes.txt
CONFLICT (content): Merge conflict in Proj/Changes.txt
Automatic merge failed; fix conflicts and then commit the result.

git status

On branch test
You have unmerged paths.
(fix conflicts and run “git commit”)
(use “git merge –abort” to abort the merge)

Changes to be committed:

modified: Proj/.src/ProjForms/FInterim.class
modified: Proj/.src/ProjForms/FInterim.form

Unmerged paths:
(use “git add …” to mark resolution)

both modified: Proj/Changes.txt

Inderdaad, de Changes.txt file is gewijzigd in beide takken. Als je het bestand in de huidig aktieve branch (de merge branch Test in dit geval) opent, zal je aanduidingen zien van de overlapping:

0.1.2 
...
< <<<<<< HEAD

FFactoring:
0.1.2 
=======
>>>>>>> feat-interim

HEAD : geeft de “hoofd”-branch aan, waar naartoe gemerged wordt, waarna die tekstversie
====== : geeft de scheiding aan naar het begin van de ingevoegde (feature-,..) branch en de bijhorende tekstversie
Ook de ingevoegde branch naam staat er achter.

Maak van de tekst de versie die het uiteindelijk moet worden, combineer beide stukken of gooi wat weg.
Stage de veranderingen met git add .
Commit de veranderingen met git commit -m "Resolve merge conflict by combining and ordening changes.txt"

Probeer daarna opnieuw een merge.

3/9/2018

Docker hierarchie enz

Filed under: — cybrarian @ 1:09 pm

Hierarchie

concept:

Stack
Services
Container

container directory/files:

directory/dockerfile
directory/app.py
directory/requirements.txt

Woordenlijst

dockerfile : definiëert de container

Python

Docker lijkt sterk gebruik te maken van Python (zie ook installatie)

Docker in Yast

Filed under: — cybrarian @ 12:46 pm

Installeren:
– Yast, Softwarebeheer, zoek docker
– docker, docker-bash-completion, docker-libnetwork, docker-runc, docker-zhs-completion, ruby2.1-rubygem-docker-api, yast2-docker, zypper-docker (docker-compose)
– installeer.

Controleren:

Yast Control Center, Virtualisatie, Docker.

Start de module met venster YaST2 – docker @ host.loc

Twee tabbladen: Images en Containers.

Containers toont de “running docker containers”

Na het starten van het “Hello World” voorbeeld (zie commando’s), wordt in tabblad [Images] zichtbaar:

hello-world latest sh256:2cb0d 2018-07-11T00:32:08+00:00 1.80 KiB

Docker commando’s

Filed under: — cybrarian @ 12:38 pm

Docker
(voorbeelden op OpenSUSE, volg de gids op docs.docker.com)

Docker installeren:
zypper install docker docker-compose

Docker starten
systemctl start docker

Docker stoppen
systemctl stop docker

Docker automatisch laten starten:
sudo systemctl enable docker

Docker groep vervoegen:
sudo usermod -G docker -a GEBRUIKERSNAAM

Versie van Docker:
host:/home/gebruikersnaam # docker --version

Docker version 17.09.1-ce, build f4ffd2511ce9

Aktieve containers:
host:/home/gebruikersnaam # docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

(niets in gebruik hier)

Meer info:
host:/home/gebruikersnaam # docker info

Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 17.09.1-ce
Storage Driver: btrfs
Build Version: Btrfs v4.5.3+20160729
Library Version: 101
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc oci
Default Runtime: runc
….

Hallo Wereld!
docker run hello-world

Unable to find image ‘hello-world:latest’ locally
latest: Pulling from library/hello-world
9db2ca6ccae0: Pull complete
Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the “hello-world” image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

# docker image ls

REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 2cb0d9787c4d 7 weeks ago 1.85kB

# docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

# docker image ls --all

REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 2cb0d9787c4d 7 weeks ago 1.85kB

# docker image ls -aq

2cb0d9787c4d

(q = quite mode)

10/7/2018

Raspbian voor Raspberry Pi

Filed under: — cybrarian @ 1:43 pm

Systeemsoftware afhalen (image).
Als startend systeem op sd kaar zetten

Download
De laatste versie van Raspbian kan je hier afhalen:

Raspbian

Uitpakken
In je bestandbeheerder of op de commandolijn.

Schrijven
Op Linux kan je met dd de uitgepakte image naar de sd kaart schrijven, open een terminal.
Wees voorzichtig met het exact opgeven van de doel-drive waarnaar je schrijft, je kan per vergissing je eigen systeemschijf opgeven als doel!
Check voor je de kaart in de sd drive steekt:

~> lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 489,1G 0 disk
├─sda1 8:1 0 399M 0 part /boot
└─sda2 8:2 0 488,7G 0 part
└─cr_ata-Crucial_CT525MX300SSD1_1730181A3D36-part2 254:0 0 488,7G 0 crypt
├─system-swap 254:1 0 2G 0 lvm [SWAP]
├─system-root 254:2 0 40G 0 lvm /var/opt
└─system-home 254:3 0 100G 0 lvm /home
sr0 11:0 1 1024M 0 rom

Steek de kaart in de sd drive en check opnieuw:

~> lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 489,1G 0 disk
├─sda1 8:1 0 399M 0 part /boot
└─sda2 8:2 0 488,7G 0 part
└─cr_ata-Crucial_CT525MX300SSD1_1730181A3D36-part2 254:0 0 488,7G 0 crypt
├─system-swap 254:1 0 2G 0 lvm [SWAP]
├─system-root 254:2 0 40G 0 lvm /var/opt
└─system-home 254:3 0 100G 0 lvm /home
sr0 11:0 1 1024M 0 rom
mmcblk0 179:0 0 14,5G 0 disk
├─mmcblk0p1 179:1 0 1,1G 0 part
├─mmcblk0p2 179:2 0 1K 0 part
├─mmcblk0p5 179:5 0 32M 0 part
├─mmcblk0p6 179:6 0 66M 0 part
└─mmcblk0p7 179:7 0 12,8G 0 part

In dit geval is mmcblk0 dus het doel.

Commando: (gebruik de naam van je image)

sudo dd bs=4M if=2018-06-27-raspbian-stretch.img of=/dev/mmcblk0 conv=fsync

Na een tiental minuutjes:
(je kan de diskmonitor op je desktop in het oog houden om te weten wanneer de operatie gedaan is)

sudo dd bs=4M if=2018-06-27-raspbian-stretch.img of=/dev/mmcblk0 conv=fsync
1150+0 records gelezen
1150+0 records geschreven
4823449600 bytes (4,8 GB, 4,5 GiB) copied, 1113,16 s, 4,3 MB/s

Als je de Raspberry Pi start komt er een melding van het aanpassen van iets van het systeem, als ik het goed begrepen heb is dat het gebruiken van de hele SD kaart.

Daarna krijg ik een welkom scherm maar ik beland wel op de commandolijn.
Ik tik startx om een grafische sessie te starten, en dan komt er weer een welkom

Before you start using it, there are a few things to set up.
Press Next to get started.

Country: Belgium
(Language en Timezone staan goed)

Daarna herstart de Pi en komt wel in het grafisch systeem op.

In het menu kan je configureren:

Systeem:
– Hostname : …
– opstarten naar buroblad of CLI (commandolijn)
– Autologin als gebruiker Pi
– …

Interfaces:
– Camera aan
– ssh aan.
– … aan/af

De hostname staat in /etc/hostname
Het ip address in /etc/dhcpcd.conf

bv: haal # weg aan begin van de lijn om te aktiveren, en pas aan je eigen adressen aan:

interface eth0
static ip_address=192.168.1.10/24

reboot
ifconfig

9/7/2018

Raspbian upgraden

Filed under: — cybrarian @ 1:16 pm

Van 8 (Jessie) naar 9 (Stretch)?

Raspberry Pi wordt standaard uitgeleverd met Raspbian (in noobs). De versie van een Raspberry Pi Model B zou kunnen zijn:

cat /etc/issue

Raspbian GNU/Linux 8

uname -a

Linux ras001 4.9.35-v7+ #1014 SMP

eenzelfde bord, later geinstalleerd:

Raspbian GNU/Linux 9
(4.14.34-v7+ #1110 SMP)

Hoe krijg je nu de eerste op het niveau van de te tweede?

1. Een nieuw systeem afhalen (heb je waarschijnlijk van die 2e) en installeren
https://www.raspberrypi.org/downloads/
2. De eerste upgraden.

Voor beide mogelijkheden geldt natuurlijk: maak eerst een backup.

Upgrade van 8
Volgens de handleiding op raspberrypi.org:

sudo apt-get update

sudo apt-get dist-upgrade

Zo’n upgrade kan wel wat extra ruimte in beslag nemen, en niet elke SD kaart is daar groot genoeg voor.

Een SD kaart van 16 Gb zou er geen probleem mee mogen hebben, die begon met 38% vol en liep tot 41% tijdens/na de installatie.


Starten in het nieuwe systeem

Na installatie herstart (commando “reboot“) geeft het upgedate systeem een melding op de desktop, in een venster met titel “Information”:

Your Raspbian system has been upgraded to the latest version.

To ensure compatibility with the new version, some configuration files have been overwritten-if you had customised your system, some of the changes may have been lost.

Your original configuration files have been backed up and put in the directory /home/pi/oldconfigfiles.

Ik draai nog sudo apt-get autoremove, wat 94 Mb zou vrijmaken.

Niet tot 9?
De desktop is terug de standaard Pixel desktopachtergrond.
Wat niet veranderd is:
– iconen en links op de desktop
– hostname
– het ip-adres
– eigenaardig genoeg is ook /etc/issue en /etc/debian_version blijven staan op 8
– ook de kernel is hetzelfde gebleven?

Met deze stappen doe je dus geen update van 8 naar 9!

Van Jessie naar Stretch

Om van versie jessie naar stretch te gaan is meer nodig, en het is ook niet gegarandeerd dat het lukt.**

Daarvoor moet je twee configuratiebestanden van de updater aanpassen (met root rechten), ik gebruikte daarvoor mcedit omdat ik die geïnstalleerd heb staan.

In het bestand /etc/apt/sources.list vervang je jessie door strech:

deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi
#deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi

In het bestand /etc/apt/sources.list.d/raspi.list vervang je ook jessie door stretch:

deb http://archive.raspberrypi.org/debian/ stretch main ui
#deb http://archive.raspberrypi.org/debian/ jessie main ui

Daarna weer:
sudo apt-get update
sudo apt-get -y dist-upgrade

Het eerste gaat snel, het tweede duurt wel even (11:00-..)
De -y antwoordt automatisch “y” op licentievragen en zo.

Je komt wel in een aantal schermen met allerlei informatie over gevolgen van wijzigingen ivm cron jobs, ssh verbindingen enz.
Tik q om er uit te geraken, of maak een keuze waar gevraagd (meer details zie log onderaan).

Om plaast vrij te maken ongebruikte audio eruit met:

sudo apt-get -y purge "pulseaudio*"

reboot

** ps: bij mij is het trouwens niet gelukt, zie log onderaan.

Nog een (Engelstalige) uitleg over de upgrade ivm toepassingen als de database:
https://linuxconfig.org/how-to-upgrade-debian-8-jessie-to-debian-9-stretch

(meer…)

25/6/2018

Raspberry Pi toepassing: Afsluiten met icoon op desktop

Filed under: — cybrarian @ 3:38 pm

Op de desktop een link maken om de Raspberry Pi af te sluiten.
(Dit is bv bedoeld voor een toestel dat een bepaalde functie heeft, en waar de gebruikers geneigd zouden kunnen zijn de “stekker uit te trekken”. De Pi kan daar niet zo goed tegen, en vooral de SD kaart met het systeem niet).

Shell script
Eerst maak je een shell script dat de Raspberry Pi afsluit als je het uitvoert; het bevat hetzelfde commando dat we geven op de commandolijn:

sudo shutdown -h now

Bewaar het met de naam Shutdown.sh
Maak het uitvoerbaar met

chmod +x Shutdown.sh

Desktop
Dan de link op de desktop. Ik heb in Raspbian geen manier gevonden zoals in KDE om met rechtsklik een nieuwe link te maken, maar manueel komt het erop neer dat je een tekstbestand maakt (zonder extentie mag) dat je op de desktop zet:

touch Afsluiten

Dan zet je volgende tekst erin:

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Uitschakelen
Comment=Veilig-Uitschakelen
Icon=/usr/share/icons/Adwaita/64x64/actions/system-shutdown-symbolic.symbolic.png
Exec=/home/pi/bin/Shutdown.sh
Terminal=false
Categories=None;

Als je nu op dat uitschakelsymbool klikt, sluit de Raspberry Pi af.

Raspberry Pi te licht beeld op scherm

Filed under: — cybrarian @ 1:14 pm

Het scherm geeft te veel licht af en daardoor zijn fijne lijnen niet zichtbaar, scherm ziet er in het geheel overbelicht uit.

Is niet op elk scherm even erg, deze omstandigheden: Pi HDMI naar VGA kabel (oude VGA-aansluiting dell 17″ monitor).

Een gelijkaardig fenomeen wordt gemeld op een Pi forum:
HDMI washed out / too bright

En als je verderleest en de links volgt, kom je tot een mogelijke oplossing. Blijkbaar zijn er instellingen mogelijk in een bestand
/boot/config.txt volgens de documentatie
config.txt, die verhuisd is naar hier:
https://www.raspberrypi.org/documentation/configuration/config-txt/README.md.

Een forumgebruiker vermeldt het toevoegen van:
hdmi_pixel_encoding=2

Er zijn heel wat waarden om mee te spelen, alles hangt af van je scherm natuurlijk.

Ik gebruik uiteindelijk toch de instellingen zoals ik ze voorheen had, en probeer in mijn programma’s de achtergrond donkerder te maken.

22/6/2018

Tumbleweed update

Filed under: — cybrarian @ 9:06 pm

(teruggevonden artikel, datum kwijt *)

Er was deze week (*) een opvallend grote Tumbleweed update, met niet enkel een nieuwe kernel (kernel-default-4.15.5-1.2), maar ook ander paketten als LibreOffice, geluidssysteem, enz. ; in totaal 153 packages.

Dit gebeurde in de gewone update met “zypper up“.
Zypper is de commandolijntool die gebruikt wordt in openSUSE, ongeveer zoals debian gebruikers apt gebruiken.

Tumbleweed is de “rolling release” distributie van openSUSE. Bij een rolling release evolueert het systeem constant in plaats van met afgelijnde versienummers te werken.

ps:
De installatie eindigde bij mij met Failed to cache rpm database (1).

Op een forum post van opensuse.org wordt aangeraden om :
rpm --rebuilddb
te doen. Dat eindigt zonder foutmelding (trouwens helemaal zonder melding, maar dat betekent meestal dat het gelukt is).

Een daaropvolgende zypper up geeft “Nothing to do”.

Op lwn.net/Articles/717489/ wordt trouwens beschreven dat er omstandigheden zijn waarin je beter een ander commando gebruikt voor het updaten:
zypper dup --no-allow-vendor-change

Dit zou iets beter overweg kunnen met het opruimen van oude rommel, maar toch niet zo drastisch zijn als een gewone dup, die “distribution update” betekent. Distribution update is meer dan een gewone “update” van bestaande dingen. Distribution update schakelt over naar nieuwere versies, en is een beetje meer avontuurlijk, wat soms voor verrassing leidt bij het opstarten de volgende keer. In het slechtste geval moet je wat terugdraaien.

Uiteindelijk gaf de update wat recentere paketten tov de huidige Leap 42.3 versies:
– kernel-4.15.5 (tov 4.4 in Leap),
– LibreOffice 5.4.1.2 (tov 5.3.5.2 in Leap maar ook 5.4.5.1 mogelijk),
– Firefox 58.0.2 (tov 52.5.3 in Leap)

18/6/2018

Datum en tijd voor Raspberry Pi

Filed under: — cybrarian @ 10:11 am

De Raspberry Pi heeft GEEN real-time clock. Dat betekent dat hij bij het opstarten geen idee heeft van datum of tijd.

  • Je kan de datum/tijd zelf instellen na opstarten
  • Als er een (internet) netwerkverbinding is kan hij van een “timeserver” die gegevens ophalen.
  • Je maakt applicaties waarbij de datum/tijd geen rol speelt.

Database
Als je niet aan internet of een interne timeserver kan, maar wel aan een database:

mysql>
SELECT NOW()
Number of Records: 1
2018-06-18 09:15:58

Dus als je een datum-tijd wil voor gebruik als sorteerwaarde:

SELECT DATE_FORMAT(NOW(), "%Y%m%d-%H%i" AS mijndatumtijd)

Dan krijg je als antwoord in mijndatumtijd bv:

20180617-1300

17/6/2018

Raspberry Pi camerabeeld uploaden

Filed under: — cybrarian @ 11:04 pm

Een uitleg die alles combineert wat je nodig hebt:

https://www.newth.net/mars/how-to-set-up-a-raspberry-pi-zero-to-upload-images-to-a-server-via-ftp/

samengevat:

  • Foto maken:
    raspistill -o /home/pi/mijnfoto.jpg
    of
    raspistill -o /home/pi/mijnfoto.jpg --annotate 12
    de annotate voegt datum/tijd informatie toe aan bestandsnaam *(1)
  • Met ftp naar een server sturen:
    curl -T /home/pi/mijnfoto.jpg ftp://ftp-host-machine//yourwebsite/folder/mijnfoto.jpg --user yourftpusername:yourpasswd
  • (aanpassen om naam met datum te ftp’en)

* 1) Meer over annotate: rapsberrypi.org forum

31/5/2018

Upgrade, KWallet

Filed under: — cybrarian @ 11:24 am

Bij een upgrade naar een andere computer kan je proberen zoveel mogelijk gebruikers (desktop) informatie mee te nemen, een lijstje:
– kde: desktopinstellingen (tijd, taal, standaardformaat papier A4/A3, ..)
– kmail: mail mappen, mails, attachments, accountgegevens, filters, adressen, …
– kwallet: wachtwoorden
– firefox: bookmarks, wachtwoorden

Kmail
– Heeft Export functie, maar die werkte niet wat betreft mailmappen (kwamen niet door) en de mail zelf (omdat die waarschijnlijk te groot was, 20 GB of zo.)
– mails zelf zitten in …
– configuratiebestanden: …
– wachtwoorden: normaal via kwallet.

KWallet
Heeft export functie (je kan ook gewoon slepen naar een usb stick of netwerkdrive).
Er is een versleutelde export om een backup te houden op bv usbstick.
Je kan in het kwallet beheer ook de inhoud gaan bekijken, met “Show values” kan je zo een bepaalde waarde gaan opzoeken als je die nodig hebt.

29/5/2018

Voeding voor Raspberry Pi

Filed under: — cybrarian @ 8:47 pm

Micro-USB
Voeding voor de Raspberry Pi komt normaal via de micro-usb aansluiting. Een typische laadkabel voor smartphones en andere gadgets kan daarvoor gebruikt worden, mits het vermogen groot genoeg is.

Voeding
Voor inbouw wil je een inbouwvouding of railmodel gebruiken.
Daar heb je enkel een draadaansluiting, zowel in als uit.

In:
L: Line, of fasedraad (bruin)
N: Neutraal of nuldraad (blauw)

Uit: 5V
+

Voeding naar Micro-usb
als je de + en – 5V uitgang van een voeding wil leiden naar de micro-usb ingang, moet je volgende kleuren van de usb-kabel aansluiten:

rood = +5 V (usb pin 1)
zwart = – GND (usb pin 4)

ps:
groen = data+ (usb pin 3)
wit = data- (usb pin 2)

Ik heb gemerkt dat met een 5-Volt voeding met fijnregeling ik een melding van zwakke voeding kreeg op Raspberry Pi (bliksem-icoon rechtsboven in beeld), tot ik het voltage bijregelde tot ongeveer 5,.6 Volt.

GPIO
Het is ook mogelijk rechstreeks voeding te geven op bepaalde pinnen: (bv Pi2 GPIO 2 en 6). Dan heb je niet het beschermcircuit van de USB aansluiting.

(meer achtergrond op deze Stackexchange

26/5/2018

KMail: menu kwijt

Filed under: — cybrarian @ 1:10 pm

Na wat knoeien met een migratie van openSUSE 13.1 naar Leap 42.3 heb ik KMail blijkbaar kapot gekregen.

Een export vanuit de bestaande kmail (KMail: Identity + mails + mail transport + resources + config + akonadi Db en KAddressBook: Resources + config) zou te groot geweest zijn voor de vrije ruimte op die pc. Dus de mail rechtstreeks gekopeerd (/home/gebruiker/.local/share/local-mail); er komen dan telkens meldingen van nieuwe mail in kde, en de mail komt in kmail. Maar helaas was de mappenstructuur nog niet geïmporteerd, en dus was een deel van de mail er niet. Bovendien zijn bij een import oorspronkelijke instellingen van de het mailprogramma op de bestemmingspc overschreven. Ik heb een kopie gemaakt van kmail2rc, maar mogelijk was het al te laat.

Menu verdwenen
Bij het opstarten krijg ik de menu’s niet meer te zien, en ik vind ook nergens hoe ik ze kan terugkrijgen. Met de alt-toets krijg je ook geen menu te zien.

kmail2rc
configuratiebestand bekeken:
cat ./.config/kmail2rc
Het bevat ondermeer de lijn met MenuBar:

[Main Window]
Height 1024=1004
Height 1050=1030
MenuBar=Disabled

Die heb ik verwijderd, maar loste het nog niet op.

Een andere lijn verwijst naar het menu:

[General]
ShowMenuBar=false
first-start=false

Ook verwijderd. (of eerder true in gezet)

Powered by WordPress