Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reintroduce install script #141

Closed
ghost opened this issue Nov 3, 2016 · 9 comments
Closed

Reintroduce install script #141

ghost opened this issue Nov 3, 2016 · 9 comments
Milestone

Comments

@ghost
Copy link

ghost commented Nov 3, 2016

Back in old days, there was an install script that handles installation of dependencies and source package. But that had been rendered obsolete since Customizer is now rewritten in Python.

Rationale

Now that readme has been simplified, I try to imagine how end users would install this tool.

repo-mobile-readme

Will end users refer to the linked manual or the wiki? No, most likely will refer to neither!

  • Typical end users might be too excited to work on remastering. This might suggest that, intuitively, they will just like "install this quick and start remastering!" and forget any further reading.

  • Also recently, I found a short walkthrough video on YouTube on "How to install ubuntu customizer" (No, we didn't upload that). Despite buried between much text in the old readme, the video had shown the command (sudo apt-get install... --no-install-recommends) was copied anyway. The following commands (make, sudo make install) were typed manually in the Terminal.

So what do above situations suggest? Three words: make installation easier

Why realize now

I have been not realizing this for the following reasons.

  • I had been accepting moderately tedious steps of DIY and RTM culture, since I had less convenience to install packages from outside Ubuntu repository, besides PPA back then.

  • I tend to be sceptical and do research first before using any stuff outside Ubuntu repository, although I found this tool on SourceForge, when it was quite trustworthy back then (research = I read enough information by the time I decide to install one).

  • I recently wrote my own script in Bash to make testing Customizer GUI easier i.e. running separate instances for different locale and authentication (pkexec, sudo); This reminds me back to the convenience of install script that was written by the original developer.

Proposed implementation

This initiative is to provide convenience, mainly end users, for installing Customizer in Ubuntu and Debian host system. The script shall fulfill the following requirements.

  1. Include script in repo (This makes readily available while likely prevent from malicious modifications by monitoring GitHub commit history) at top level, name as INSTALL with all UPPERCASE letters and without file extension (This indicates flexibility, whether to allow opening this file in text editor for copy-paste or making script as executable);

  2. Write in Bash (This is relatively easier than Python to implement by me);

  3. Keep it simple (No coloured or verbose output; No 'smart' checking for requirements; Just useful comments and commands to do the job; Prefer style that allows to easily copy-paste -- possibly separate essential commands at top and other built-in commands and script functions at bottom);

  4. Include relevant steps (This will follow recommended instructions in 'First guide' on wiki, with enhancements for running the script; Hint started, one-time reminder and confirm user input to proceed, update or to quit/cancel installation, install package dependencies, download source from the repository, make deb and install via dpkg, hint finished)

  5. Make documentation consistent (Remove command to install dependencies in docs/manual.md and replace with link to INSTALL file instead; Update instruction no.3 in 'Installation' page on wiki)

Edit: In step 5, include one-line text with link to allow discovery from the readme; Perhaps after the existing line "For quick reference..." can be included like "Else, skip reading and refer to INSTALL."

Expected result

When the script is made available, the installation would be as easy as:

wget /[absolute_path_to_repo]/INSTALL
chmod +x INSTALL && ./INSTALL

So end users would download the script only, then the rest is handled by running the script.

Unlike old install script (I don't remember what was the behaviour of old script), the way I am going to implement will not require sudo to run the script, although there will be sudo command inside to install dependencies and DEB package.

The said approach may be inconvenient because if download and installation takes time, user may have to retype password to confirm installation of DEB package (I am unsure the exact behaviour). Then again, this shall be forgiven to ensure users' own safety when running any script.

The implementation may be subject to changes, if I notice any issues.

I hope to implement this by directly commit to master branch, so that the script can be tested and enhanced on-the-go, prior to publishing patch release 4.1.4 later.

@ghost ghost added this to the 4.1.4 milestone Nov 3, 2016
ghost pushed a commit that referenced this issue Nov 6, 2016
Initial commit for #141
@ghost ghost added the Implemented label Nov 6, 2016
@ghost
Copy link
Author

ghost commented Nov 6, 2016

I have implemented INSTALL script as proposed. Users of "old stable" can now use this script to make installation easier and convenient.

Tested usage:

wget https://raw.githubusercontent.com/clearkimura/Customizer/master/INSTALL
chmod +x INSTALL && ./INSTALL

Tested result:

[*] Started INSTALL script
[*] This script is compatible for Customizer "old stable"

What is your action?
 1: i: New installation
 2: r: Reinstall with latest version
 3: u: Uninstall
Type your choice [q to quit]: q

[*] Finished now

The script is also copy-paste friendly, which is implemented by placing essential commands inside the gated hashes '###'. For details, refer to the raw text itself.

P.S.: This issue will remain open for any feedback, while working on 4.1.4.

@ghost
Copy link
Author

ghost commented Nov 19, 2016

While trying out latest code from master branch, I had old package of master.tar.gz file in my Home directory. So the INSTALL script had actually reinstalled using the old package instead of latest package master.tar.gz.1 downloaded by Wget.

There are two ways to solve this problem:

  1. specify additional option to wget, so that older file is overwritten by new ones
  2. remove all previously downloaded and created files beforehand

While no.1 is easy to do, that doesn't solve the leftover files that have been created by installation i.e. Customizer-master directory, customizer*.deb and customizer*.changes files. Also, this will be inconsistent with the First guide, which needs to be updated too.

So no.2 does the job better. The clean up commands shall be added under uninstall_bin function, so no need modify other parts of script.

The function might be renamed to just uninstall, since it handles overall uninstallation and not just purging the binary package. If this is the case, then line 86-87 must be renamed also.

The INSTALL script will be revised later.

@ghost
Copy link
Author

ghost commented Nov 20, 2016

I have revised INSTALL script with precaution.

That is, leftover directories and files won't be removed unless user type y and press ENTER to run the action; Pressing ENTER alone will not delete those files. Note that "prompt once" is the expected behaviour when using option -I. For details, run rm --help | head -n 8 | tail -n 3 in Terminal.

Tested result (no leftover files)

[*] Started INSTALL script
[*] This script is compatible for Customizer "old stable"

What is your action?
 1: i: New installation
 2: r: Reinstall with latest version
 3: u: Uninstall
Type your choice [q to quit]: u
[*] Purge via dpkg...
[sudo] password for trusty: 
dpkg: warning: ignoring request to remove customizer which isn't installed
[*] Matching directories and files for deletion...
ls: cannot access ?ustomizer*: No such file or directory
ls: cannot access master.tar.gz*: No such file or directory
[!] User consent is required [y to confirm, else will skip]
rm: remove all arguments recursively? 
[*] Finished now

Tested result (with various leftover files)

[*] Started INSTALL script
[*] This script is compatible for Customizer "old stable"

What is your action?
 1: i: New installation
 2: r: Reinstall with latest version
 3: u: Uninstall
Type your choice [q to quit]: u       
[*] Purge via dpkg...
[sudo] password for trusty: 
dpkg: warning: ignoring request to remove customizer which isn't installed
[*] Matching directories and files for deletion...
customizer_4.1.3_all.deb
customizer_4.1.3_i386.changes
customizer_4.1.4-0test4_all.deb
customizer_4.1.4-0test4_i386.changes
customizer-lowercase
Customizer-master
Customizer-Uppercase
master.tar.gz
master.tar.gz.1
[!] User consent is required [y to confirm, else will skip]
rm: remove all arguments recursively? 
[*] Finished now

Tested result (with actual leftover files)

[*] Started INSTALL script
[*] This script is compatible for Customizer "old stable"

What is your action?
 1: i: New installation
 2: r: Reinstall with latest version
 3: u: Uninstall
Type your choice [q to quit]: u
[*] Purge via dpkg...
(Reading database ... 256228 files and directories currently installed.)
Removing customizer (4.1.3) ...
Purging configuration files for customizer (4.1.3) ...
Processing triggers for menu (2.1.46ubuntu1) ...
Processing triggers for bamfdaemon (0.5.1+14.04.20140409-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.54ubuntu1.1) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu1) ...
[*] Matching directories and files for deletion...
customizer_4.1.3_all.deb
customizer_4.1.3_i386.changes
Customizer-master
master.tar.gz
[!] User consent is required [y to confirm, else will skip]
rm: remove all arguments recursively? y
removed ‘customizer_4.1.3_all.deb’
...
removed directory: ‘Customizer-master/data’
removed ‘Customizer-master/COPYING’
removed ‘Customizer-master/README.md’
removed ‘Customizer-master/CHANGELOG’
removed ‘Customizer-master/Makefile’
removed directory: ‘Customizer-master’
removed ‘master.tar.gz’
[*] Finished now

There is one minor difference when running the script; In Debian, rm will actually count the number of items to be removed, whilst in Ubuntu will skip the counting.

  • In Ubuntu: rm: remove all arguments recursively?
  • In Debian: rm: remove 7 arguments recursively?

Therefore, counting items for deletion is wasteful and considered a duplicate feature.

Tested working in Xubuntu Trusty and Debian Xfce Jessie 32-bit host systems.

ghost referenced this issue Nov 20, 2016
REQUIRES coreutils and *not* debianutils); Renamed 'uninstall_bin' to 'uninstall', then added commands to clean up leftover directory and files with precaution.
ghost pushed a commit that referenced this issue Dec 3, 2016
Enhance #141 with renew script function and menu. Trivial clean up.
@ghost
Copy link
Author

ghost commented Dec 3, 2016

Following some code clean up for INSTALL script, I have added a new function today.

Until now, user will have to type the following commands to download the INSTALL script. Do the same again and again, whenever INSTALL script is updated.

wget https://raw.githubusercontent.com/clearkimura/Customizer/master/INSTALL
chmod +x INSTALL && ./INSTALL

Not anymore.

From today onwards, user could do likewise above for just one last time. No more repeated typing to download INSTALL script. How is that possible? Read on.

Tested result (with commit fb564c2)

The new function adds menu called "Renew INSTALL script" with selection key s. The action has been described already by output messages in Terminal. User shall read the critical messages before could proceed by pressing a key. Or press Ctrl+C (^C) to abort.

$ wget --quiet https://raw.githubusercontent.com/clearkimura/Customizer/master/INSTALL
$ ./INSTALL 
bash: ./INSTALL: Permission denied
$ chmod +x INSTALL && ./INSTALL 
Started INSTALL script
This script is compatible for Customizer "old stable"

What is your action?
 1: i: New installation
    s: Renew INSTALL script
 2: r: Reinstall with latest version
 3: u: Uninstall
Type your choice [q to quit]: s
[!] This action will rename existing script as *.old file then
[!]  will download new script from GitHub and make executable
[!] You just need to run again ./INSTALL later
Press any key to continue [^C to cancel and exit]

*** Rename and overwrite existing script...
*** Download new INSTALL script...
*** Enable executable bit for new INSTALL script...
Finished now
$

When finished, the existing script has been renamed to customizer-INSTALL.old and the new script is having the same file name INSTALL. I concur that this approach is safer and more practical than deleting the script file itself as hinted by this post on Stack Overflow.

$ ls -1 *INSTALL*
customizer-INSTALL.old
INSTALL
$

Since the existing script has been renamed with prefix customizer- on purpose, the renamed script could be deleted together when selecting "Uninstall" option from the script.

$ ls -1d ?ustomizer* master.tar.gz*
customizer_4.1.3-0+20161130_all.deb
customizer_4.1.3-0+20161130_i386.changes
customizer-INSTALL.old   <-- This is the old script
Customizer-master
master.tar.gz

The only thing the function doesn't do is to execute the script again i.e. ./INSTALL after downloading the new script file. This is intended by code design and implementation.

...
*** Rename and overwrite existing script...
*** Download new INSTALL script...
*** Enable executable bit for new INSTALL script...
Finished now
$ ./INSTALL   <-- Run this command again after finish

That is the only command user will need from today onwards.

P.S.: I have actually designed another new function. The "Renew INSTALL script" action shall be immediately useful after adding that function later.

P.S.S: Fixed grammar and word choice.

@ghost
Copy link
Author

ghost commented Dec 4, 2016

I have pasted more output to demonstrate the behaviour of current INSTALL script.

Tested result at first run (with commit earlier)

$ ./INSTALL
Started INSTALL script
This script is compatible for Customizer "old stable"

What is your action?
 1: i: New installation
    s: Renew INSTALL script
 2: r: Reinstall with latest version
 3: u: Uninstall
Type your choice [q to quit]: 

Tested result when aborting (with commit earlier)

$ ./INSTALL
Started INSTALL script
This script is compatible for Customizer "old stable"

What is your action?
 1: i: New installation
    s: Renew INSTALL script
 2: r: Reinstall with latest version
 3: u: Uninstall
Type your choice [q to quit]: s
[!] This action will rename existing script as *.old file then
[!]  will download new script from GitHub and make executable
[!] You just need to run again ./INSTALL later
Press any key to continue [^C to cancel and exit]
^C
$

Tested result when quit (with commit d2d337f)

$ ./INSTALL
Started INSTALL script
This script is compatible for Customizer "old stable"

What is your action?
 1: i: New installation
    s: Renew INSTALL script
 2: r: Reinstall with latest version
 3: u: Uninstall
Type your choice [q to quit]: q
Do nothing   <-- Added this message to clarify what action 'q' does
Finished now
$

Additional notes

While "Do nothing" message tells the obvious result to the user i.e. it does nothing and has been hinted earlier as [q to quit], my intention was to explain why the echo command was added there before break command in the raw text file.

The only other echo that has no output is found in show_menu function. This is only intended to insert a new line so that the question "What is your action?" is noticeable after the started messages.

@ghost
Copy link
Author

ghost commented Dec 4, 2016

Today, I finally understood what was misleading in the INSTALL script.

The action menu Reinstall with latest version is misleading.

This means: There is nothing wrong in the implementation. The action basically does exactly what it says: Uninstall current version. Download source from master branch. Compile and install package [assuming newer version than existing]. Hence, latest version is installed.

Meanwhile, README noted that "Customizer is stable and not under active development".

This means: Even there is any commit being pushed to the repository, there will be no critical changes to how Customizer works, at least for "old stable" until future release 4.2.0. Therefore, latest version from "old stable" is somewhat odd and misleading by itself.

May be it is just me. Then again, I could tell something is not right, perhaps with the word choice (common issue of user experience design in software development).

Alternative word choices

  1. Reinstall with latest version - This is the current word choice, which is technically correct but misleading user to think that latest version from "old stable" has something new or development of "old stable" happens frequently.

  2. Reinstall package only - Sounds better than 1 because this simply tells the fact that part of the previously done actions will be repeated.

  3. Reinstall package from GitHub - Similarly tells that the package to be reinstalled by using source from GitHub; This is more elaborated than 2.

  4. Redo installation - This is more misleading than 1 because this could mean duplicate or same action is being repeated; This wording is usually used for instructions in manual or tutorial however, unsuitable for installation menu!

  5. Download and reinstall package - Among other four, this is the most accurate description for corresponding action.

Criterion

For alternative choice, we ought to select either one that doesn't emphasize "latest".

Why not "latest"

Consider this analogy: Today, there is an article dated Dec 4, which is the "latest" news. The following day, Dec 5, when there is a newer article of the earlier news, the article dated Dec 4 is now considered as "yesterday's news" and it is not latest anymore.

Because news often emphasize "latest" articles, the readers tend to check for updates every few hours or even every hour. Running updates "more often than each hour" is considered a waste of bandwidth, as noted by Liferea news reader.

liferea-pref-feed-update

Now translate the news analogy to software development, then what would happen?

User will run the INSTALL script every hour to check/install the "latest" update in the repository, which is mostly waste of bandwidth and possibly abuse the convenience of the INSTALL script. Despite the possibility, this was never the intended way of using the script.

In software development, words could guide the user to intended usage or otherwise mislead the user to unintended usage. Following above, proper wording is needed to prevent misleading use of the script.

Verdict

Based on above alternative word choices, I would opt for 5. Download and reinstall package. The expected result is shown in the following output.

Started INSTALL script
This script is compatible for Customizer "old stable"

What is your action?
 1: i: New installation
    s: Renew INSTALL script
 2: r: Download and reinstall package   <-- This is the new word choice
 3: u: Uninstall
Type your choice [q to quit]: 

With the new word choice, there is no feel of urgency to run the action and means better, isn't it?

The changes shall be reflected soon in master branch, after this comment.

ghost pushed a commit that referenced this issue Dec 4, 2016
New word choice for #141
@ghost
Copy link
Author

ghost commented Dec 11, 2016

For the past few days, I have tested INSTALL script on various host systems.

Tested result

Xubuntu 12.04 ... OK
Xubuntu 14.04 ... OK
Xubuntu 16.04 ... OK (post-install run is different matter)

Kubuntu 12.04 ... OK (post-install run is different matter)
Kubuntu 16.04 ... OK (post-install run is different matter)

Ubuntu 16.04 ... OK (post-install run is different matter)

Debian 8.x ... OK (post-install run is different matter)

None of host system had shown any relevant errors, such as "package not found" or "dependencies not met", which is good. This also means First guide is still valid for newer release i.e. 16.04.

One thing that worried me was the package availability or deprecation in newer release. For example, qemu or qemu-kvm. The latter seems to have become "transitional package" in 14.04 release. Despite that, it still works.

Perhaps the dependency should be renamed from qemu-kvm to qemu in INSTALL script and First guide? I'll leave to future contributors to decide (or not).

P.S.: This is bit confusing... qemu is the metapackage in Ubuntu but doesn't seem so in Debian. qemu-kvm will install packages for full virtualization, rather than complete packages of QEMU itself. So qemu-kvm is already an accurate choice.

P.S.: Add note for Debian, which I had tested earlier also.

@ghost ghost mentioned this issue Dec 15, 2016
@ghost
Copy link
Author

ghost commented Dec 15, 2016

While revising a new function, I felt something is not right again.

The new word choice was intended to mean "no urgency to update" and yet, there is still something off with the word choice. The new word choice remained confusing in a sense.

In particular, the word 'package' is ambiguous and confusing.

  • For the first action menu 1: i: New installation, both dependencies and compiled binary from source are installed. Yet, words used in the menu has no mention of 'package'.

  • For the second action menu 2: r: Download and reinstall package, only compiled binary from source are installed. The dependencies, which also consist of 'package(s)', are not installed and yet, words used in the menu has mention 'package' that supposedly refers to compiled binary only.

Following above, I have came up with a better word choice: Download source and reinstall.

That will be similarly adopted for the new function i.e. Download XXXXX and do something, so I expect there shall be no changes to the word choice again afterwards (Being a multilingual person, my word choice is not necessarily accurate when thinking initially).

Proposed changes

The following are changes that will be made at same time.

  1. In show_menu function, revise text from Download and reinstall package to Download source and reinstall, which gives more accurate description than previous word choice.

  2. In renew_sh function, revise reminder text from [!] You just need to run again ./INSTALL later to [!] Run ./INSTALL again to use new script and move from upper top to bottom line to show the message before quit.

  3. In uninstall function, revise first echo string to be consistent with selected action. That is, *** Purge via dpkg... shall be revised to *** Prepare to uninstall (or reinstall)... since the same function is shared by two different actions in menu.

The expected result for first and second proposed changes is shown in the following output.

Started INSTALL script
This script is compatible for Customizer "old stable"

What is your action?
 1: i: New installation
    s: Renew INSTALL script
 2: r: Download source and reinstall  <-- This is the better word choice
 3: u: Uninstall
Type your choice [q to quit]: s
[!] This action will rename existing script as *.old file then
[!]  will download new script from GitHub and make executable <-- Moved text from here~
Press any key to continue [^C to cancel and exit]

*** Rename and overwrite existing script...
*** Download new INSTALL script...
*** Enable executable bit for new INSTALL script...
[!] Run ./INSTALL again to use new script  <-- ~to this line with revised text
Finished now

The changes shall be reflected soon in master branch, after this comment.

P.S.: Tested INSTALL script and confirmed works as expected result.

ghost pushed a commit that referenced this issue Dec 15, 2016
Better word choice for #141 and amend some text
@ghost ghost mentioned this issue Dec 30, 2016
@ghost
Copy link
Author

ghost commented Dec 30, 2016

The mentioned pull request brings many improvements to INSTALL script.

Test results (as commit e0334d5)

Started INSTALL script
Use this script for Customizer "old stable"

What is your action?
 1: i: New installation
    s: Download new script, if any
 2: r: Download source and reinstall
 3: u: Uninstall
Type your choice [q to quit]: 

...
Type your choice [q to quit]: 1
*** This will install dependencies and customizer
Check files before install...
[!] Source was found, wrong choice

...
Type your choice [q to quit]: 1
*** This will install dependencies and customizer
Check files before install...
[!] Binary was found, wrong choice

...
Type your choice [q to quit]: 1
*** This will install dependencies and customizer
Check files before install...
Proceed to install...
[sudo] password for trusty: 

...
Type your choice [q to quit]: s
*** This is only useful whenever the script had changes
*** on GitHub. Else, do not misuse this choice.
Press any key to continue [^C to abort]
^C

...
Type your choice [q to quit]: 2
*** This will install customizer only
Check particular files to clean...
Found in current directory: /home/trusty/test2
Remove selective directory and files without prompt
removed ...
removed ‘customizer_4.1.3-0+20161130_all.deb’
Prepare to download source...
Existing file was not found, skip rename
Download will start...
2016-12-30 22:13:54 URL:https://codeload.github.com/clearkimura/Customizer
/tar.gz/master [76909] -> "master.tar.gz" [1]
Prepare to make binary...
 dpkg-source --before-build Customizer-master
 fakeroot debian/rules clean
 debian/rules build
fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Updating 'tr/customizer_bg_BG.ts'...
    Found 59 source texts (1 new and 58 already existing)
    Removed 1 obsolete entry
Updating 'tr/customizer_ko_KR.ts'...
    Found 59 source texts (1 new and 58 already existing)
    Removed 1 obsolete entry
 fakeroot debian/rules binary
dpkg-gencontrol: warning: Depends field of package customizer:
 unknown substitution variable ${shlibs:Depends}
 dpkg-genchanges -b >../customizer_4.1.3-0+20161223_i386.changes
dpkg-genchanges: binary-only upload - not including any source code
 dpkg-source --after-build Customizer-master
Proceed to install binary...
[sudo] password for trusty: 
Selecting previously unselected package customizer.
(Reading database ... 286402 files and directories currently installed.)
Preparing to unpack customizer_4.1.3-0+20161130_all.deb ...
Unpacking customizer (4.1.3-0+20161130) ...
Setting up customizer (4.1.3-0+20161130) ...
Processing triggers for bamfdaemon (0.5.1+14.04.20140409-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.54ubuntu1.1) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu1) ...
Processing triggers for menu (2.1.46ubuntu1) ...
Finished now
~/test2$ 

...
Type your choice [q to quit]: 3
*** This will uninstall customizer
(Reading database ... 286437 files and directories currently installed.)
Removing customizer (4.1.3-0+20161130) ...
Purging configuration files for customizer (4.1.3-0+20161130) ...
Processing triggers for menu (2.1.46ubuntu1) ...
Processing triggers for bamfdaemon (0.5.1+14.04.20140409-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.54ubuntu1.1) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu1) ...
Check files to uninstall...
Check files to clean...
Found in current directory: /home/trusty/test2
Matching files to remove...
customizer_4.1.3-0+20161223_all.deb
customizer_4.1.3-0+20161223_i386.changes
Customizer-master
master.tar.gz
[!] User consent is required [y to confirm, else skip]
rm: remove all arguments recursively? y
...
removed directory: ‘Customizer-master’
removed ‘master.tar.gz’
Finished now

...
Type your choice [q to quit]: 3
*** This will uninstall customizer
[sudo] password for trusty: 
dpkg: warning: ignoring request to remove customizer which isn't installed
Check files to uninstall...
Check files to clean...
Finished now

...
Type your choice [q to quit]: q
Do nothing
Finished now

Test results for dpkg

~/test3$ sudo dpkg --install customizer_4.1.3-0+20161130_all.deb 
(Reading database ... 286435 files and directories currently installed.)
Preparing to unpack customizer_4.1.3-0+20161130_all.deb ...
Unpacking customizer (4.1.3-0+20161130) over (4.1.3) ... <-- dpkg can handle this...
Setting up customizer (4.1.3-0+20161130) ...
Processing triggers for bamfdaemon (0.5.1+14.04.20140409-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.54ubuntu1.1) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu1) ...
Processing triggers for menu (2.1.46ubuntu1) ...
~/test3$ 
~/test3$ sudo dpkg --install customizer_4.1.3-0+20161130_all.deb 
(Reading database ... 286437 files and directories currently installed.)
Preparing to unpack customizer_4.1.3-0+20161130_all.deb ...
Unpacking customizer (4.1.3-0+20161130) over (4.1.3-0+20161130) ...  <-- ...and this
Setting up customizer (4.1.3-0+20161130) ...
Processing triggers for bamfdaemon (0.5.1+14.04.20140409-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.54ubuntu1.1) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu1) ...
Processing triggers for menu (2.1.46ubuntu1) ...
~/test3$ 

Few more improvements might be added later as part of milestone 4.1.5. Following this, I believe this issue can now be closed for good.

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

0 participants