# Ports update and a portmaster



## svm (Mar 6, 2018)

Hello!
I always installed the software from the ports through the portmaster. But on one machine software was put in a classical way - through ports (make deinstall, make reinstall clean) (without a portmaster).
Can I now install the portmaster on this machine and update it with it? This is a mail server. It is installed - postfix / dovecot / apache / mysql / postfixadmin / rundcube and more on trifles. Or continue to update through ports without a portmaster?
System FreeBSD 11.1-RELEASE # 0 r321309: amd64


----------



## ldgc (Mar 6, 2018)

Hello svm 



svm said:


> Can I now install the portmaster on this machine and update it with it?


Yes.


----------



## ldgc (Mar 6, 2018)

The thread [Guide] A closer look at Portmaster explains portmaster with detail.
portmaster(8) is also worth reading


----------



## Lamia (Mar 8, 2018)

Run "portsnap fetch update" followed by "portsnap fetch install". You may want to look at the benefits of using portsnap over portmaster, and vice versa. Portsnap may need to be installed.


----------



## svm (Mar 8, 2018)

pensador_13 said:


> The thread [Guide] A closer look at Portmaster explains portmaster with detail.
> portmaster(8) is also worth reading


Thank you very much! At the weekend I will update.



Lamia said:


> Run "portsnap fetch update" followed by "portsnap fetch install". You may want to look at the benefits of using portsnap over portmaster, and vice versa. Portsnap may need to be installed.


I used to put software from ports through portsnap fetch update and then _port_ / make install clean.
But then I started using the portmaster.
On the machine you need to update, the software was installed (not by me) via _port_ / make install clean.
Here also I ask - whether dependences of a software after updating not not will be broken not in the classical way?


----------



## ShelLuser (Mar 8, 2018)

svm said:


> I always installed the software from the ports through the portmaster. But on one machine software was put in a classical way - through ports (make deinstall, make reinstall clean) (without a portmaster).


Not a problem at all, because in the end that's also exactly what Portmaster does. The only difference is that it has the tasks automated, which makes it easier on you.

But bottom line: Portmaster doesn't do anything which you couldn't also do with the standard make commands.



Lamia said:


> Run "portsnap fetch update" followed by "portsnap fetch install". You may want to look at the benefits of using portsnap over portmaster, and vice versa. Portsnap may need to be installed.


Sorry to say but you're comparing apples and oranges here. Both programs have absolutely nothing in common with regards towards functionality.

portsnap(8) is a standard command within the FreeBSD base system (so it does _not_ need to be installed) and it's used to update the ports collection. ports-mgmt/portmaster is a shell script provided as a port and can be used to install and/or upgrade ports. So you don't use one over the other, you normally use them together since both perform different tasks.


----------



## Lamia (Mar 8, 2018)

Thanks ShellLuser for your input.I saw someone recommending portsnap over portmaster in this forum awhile back and had taken such recommendation very seriously without probing it much more further (despite reading about it on the Freebsd website). 

I have not been using portmaster even though I had always expected that there should be a short-cut to install packages via port than the "make config|install clean" commands. Little did I know that the "portmaster" command is what does the trick. 

Needless to say that I read about portmaster, when I started to use FreeBSD and was lost in the endless number of packages & commands to store in my Medulla Oblongata.


----------



## Minbari (Mar 8, 2018)

Before you run portmaster read /usr/ports/UPDATING. Always read this file first and then run portmaster. Always! Or you can get into trouble.


----------



## Lamia (Mar 8, 2018)

Minbari said:


> Before you run portmaster read /usr/ports/UPDATING.


Thanks Minbari for that note. Is there any friendly tool to use read this file? It is such a long file that I have found using "less or even grep/nano" for has not been an efficient activity to always do.


----------



## ShelLuser (Mar 8, 2018)

Minbari said:


> Before you run portmaster read /usr/ports/UPDATING. Always read this file first and then run portmaster. Always! Or you can get into trouble.


Good point.

Or you let a script handle it for you   This is one of the reasons I'm so content with the 'new' (it's pretty common now) packaging system, even though I also seriously enjoyed working with the Solaris tools:

(a snippet of my upgrade script):

```
log_new() {
        pkg version -Il\< > $WP/$ME.log
}

log_updating() {
        for a in `cat $WP/$ME.log | cut -d '-' -f1`; do
                pkg updating $ucmd $a >> $WP/$ME-updating.log;
        done
}
```
I think this speaks for itself. The first function gives you a list of all the ports for which there is a new version, the second checks the UPDATING database to see if one of those is relevant for your system. It's not full proof yet because in its current form this script doesn't account for ports which have more dashes in them (example: php56-gd-5.6.33_1) but that's on my todo (I always verify manually anyway).

Still.. this can always provide a good reminder.


----------



## drhowarddrfine (Mar 8, 2018)

Lamia said:


> Thanks Minbari for that note. Is there any friendly tool to use read this file? It is such a long file that I have found using "less or even grep/nano" for has not been an efficient activity to always do.


I just use vi or vim. You usually only need to read the last update to see if it applies to you or a program you run.


----------



## Lamia (Mar 8, 2018)

Thanks ShellLuser and drhowarddrfine.


----------



## Minbari (Mar 8, 2018)

I'm using vim to check if something is changed in usr/ports/UPDATING, also after portmaster it's completed the updates I'm running `pkg_libchk -qo` to see if a program it's using old libraries and need to be rebuilt. If more than one is listed, I give the entire list to portmaster so it can rebuild them in the correct order.


----------



## svm (Mar 8, 2018)

Many thanks guys - it worked out!!! ))


----------



## Lamia (Mar 8, 2018)

Minbari said:


> pkg_libchk





svm said:


> Many thanks guys - it worked out!!! ))


You can give one or more of us that help fix the problem a thumb up for the thank you. It's the button adjacent each post. More importantly, it is all up to you..


----------



## Lamia (Mar 9, 2018)

I was going to suggest that you change the status of this thread to SOLVED.


----------



## SirDice (Mar 9, 2018)

Lamia said:


> Thanks Minbari for that note. Is there any friendly tool to use read this file? It is such a long file that I have found using "less or even grep/nano" for has not been an efficient activity to always do.


You only have to read the top comments. They all start with a date stamp. So you really only have to read the things up to the date of your last updates. Anything before that should already have been done.


----------



## topcat (Mar 10, 2018)

Isn't it a bit risky to update a live system like this? Why not use ports-mgmt/synth or ports-mgmt/poudriere either locally on another machine to build and then upgrade?


----------



## Lamia (Mar 10, 2018)

topcat said:


> Isn't it a bit risky to update a live system like this? Why not use ports-mgmt/synth or ports-mgmt/poudriere either locally on another machine to build and then upgrade?


I actually think it might be better off to always update a live system via portsnap/postmaster/pkg all linked to freebsd.org than from a local build/repo system. This suggestion might be valid for users with low end systems that cannot build the entire freebsd ports in at least a week.  

I have been building (cross-compiling for ARMv6) llvm5 since five days ago. And I can tell you that it also takes me (on my 4 x 2core@100% VPS & another core i7) three days or more to build eight packages for AMD. How much more the entire ports?

So my philosophy is that one can rely on the global FreeBSD repo for their RELEASE upgrades/updates and their local repo for custom/test packages/etc at least if they do not have 'supercomputers'.


----------



## drhowarddrfine (Mar 10, 2018)

topcat said:


> Isn't it a bit risky to update a live system like this? Why not use ports-mgmt/synth or ports-mgmt/poudriere either locally on another machine to build and then upgrade?


Before synth and poudriere, which are relatively new, there was portmaster and make. No it is not risky.


----------



## Lamia (Mar 12, 2018)

topcat said:


> Isn't it a bit risky to update a live system like this? Why not use ports-mgmt/synth or ports-mgmt/poudriere either locally on another machine to build and then upgrade?


Coming back to this question, how would one build all ports via poudriere? It is not bad to have one's pkg repo  with an up-to-date ports tree for all install/upgrade. Would one have to list all the ports in the pkglist file in the /usr/local/etc/poudriere.d/ dir? If YES, is there a list of ALL these ports somewhere on the Internet so that one can simply copy 'n' paste?


----------



## SirDice (Mar 12, 2018)

Lamia said:


> Coming back to this question, how would one build all ports via poudriere?


You typically don't. You only build the stuff you actually need. I really don't want to wait for KDE to complete before I can update our webservers 

But, if you do want to build _everything_ (all 33.000+ ports!); `poudriere bulk -a`:

```
bulk
     These subcommands are mutually exclusive.

     -a           Build all ports in the tree.
```


----------

