Table des matières
- 2026:
- 2025:
4 billet(s) pour juillet 2026
| Procédure simple augmentation de la SWAP | 2026/07/17 15:49 | Jean-Baptiste |
| Exemple git clone avec Ansible | 2026/07/16 14:47 | Jean-Baptiste |
| Windows exe - Comparaison de fichiers binaires | 2026/07/16 10:25 | Jean-Baptiste |
| Pb git | 2026/07/01 17:36 | Jean-Baptiste |
Note commande unzip zip
unzip
$ unzip -l plop.zip
Archive: plop.zip
Length Date Time Name
--------- ---------- ----- ----
39 2015-01-22 17:27 mimetype
273 2015-01-22 17:27 layout-cache
921513 2015-01-22 17:27 ObjectReplacements/Obj101
921513 2015-01-22 17:27 ObjectReplacements/Obj100
10265 2015-01-22 17:27 ObjectReplacements/Object 1
1655 2015-01-22 17:27 meta.xml
233249 2015-01-22 17:27 content.xml
931840 2015-01-22 17:27 Obj100
135587 2015-01-22 17:27 styles.xml
899 2015-01-22 17:27 manifest.rdf
10111 2015-01-22 17:27 settings.xml
0 2015-01-22 17:27 Configurations2/toolpanel/
0 2015-01-22 17:27 Configurations2/statusbar/
0 2015-01-22 17:27 Configurations2/popupmenu/
0 2015-01-22 17:27 Configurations2/images/Bitmaps/
0 2015-01-22 17:27 Configurations2/toolbar/
0 2015-01-22 17:27 Configurations2/progressbar/
0 2015-01-22 17:27 Configurations2/floater/
0 2015-01-22 17:27 Configurations2/accelerator/current.xml
0 2015-01-22 17:27 Configurations2/menubar/
931840 2015-01-22 17:27 Obj101
3765 2015-01-22 17:27 Thumbnails/thumbnail.png
0 2015-01-22 17:27 Object 1/Configurations2/menubar/
0 2015-01-22 17:27 Object 1/Configurations2/statusbar/
0 2015-01-22 17:27 Object 1/Configurations2/toolbar/
0 2015-01-22 17:27 Object 1/Configurations2/progressbar/
0 2015-01-22 17:27 Object 1/Configurations2/images/Bitmaps/
0 2015-01-22 17:27 Object 1/Configurations2/popupmenu/
0 2015-01-22 17:27 Object 1/Configurations2/accelerator/current.xml
0 2015-01-22 17:27 Object 1/Configurations2/floater/
0 2015-01-22 17:27 Object 1/Configurations2/toolpanel/
3711 2015-01-22 17:27 Object 1/settings.xml
10400 2015-01-22 17:27 Object 1/content.xml
7579 2015-01-22 17:27 Object 1/styles.xml
2455 2015-01-22 17:27 META-INF/manifest.xml
--------- -------
4126694 35 files
$ unzip -Z1 plop.zip mimetype layout-cache ObjectReplacements/Obj101 ObjectReplacements/Obj100 ObjectReplacements/Object 1 meta.xml content.xml Obj100 styles.xml manifest.rdf settings.xml Configurations2/toolpanel/ Configurations2/statusbar/ Configurations2/popupmenu/ Configurations2/images/Bitmaps/ Configurations2/toolbar/ Configurations2/progressbar/ Configurations2/floater/ Configurations2/accelerator/current.xml Configurations2/menubar/ Obj101 Thumbnails/thumbnail.png Object 1/Configurations2/menubar/ Object 1/Configurations2/statusbar/ Object 1/Configurations2/toolbar/ Object 1/Configurations2/progressbar/ Object 1/Configurations2/images/Bitmaps/ Object 1/Configurations2/popupmenu/ Object 1/Configurations2/accelerator/current.xml Object 1/Configurations2/floater/ Object 1/Configurations2/toolpanel/ Object 1/settings.xml Object 1/content.xml Object 1/styles.xml META-INF/manifest.xml
Vérifier l'intégrité
unzip -t plop.zip unzip -qt plop.zip
Décompression
unzip plop.zip
zip
Créer une archive / compresser un dossier
zip -r plop.zip dir1/ dir2/
Comparaison /diff
zipcmp file1.zip file2.zip
pkgdiff -hide-unchanged file1.zip file2.zip
psh Perl Shell
Une shell interactif pour Perl REPL (Read-Eval-Print-Loop)
perl -MCPAN -e 'install BSD::Resource' export PERL5LIB=~/perl5/lib/perl5/ git clone https://github.com/gnp/psh cd psh perl Makefile.PL make make install ~/perl5/bin/psh
ou encore
perl -de0
Un MakeFile pour rpmbuild
Voir aussi :
- Python invoke https://www.pyinvoke.org/
- o-task https://taskfile.dev/
- Make.rules
Makefile
clean: SHELL:=/bin/bash build: SHELL:=/bin/bash FicSpec = $(shell echo *.spec) RpmName = $(shell grep -e '^%define name' $(FicSpec) | awk '{print $$3}') RpmVersion = $(shell grep -e '^%define version' $(FicSpec) | awk '{print $$3}') RpmRelease = $(shell grep -e '^%define release' $(FicSpec) | awk '{print $$3}') StringRpmFullname = $(RpmName)-$(RpmVersion)-$(RpmRelease).$(shell uname -m) all: build clean clean: rm -rf $$HOME/rpmbuild cleanall: clean rm -f *.rpm copy: cleanall mkdir -p $$HOME/rpmbuild/{BUILDROOT,SPECS} mkdir -p $$HOME/rpmbuild/BUILDROOT/$(StringRpmFullname) cp -a ROOT/* $$HOME/rpmbuild/BUILDROOT/$(StringRpmFullname) cp -p $(FicSpec) ~/rpmbuild/SPECS/ build: copy rpmbuild -bb ~/rpmbuild/SPECS/*.spec mv ~/rpmbuild/RPMS/*/*.rpm .
Le clean se fait bien avant, mais pas après le build.
C'est comme si :
all: build clean
Etait
all: build
Solution :
Makefile
clean: SHELL:=/bin/bash build: SHELL:=/bin/bash FicSpec = $(shell echo *.spec) RpmName = $(shell grep -e '^%define name' $(FicSpec) | awk '{print $$3}') RpmVersion = $(shell grep -e '^%define version' $(FicSpec) | awk '{print $$3}') RpmRelease = $(shell grep -e '^%define release' $(FicSpec) | awk '{print $$3}') StringRpmFullname = $(RpmName)-$(RpmVersion)-$(RpmRelease).$(shell uname -m) all: build cleanagain clean: rm -rf $$HOME/rpmbuild cleanall: clean rm -f *.rpm cleanagain: ${MAKE} clean copy: cleanall mkdir -p $$HOME/rpmbuild/{BUILDROOT,SPECS} mkdir -p $$HOME/rpmbuild/BUILDROOT/$(StringRpmFullname) cp -a ROOT/* $$HOME/rpmbuild/BUILDROOT/$(StringRpmFullname) cp -p $(FicSpec) ~/rpmbuild/SPECS/ build: copy rpmbuild -bb ~/rpmbuild/SPECS/*.spec mv ~/rpmbuild/RPMS/*/*.rpm .
Exemple avec le paquet Python mycli
mkdir -p ~/rpm/ROOT cd ~/rpm
Déposez le Makefile dans ~/rpm/
~/rpm/mycli.spec
%define name mycli
%define version 1.21.1
%define release 1
%define debug_package %{nil}
Summary: CLI for MySQL/MariaDB
Name: %{name}
Version: %{version}
Release: %{release}
Vendor: NC
Group: Database
License: MIT License
URL: https://www.mycli.net
Source0: https://github.com/dbcli/mycli
BuildRequires: rpm-build
Requires: python38
#BuildArch: noarch
%description
This is a command line interface for MySQL, MariaDB, and Percona with
auto-completion and syntax highlighting. The CLI is also capable of pretty
printing tabular data.
#%post
#set -e
%doc
#%changelog
%files
%defattr(755,root,root,644)
export http_proxy=http://127.0.0.1:3128 export https_proxy=http://127.0.0.1:3128 pip3 install --user mycli mkdir -p ~/rpm/ROOT/opt/mycli cp -a ~/.local/* ~/rpm/ROOT/opt/mycli/ mkdir -p ~/rpm/ROOT/usr/local/bin/ find /home/etudes/rpm/ROOT/ -type f -name "*.pyc" -delete
~/rpm/ROOT/usr/local/bin/mycli
#!/bin/sh env PYTHONPATH=/opt/mycli/lib/python3.8/site-packages/ /opt/mycli/bin/mycli "$@"
cd ~/rpm/ROOT find . -type f | sed -e 's/^\.//' >> ../mycli.spec cd ~/rpm/ make
Pb
did you mean TAB instead of 8 spaces?
$ make Makefile:18: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.
Solution
sed -i.bak -e 's/^[ ]\+/\t/g' Makefile
Umask par defaut - Droits des fichiers par defaut
Pour Debian Jessie
Voir :
Voir aussi :
/etc/login.defs
#UMASK 022 UMASK 027
/etc/pam.d/common-session
session optional pam_umask.so
Infos
umask 27 umask -S
Source : http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html
| umask | Niveau de sécurité | Permission effectives (sur les dossiers) |
|---|---|---|
| 022 | Permissif | 755 |
| 026 | Modéré | 751 |
| 027 | Modéré | 750 |
| 077 | Sévère | 700 |
Changer le umask par défaut d'un utilisateur
Voir http://stackoverflow.com/questions/10220531/how-to-set-system-wide-umask
Il est possible d'utiliser
- le champ GECOS de /etc/passwd
- de modifier le fichier .profile, .barshrc etc… de l'utilisateur
- d'utiliser pam
Champ GECOS de /etc/passwd
#chfn --other='umask=002' username chfn -o 'umask=0002' username
NOTE : A tester en console tty & xterm, et aussi en scp, sftp.
Changer le umask pour un service Systemd
/etc/systemd/system/plop.service
[Service] UMask=006
/etc/systemd/system/httpd.service
.include /lib/systemd/system/httpd.service [Service] UMask = 0002
Autres
Exemple
source /var/lib/awx/venv/ansible/bin/activate umask 0022 pip install --upgrade pywinrm deactivate
