{"id":20134517,"url":"https://github.com/gnebbia/wine_appunti","last_synced_at":"2026-02-01T12:39:53.161Z","repository":{"id":129500440,"uuid":"143430498","full_name":"gnebbia/wine_appunti","owner":"gnebbia","description":"Qualche appunto su Wine","archived":false,"fork":false,"pushed_at":"2018-08-03T13:27:57.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-21T10:02:18.791Z","etag":null,"topics":["appunti","guida","notes","tutorial","wine","winehq","winetricks"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gnebbia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-03T13:25:40.000Z","updated_at":"2018-08-19T23:55:11.000Z","dependencies_parsed_at":"2023-04-14T09:03:12.166Z","dependency_job_id":null,"html_url":"https://github.com/gnebbia/wine_appunti","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gnebbia/wine_appunti","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnebbia%2Fwine_appunti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnebbia%2Fwine_appunti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnebbia%2Fwine_appunti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnebbia%2Fwine_appunti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gnebbia","download_url":"https://codeload.github.com/gnebbia/wine_appunti/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnebbia%2Fwine_appunti/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28978179,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T12:13:08.691Z","status":"ssl_error","status_checked_at":"2026-02-01T12:13:08.356Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appunti","guida","notes","tutorial","wine","winehq","winetricks"],"created_at":"2024-11-13T21:09:47.731Z","updated_at":"2026-02-01T12:39:53.145Z","avatar_url":"https://github.com/gnebbia.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wine Appunti\n\n## Introduzione\n\nWine è un software che fornisce un layer di compatibilità per i \nprogrammi Windows per diversi sistemi *NIX, questo ci permette di \navere prestazioni analoghe a quelle di un sistema Windows. \nQuesto software ci da la possibilità di creare infiniti ambienti Windows, \nognuno con la propria configurazione, ogni ambiente windows è chiamato nel \ngergo wine \"wine prefix\" o \"wine bottle\", nella prossima sezione \nvedremo come creare quindi un ambiente Windows e come \nconfigurarlo, una volta fatto, ci basterà solo installare \nl'applicazione desiderata, starà a noi poi decidere se \ncondividere la \"wine bottle\" tra più programmi oppure se usare \nuna wine bottle per ogni applicazione installata. \nUna wine bottle occupa approssimativamente 40MB.\n\n\n## Creare un ambiente per un programma Windows\n\nPer creare un ambiente per un programma Windows dobbiamo creare \nun \"wine prefix\" detto anche \"wine bottle\", per farlo eseguiamo i \nseguenti comandi da terminale:\n\n```sh\n export WINEPREFIX=~/.wine-mioProgramma \n # in questo comando definiamo la variabile d'ambiente WINEPREFIX \n # (che è una delle # variabili d'ambiente che usa wine) che imposterà \n # il percorso di wine, d'ora in poi qualsiasi comando lanciato relativo\n # a wine utilizzerà questa directory\n```\n\n```sh\n echo $WINEPREFIX \n # verifichiamo di aver settato bene il wine \n # prefix\n```\n\n```sh\n env WINEPREFIX=~/.wine-mioProgramma wineboot -u\n```\n\nPossiamo anche utilizzare delle alternative grafiche a wineboot, \nche ci permettono anche di configurare già l'ambiente windows \ncreato, questi comandi sono:\n\n```sh\n wine winecfg \n # apre un tool grafico di configurazione per \n # creare un ambiente windows con le impostazioni selezionate\n```\n\nAltre applicazioni utili che possono essere avviate sono:\n\n```sh\n wine control \n # apre il pannello di controllo, facoltativo per \n # la fase di setup\n```\n\n```sh\n wine uninstaller \n # apre il menu di installazione/disinstallazione programmi, \n # facoltativo per la fase di setup\n```\n\n```sh\n wine regedit \n # apre l'editor del registro di sistema, facoltativo per la fase di setup\n```\n\n```sh\n wine iexplore # apre internet explorer\n```\n\n```sh\n wine console # apre una console windows\n```\n\nDi default Wine salva i suoi file di configurazione e i programmi installati\nnella directory ~/.wine. Questa directory e' comunemente chiamata \"Wine Prefix\"\no \"Wine Bottle\" e viene automaticamente creata/aggiornata ogniqualvolta\neseguiamo un programma windows o uno dei tool di configurazione distribuiti con\nWine, come ad esempio `winecfg`.\nUna directory di wine prefix contiene anche una struttura di directory uguale\na quella comunemente presente sui sistemi Windows, quindi possiamo trovare \ninfatti la directory C:, cioe' il cosiddetto \"C drive\".\n\nDi default su un sistema a 64 bit, wine si avvierà in modalità 64 \nbit, possiamo cambiare questo comportamento andando a settare la \nvariabile \"WINEARCH=win32\" in questo modo le applicazioni avviate \nverranno lanciate in modalità di compatibilità 32 bit.\n\nUna volta settato il Wine Prefix possiamo lanciare il nostro \nprogramma windows eseguendo:\n\n```sh\n wine percorso/al/nomeProgramma.exe \n # esegue un programma Windows\n```\noppure:\n\n```sh\n wine c:\\\\myapps\\\\nomeProgramma.exe \n # esegue un programma Windows usando i percorsi in stile Windows\n```\nse questo non dovesse avere successo possiamo eseguire:\n\n```sh\n WINEDEBUG=err+all wine nomeProgramma.exe \n # in questo caso, vediamo tutti gli errori di wine, questo ci permetterà di \n # eseguire un debug e mettere a posto i problemi\n```\n\n```sh\n WINEDEBUG=+loaddll \n # ci permette di capire quali librerie DLL vengono usate e qualora vengano \n # caricate come \"builtin\" o \" native\".\n```\nmolte volte gli errori sono dovuti a dipendenze mancanti, \npossiamo installarle manualmente oppure installare \"winetricks\" \nche ci aiuterà ad installarle, ad esempio se il programma \"\nmio.exe\" da un errore dicendo che la libreria \"mfc42.dll\" è \nmancante, possiamo eseguire:\n\n```sh\n winetricks mfc42 \n # installa la libreria mfc42 nell'ambiente Windows\n```\nPer altri problemi può essere utile anche controllare la versione \ninstallata con:\n\n```sh\n wine --version\n```\n```sh\n winetricks --version\n```\n\nN.B.: Mai e poi mai eseguire wine da utente root\n\n## Variabili d'Ambiente\n\n### La variabile d'ambiente WINEDEBUG\n\nPer rendere più facile le operazioni di troubleshooting\ndei bug, Wine fornisce diversi livelli di verbosita' per i messaggi di debug \nchiamati \"debug channel\".\n\nOgni canale di debug, quando attivato, attiverà la registrazione\ndei messaggi da mostrare alla console in cui wine e' stato invocato.\nAlcuni canali di debug possono generare grossi volumi di log. \nPer filtrare i log generati e' utile controllare la chiave di registro\nchiamata \"RelayExclude\" che gestisce i trace reports.\nrelay trace reports). \nE' da considerare che la registrazione dei messaggi di debug rallenta \nl'esecuzione di Wine, quindi e' consigliabile non utilizzare WINEDEBUG \na meno che non si desideri realmente fare troubleshooting.\n\nAll'interno di ciascun canale di debug, è possibile specificare \nulteriormente una classe di messaggi specifici, per filtrare le \ndiverse gravità di errore. Le quattro classi di messaggi sono:\n\n* trace \n* fixme\n* warn \n* err \n\nPer attivare un canale di debug si utilizza la forma \"class+channel\".\nPer disattivare un canale di debug invece si puo' utilizzare \nla forma \"class-channel\". \nE' possibile anche attivare piu' canali di debug o disattivarne piu'\ndi uno, per fare questo e' sufficiente utilizzare la virgola per dividere\nle opzioni.To list more than one channel in the \nsame WINEDEBUG option, separate them with commas. \nVediamo alcuni esempi di settaggio della variabile WINEDEBUG:\n\n```sh\n WINEDEBUG=warn+heap wine nomeProgramma.exe \n # mostra i messaggi della classe warn, del canale di debug heap\n```\n```sh\n WINEDEBUG=heap wine program_name \n # mostra i messaggi del canale \n # heap, di tutte e quattro le classi\n```\n```sh\n WINEDEBUG=+all,-relay \n # mostra i messaggi di tutti i canali, \n # eccetto il canale \"relay\"\n```\n###  La variabile d'ambiente WINEDLLOVERRIDES\n\nNon è sempre possibile runnare applicazioni con librerie DLL \nbuiltin di wine, a volte semplicemente le librerie native \nfunzionano meglio, queste impostazioni possono essere gestite via \nGUI da \"winecfg\", ma possiamo regolarle anche con la variabile \nd'ambiente \"WINEDLLOVERRIDES\". Vediamo alcuni esempi:\n\n```sh\n WINEDLLOVERRIDES=\"comdlg32,shell32=n,b\" \n # carica le librerie \n # comdlg32 e shell32 come native \"n\", se il caricamento da native \n # dovesse fallire allora le carica come builtin \"b\"\n```\n```sh\n WINEDLLOVERRIDES=\"comdlg32=b,n;shell32=b;comctl32=n;oleaut32=\" \n # carica la libreria comdlg32 prima come builtin e poi come \n # native se il caricamento della builtin fallisce, poi carica la \n # libreria shell32 come builtin, la libreria comctl32 come \n # nativa, e disabilita la libreria oleaut32\n```\n\n###  DLL Overrides\n\nLe librerie DLL vengono comunemente caricate nel seguente ordine:\n\n1. The directory the program was started from.\n2. The current directory.\n3. The Windows system directory.\n4. The Windows directory.\n5. The PATH variable directories. \n \n###  La variabile d'ambiente WINEARCH\n\nLa variabile d'ambiente WINEARCH specifica l'architettura Windows \nda supportare, a volte infatti ci può capitare lanciando un \nprogramma con wine di incappare nell'errore \"Bad Exe Format\", \nquesto molto probabilmente è un problema dovuto al settaggio di \nquesta variabile, di default su un sistema a 64 bit, questa \nvariabile anche se non impostata è di default impostata per \nun'architettura a 64 bit, possiamo cambiarla così:\n\n```sh\n WINEARCH=win32\n```\n```sh\n WINEARCH=win64\n```\nse un ambiente è stato creato con una determinata architettura \nwine si rifiuterà di runnare qualsiasi cosa da quell'ambiente se \ncambiamo architettura.\n\n###  Variabili d'Ambiente Windows/DOS\n\nPossiamo impostare normalmente una variabile d'ambiente da \nGNU/Linux queste verranno importate tutte da Wine nell'ambiente \nWindows, quindi valgono le stesse regole che valgono per le \nvariabili d'ambiente GNU/Linux.\n\n###  Avviare Wine\n\nPossiamo avviare wine in diversi modi, ad esempio:\n\n```sh\n wine nomeProgramma.exe\n```\n```sh\n wineconsole \n # avvia una console di wine (Windows)  \n```\nNota che wineconsole puo' essere avviato in due modalita' diverse:\n\n  * --backend=user \n    # apre un'altra finestra terminale per \n    # wineconsole\n\n  * --backend=curses \n     # apre wineconsole nella stessa finestra in \n     # cui è lanciato, con un'interfaccia curses\n\npossiamo avviare un programma utilizzando wineconsole con:\n```sh\n wineconsole nomeProgramma.exe\n```\n## Hardware in Wine\n\n### CD/DVD e dispositivi di memoria vari\n\n\nPer montare lettori CD o altri dispositivi di memoria è molto \nsemplice, infatti ci basta linkare la directory del dispositivo \ndi memoria a wine, in questo modo:\n\n```sh\n ln -s /mnt/cdrom ~/.winePrefixDirectory/dosdevices/d: \n # in questo modo l'istanza di wine con WINEPREFIX specificato, vedrà \n # il cdrom come drive \"d:\"\n```\n\n### Porte Seriali e Parallele\n\n\nLa configurazione di porte seriali e parallele è molto simile \nalla configurazione dei \"drive\" di memoria, cioè ci basterà \ncreare un link simbolico in \"~/.winePrefixDirectory/dosdevices\" \ncol nome del device. In windows i device seriali hanno nomi come \"\ncom1\", \"com2\", ecc... mentre i device paralleli vanno con \"lpt1\", \n\"lpt2\", ecc... Ad esempio per configurare una porta seriale e una \nporta parallela una volta posizionati nella directory \"\n~/.winePrefixDirectory/dosdevices\" eseguiamo:\n\n```sh\n ln -s /dev/ttyS0 com1\n```\n```sh\n ln -s /devlp0 lpt1\n```\n\n### Network Shares\n\nLe condivisioni di rete sono mappate all'interno della directory \"\nunc/\" quindi qualsiasi programma che prova ad accedere al \npercorso \"\\\\myserver\\some\\file\" cercherà in \"\n~/.wine/dosdevices/unc/myserver/some/file\", ad esempio nel caso \navessimo usato Samba per montare \"\\\\myserver\\some\" su \"\n/mnt/smb/myserver/some\", una volta posizionati all'interno di \"\n~/.wine/dosdevices\" allora possiamo eseguire:\n\n```sh\n ln -s /mnt/smb/myserver/some unc/myserver/some\n```\n\n### Stampanti\n\nWine può interagire direttamente col sistema CUPS installato \nlocalmente, se non c'è CUPS, viene utilizzato il vecchio sistema \ndi printing BSD-Printing, tutte le stampanti elencate in \n/etc/printcap sono installate automaticamente in Wine, Wine ha \nbisogno di un file PPD per ogni stampante anche se un file \nchiamato \"generic.ppd\" è installato con Wine; possiamo usare il \ncomando \"lpr\" per stampare un documento all'interno di Wine.\n\n### Scanner\n\nIn windows, gli scanner usano le API TWAIN per accedere \nall'hardware, le API TWAIN builtin di wine, semplicemente \nforwardano le richieste alle librerie SANE di Linux; quindi prima \ndi utilizzare SANE, dobbiamo prima assicurarci di poter accedere \nallo scanner interessato attraverso SANE; inoltre assicuriamoci \ndi avere a disposizione il programma \"xscanimage\" utilizzato per \nscansionare un'immagine; normalmente questo è contenuto nel \npacchetto sane-frontends.\n\n## Configurazioni Varie\n\n### Font\n\n\nFont configuration, once a nasty problem, is now much simpler. If \nyou have a collection of TrueType fonts in Windows it's simply a \nmatter of copying the .ttf files into c:\\windows\\fonts. \n\n### Winetricks\n\nWinetricks is a script to allow one to install base requirements \nneeded to run Windows programs. Installable components include \nDirectX 9.x, MSXML (required by Microsoft Office 2007 and \nInternet Explorer), Visual Runtime libraries and many more. \n\nPer elencare le categorie di tool che possiamo installare con \nwinetricks eseguiamo:\n\n```sh\n winetricks list\n```\nuna volta vista la lista delle categorie possiamo ad esempio \nvisualizzare le possibilità di installazione che abbiamo \nall'interno di una categoria con:\n\n```sh\n winetricks nomeCategoria list #elenca le possibili \n  installazioni per ogni categoria\n```\n```sh\n winetricks list-all #elenca tutte le possibili installazioni\n```\npossiamo verificare i moduli installati eseguendo:\n\n```sh\n winetricks list-installed #elenca i moduli installati\n```\n## Registro di Sistema di Windows\n\nTutte le impostazioni settate con \"winecfg\" fatta eccezione per \nle configurazioni sui drive montati, sono salvate nel registro di \nsistema, in Windows questo registro è un repository centrale per \nla configurazione del sistema operativo e delle varie \napplicazioni.\n\n### Struttura del Registro di Sistema di Windows\n\nIl registro di sistema di Windows è molto molto complesso, qui ci \nlimiteremo alle basi, quello che dobbiamo conoscere è:\n\n* HKEY_LOCAL_MACHINE:\n  -- Questa è una root key fondamentale (in win9x è salvato nel \n    file nascosto system.dat), questa voce contiene tutto quello \n    pertinente alla corrente installazione di Windows, ed è \n    spesso abbreviata col nome HKLM\n\n* HKEY_USERS:\n  -- Questa è una root key fondamentale (in win9x è salvato nel \n    file nascosto user.dat) contiene dati relativi agli utenti \n    della corrente installazione di Windows \n\n* HKEY_CLASSES_ROOT:\n  -- Questo è un link a HKEY_LOCAL_MACHINE\\Software\\Classes. \n    Contiene dati relativi ad associazioni programma/file, OLE \n    Document Handlers, e COM classes.\n\n* HKEY_CURRENT_USER:\n  -- Questo è un link a HKEY_USERS\\your_username, ergo, la \n    configurazione di un utente specifico.\n\nQueste informazioni sono salvate nei seguenti file:\n\n* system.reg\n  -- Questo file contiene HKEY_LOCAL_MACHINE\n\n* user.reg\n  -- Questo file contiene HKEY_CURRENT_USER\n\n* userdef.reg\n  -- Questo file contiene HKEY_USERS\\.Default (ergo, le \n    impostazioni default a livello utente)\n\nNon e' consigliabile editare con editor di testo questi file, ma è \nconsigliato accedere alle impostazioni attraverso il tool \"\nregedit\", con \"wine regedit\"; una voce di particolare interesse \nper gli utenti Wine è \"HKEY_CURRENT_USER\\Software\\Wine\", in \nquesta area del registro vengono memorizzate tutti i settaggi \nimpostati da \"winecfg\".\n\n## Troubleshooting\n\nCosa posso provare per risolvere problemi con un programma \nspecifico ?\n\n* controllare che il giusto WINEPREFIX sia utilizzato\n* verificare la configurazione del wine prefix con \"winecfg\"\n* cambiare versione di Windows da \"winecfg\", a volte cambiare versione \n  di windows può risolvere problemi\n* controllare i problemi sulle librerie attivando i messaggi di debug attraverso\n  -- WINEDEBUG=+loaddll wine percorso/al/programma.exe\n  oppure in alternativa con:\n  -- WINEDEBUG=err+all wine percorso/al/programma.exe\n* usare diverse modalità grafiche\n  -- questo è ottenibile attraverso il cambio di impostazioni \n    attraverso \"winecfg\", da qui possiamo selezionare tra la \n    modalità \"Desktop\" e la modalità \"normal managed\", questa \n    configurazione può effetivamente fare la differenza\n\n### Alcuni Problemi Riscontrati\n\n\n#### wine-gecko\n\nIn alcune versioni di wine, come ad esempio wine per alcune \ndistro (e.g. Debian) non ci installa un'istanza di mono (versione \nopen-source di .NET) per ogni prefix appena creato, questo ci può \ndare dei problemi, ad esempio potrebbe non farci caricare pagine \neseguendo \"wine iexplore\", l'errore in console sarà qualcosa del \ntipo \"Could not load wine-gecko. HTML rendering will be disabled\",\nper risolvere questo problema è consigliabile utilizzare la \nversione di wine fornita dal sito con i propri repository.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnebbia%2Fwine_appunti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgnebbia%2Fwine_appunti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnebbia%2Fwine_appunti/lists"}