# Updating without cvsup?



## rhish (Feb 4, 2014)

I use to use 

`csup -g -L 2 supfile` 

to update. 

I would download and install a release, set my 

supfile to 
	
	



```
*default release=cvs tag=RELENG_9,
```

then run 

`csup -g -L 2 supfile` 

and it would update my /usr/src.

Then I'd go through and craft a custom KERNEL file, ripping out all the devices I don't need, adding stuff I need, and then go through the buildworld `buildkernel KERNCONF=CUSTOMKERNEL` process described in the documentation.

This use to work *Beautifully*.

_FreeBSD has changed and I want to develop a new process for installing FreeBSD and updating it, with a custom kernel - using the process FreeBSD intends._

I considered just using `freebsd-update` but it looks like you cant do it with a custom kernel? Well, you can, but you would need to first restore a GENERIC kernel, update, and then create a new custom kernel each time you wanted to update? The "include" method seems like it could make this easier, but the initial setup, creating a kernel file negating everything, seems prone to error.

So, I've decided to try `svn` to update, and then use the buildworld process for updating.

I would use `freebsd-update` if there's an easy way to do so while also having a persistent custom kernel, but I can't find any simple directions for doing so. So, in absence of that, does anyone have a good How-to for the entire process, start to finish, of Installing the latest FreeBSD release, say, FreeBSD 10, and updating it, while also having a custom kernel? I don't need Installation directions for the initial Installation, but I need directions that assume I've just installed a fresh release. I don't mind doing the custom kernel afterwards, and independent of the update process, so long as it doesn't become too complex/advanced, with too much potential for error on my part. It would be great if I could create a custom kernel, and have it persist through each update process. 

It looks like the info I'm looking for is posted, just in different posts, but I'm having trouble identifying exactly which process I should use, to keep it simple and precise, a Standard method. If someone could point out a Good How-to post or documentation, showing me "Here, follow this one, this is what you need. Develop your process based off this one" it would be greatly appreciated!


----------



## SirDice (Feb 4, 2014)

rhish said:
			
		

> supfile to
> 
> 
> 
> ...


This would keep you on 9-STABLE. You can only use freebsd-update(8) to track a -RELEASE version.

If running a -STABLE and using a custom kernel the only proper way to update is to build(7) world. With a source tree fetched using svn(1).

Handbook: 23.7. Rebuilding “world”


----------



## rhish (Feb 4, 2014)

Ok good, so that rules out using `freebsd-update`.

So, now im committed to using `svn` to download source, and `buildworld` process, the same as I've been doing, with a custom kernel.

So, basically, the only real change is how I'm keeping /usr/src up to date? Instead of using `cvsup` I'll now be using `svn`?

Theres an `svnlite` in /usr/bin but no man page for `svnlite`. Can I just use `svnlite` for what I'm trying to do, or am I gonna need to install the full port of `svn`?

If `svnlite` will work(or whatever `svnup` is), do you know of any documentation explaining `svnlite`, and the process for keeping /usr/src up to date? Most of the documentation is just focused on `svn` as a whole, I need something specific to just keeping my /usr/src up to date for what im doing.

i.e. Install fresh copy of FreeBSD 10 Release. Then update it via downloading latest src, and doing the buildworld process?

if that makes sense, sorry, im a novice user.


----------



## SirDice (Feb 4, 2014)

rhish said:
			
		

> Ok good, so that rules out using freebsd-update(8).
> 
> So, now im committed to using svn to download source, and buildworld process, the same as I've been doing, with a custom kernel.


Join the club, I've been updating FreeBSD the same way for the past 15 years 



> So, basically, the only real change is how I'm keeping /usr/src up to date? Instead of using cvsup I'll now be using svn?


Yes, exactly. Only the way you update the source code has changed.



> Theres an svnlite in /usr/bin but no man page for svnlite. Can I just use svnlite for what I'm trying to do, or am I going to need to install the full port of svn?


I haven't tried svnlite yet but it's there for exactly that reason, to update the source tree, so it should work. 



> If svnlite will work(or whatever svnup is), do you know of any documentation explaining svnlite, and the process for keeping /usr/src up to date? Most of the documentation is just focused on svn as a whole, I need something specific to just keeping my /usr/src up to date for what I'm doing.


I'm guessing svnlite only has the "checkout" and "update" options of the "full" svn command. Maybe some administrative functions but it's not meant to be a complete replacement of devel/subversion. It's there so you can checkout/update your source tree. 

http://www.freebsd.org/doc/en_US.ISO885 ... k/svn.html

The biggest difference with the old csup way are the tags you use. What used to be RELENG_9 (for 9-STABLE) is now "base/stable/9" and RELENG_9_2 (for 9.2-RELEASE) is now "base/releng/9.2".


----------



## rhish (Feb 4, 2014)

Great! I think I have a better Idea now. I was making it way too complicated in my mind. It's actually quite simple. Now that you've said what you said...  *Thanks*!

What would be the `svn` url, if I've just installed a fresh copy of FreeBSD 10 Release, and want to track 10-STABLE? Is that a thing yet, 10-STABLE?

http://svnweb.freebsd.org/base/stable/10/  <-- 10-STABLE?

There's also a ../release and .../releng directory, those are something different?


----------



## SirDice (Feb 4, 2014)

rhish said:
			
		

> What would be the `svn` url, if I've just installed a fresh copy of FreeBSD 10 Release, and want to track 10-STABLE? Is that a thing yet, 10-STABLE?
> 
> http://svnweb.freebsd.org/base/stable/10/  <-- 10-Stable?



10-STABLE is there:

```
root@molly:/usr/src # svn info /usr/src/
Path: .
Working Copy Root Path: /usr/src
URL: https://svn0.eu.freebsd.org/base/stable/10
Relative URL: ^/stable/10
Repository Root: https://svn0.eu.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 261289
Node Kind: directory
Schedule: normal
Last Changed Author: ae
Last Changed Rev: 261285
Last Changed Date: 2014-01-30 11:53:29 +0100 (Thu, 30 Jan 2014)
```



> There's also a ../release and .../releng directory, those are something different?


Yes, if I remember correctly the /release directory also contains the -RELEASE versions but they are never updated and do not receive security updates. The /releng/ directories are similar to the 'old' RELENG_X_Y tags, they track a certain -RELEASE version and get security updates.


----------



## rhish (Feb 4, 2014)

Perfect, thanks!

Looks like the process is kinda described here:

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/current-stable.html

At the bottom of the page *23.5.2.3. Using FreeBSD-STABLE*


----------



## rhish (Feb 4, 2014)

Everything is working now. I think.

`svnlite co [url=https://svn0.us-west.freebsd.org/base/stable/10/]https://svn0.us-west.freebsd.org/base/stable/10/[/url] /usr/src/`

Is pulling down all the source for 10-Stable now. I accepted a temp certificate, which, I'll just do that each time from now on. No big deal.

Once its done, I can just resume my normal buildworld process from the documentation.

svnlite is perfect!

After I pull down 10-Stable, and want to update, I can just  run 

`svnlite update [url=https://svn0.us-west.freebsd.org/base/stable/10/]https://svn0.us-west.freebsd.org/base/stable/10/[/url] /usr/src/`

and it will update from there.. same as I use to do with `csup -g -L 2 supfile`

And then rebuild world when I think enough has changed to warrant a rebuild. And I can still do custom kernel the same as before.

Perfect!


----------



## trh411 (Feb 4, 2014)

rhish said:
			
		

> After I pull down 10-Stable, and want to update, I can just  run
> 
> `svnlite update [url=https://svn0.us-west.freebsd.org/base/stable/10/]https://svn0.us-west.freebsd.org/base/stable/10/[/url] /usr/src/`


With the full devel/subversion port, you can update with a simple: `svn {update|up} /usr/src`. No need to specify the repository branch. Maybe you can do the same with `svnlite`?


----------



## wblock@ (Feb 4, 2014)

Yes.  It's the same program, just compiled statically.


----------



## trh411 (Feb 4, 2014)

wblock@ said:
			
		

> Yes.  It's the same program, just compiled statically.


I did not know that. (Wish we had the "thanks" button available with the new forums like the old days.) Thanks.


----------



## hruodr (Apr 1, 2014)

wblock@ said:
			
		

> Yes.  It's [`svnlite`] the same program, just compiled statically.



Also `svnlitesync` , `svnliteadmin`, `svnliteserve`, etc (=`svnlite*`)?

I am just uptdating to 10 stable, in orther that consoles work when running X, 
but everything takes hours: to download a tree, to svnsync it, to checkout from 
local mirror, to make buildworld (specially compiling the compiler), and now to 
make buildkernel.

And later, building the ports again, will take a lot of time. Ports build for /stable/10 
will not work in the whole branch? Really necessary to buld again?

Is really all this necessary? No way to make it shorter, specially if I do not
need the whole system (drivers, modules, etc)? 

Thanks
Rodrigo.


----------



## Juanitou (Apr 1, 2014)

hruodr said:
			
		

> I am just uptdating to 10 stable, in orther that consoles work when running X,
> but everything takes hours.


In your case, if you really need those consoles and nothing else, and as long as you are using a RELEASE version, I would use `freebsd-update` to make a binary upgrade to 10.0-RELEASE, then checkout the STABLE source and build a VT-enabled kernel without touching anything else. I’m maybe just lucky, but it’s working nicely here.


----------



## kpa (Apr 1, 2014)

If you're building from source there's no way around of fetching the whole Subversion repositories because they are meant to be used as indivisible units. Take some parts of them away and you no longer can build world or kernel successfully.


----------

